你好。罗布·休伊特又来了。我是VC库团队的SDET。我最近一直在做的一件事是VisualStudio2008的新TR1附加组件。当VS2008TR1支持在一个月前宣布时,我确信人们的反应不同于“呜呼!我等不及了!”“嗯?TR1是什么?我在乎这个吗?“还有各种各样的事情。
这篇文章主要是针对第二类人-那些谁没有听说过TR1,谁可能还没有找到时间或灵感去寻找它的一切。我将在这里简单地讨论TR1是什么,并且我将描述一些我认为特别漂亮的TR1特性。这将不是一个深入的讨论或如何操作手册,但它将有希望启发有人在那里采取更仔细地看看什么是TR1,看看它是否可以帮助您在您的项目。
那么TR1是什么呢?嗯,Tr1(“技术报告1”)是对C++ 0x标准的一组建议添加。大部分的IT可能会找到新的标准,但同时它也为C++提供了一个有用的垫脚石。TR1充满了非常有用的新实用程序,例如新型智能指针(称为“sharedu ptr”和“weaku ptr”)、新容器(元组、无序映射、无序集和整洁的类似STL的数组)、引用包装器、正则表达式支持和函数包装器。你可能会看到这个列表,觉得其中很多听起来很熟悉。例如,智能指针和函数包装器已经存在。这是真的,但是TR1的版本试图比现有的东西更容易使用和更有用…有点像下一次迭代基于几年的经验找出什么是有效的,什么是无效的。
好吧,说一些细节!首先,我想提到新的TR1元组和数组类。那我就谈一谈共享的ptr。最后,我将介绍一些关于regex的信息,regex是TR1的正则表达式实用工具。同样,熟悉TR1的人可能不会从中得到太多的收获,但这将有希望激起那些TR1新手的胃口。
Tuple与现有的pair类非常相似,只是它最多可以容纳10个条目,而不仅仅是两个条目。就像pair
TR1的array类非常类似于固定长度的STL向量。Vector是一个非常有用的类,对于大多数数组类型的需要,它可能已经足够了(甚至更好)。然而,在某些情况下,开发人员绝对肯定所需的数组总是一个特定的大小…不多不少。在这些情况下,不需要向量的可变大小特性,只会增加额外的开销。虽然您可以只使用常规的老式C样式的“方括号”数组,但TR1 array类允许您使用所有STL类型的迭代器和算法。虽然它缺乏向量的灵活性,但它提供了比C样式数组更多的选项。
Sharedu ptr是一个非常易于使用的工具,它大大简化了内存管理。这几乎使新/删除组合过时。Sharedu ptr是一个非常容易使用的智能指针类。语法相当简单…shared_ptr
Regex是一个类,它允许您编写类似于Perl中常用的复杂正则表达式。虽然C++对正则表达式总是有一定数量的支持,但是Tr1的ReEX工具通过在解析、匹配和捕获组的机制中构建来简化事情。regex类保存实际的正则表达式,regexu search()、regexu match()和regexu replace()等算法使将该表达式应用于字符串变得容易。正如您可能从算法名称推断的那样,regexu search()告诉开发人员字符串是否包含符合表达式的任何子字符串,regexu match()告诉整个字符串是否符合表达式,regexu replace()提供了一种更改字符串以适应特定格式的简单方法。Regex可以做比我在这里概述的更多的事情,但是这应该让你了解Regex的意义。
好吧,这就是我想说的。如果这有点太好了!当然,如果您有任何意见或问题,我们将不胜感激。
Rob Huyett,VC库团队