我有一个多年前写的旧字符串类(在标准库如此标准之前)。它工作正常,但我想我应该在我的最新项目中进入 21 世纪。我想知道标准库字符串类的效率如何。例如,如果我将一个字符串传递给一个函数,或者只是将它分配给另一个字符串,它会复制数据,还是简单地复制一个指向数据的指针。
在我以前的类(class)中,我保留了数据的引用计数,只是复制了指针。如果我做了一些修改字符串的事情,我会检查它的引用是否为 1。如果它是 1,我可以使用相同的字符串数据区域,假设字符串没有增长到超过它的原始大小。如果它大于 1,我会在修改之前复制它的字符串数据。
标准库类是否做了类似的事情(或希望更好),或者它是否在您每次传递字符串时复制数据。我想这可能取决于实现。我目前正在为 Windows 开发,尽管我可能稍后会移植它。谢谢
最佳答案
小字符串优化已被证明在大多数情况下比 COW 更有效。但这并不能保证一定会赢。它在很大程度上取决于它的使用方式。但是我认为你总是可以使用 std::shared_ptr<std::string>
实现您的 COW 类并为您自己节省大量手动内存管理废话。
底线是,std::string
可能更好,但这里的细节可以改变它。尝试一下,但要小心。
关于C++字符串类效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50397964/