区别

2013-04-29 68 views
4

任何人都可以请让我知道常规string类和roguewave的rwcstring类之间准确的区别。我项目中的代码广泛使用rwcstring类。我的疑问是,如果两者都处理和操纵字符串,那么两者之间的确切区别是什么。另外为什么rwcstring类被认为比常规的string类更有效率?区别

+2

为什么不看医生? http://www.roguewave.com/portals/0/products/sourcepro/docs/11/html/toolsref/rwcstring.html – ForEveR 2013-04-29 06:44:03

回答

2

RogueWave的RWCString使用一种被称为懒惰复制以改善其性能的技术。基本上,这意味着复制一个字符串(无论是通过拷贝构造函数或拷贝赋值运算符)实际上并没有复制字符串的内容,但只是保持一个指向原始字符串的内容。复制只在真正需要时才会完成(通常是因为字符串内容即将被修改)。由于字符串永远不会被修改是非常常见的,因此可以提供可衡量的性能改进。

std::string实现不明确地使用这种技术被禁止。事实上,标准中的一些规定是考虑到了这种可能的优化。问题在于有一些方法可以打败这种机制,比如将指针指向字符串的内容并直接更改它们,而不使用类机制。这就是为什么它是不寻常的std::string使用偷懒复制的原因。

因此,总而言之,您可能会说RWCString更高效,但也比std::string的常规实施更安全。