据我所知,std::string 是否可以被引用计数。我会说引用计数字符串有更好的性能? 所以我的问题是,将 std::string 设为常量是一种好的编码风格吗?例如,局部变量或函数参数。我喜欢它,因为如果您知道某个变量是否打算更改,那么阅读代码会更容易。
据我了解,如果复制变量,则复制 const 字符串的值。还是我错了?我会说引用计数器不能更改,因为它是常量?
最佳答案
据我所知,最新的 std::string 实现使用小字符串优化 (SSO) 而不是引用计数(因为多核系统上的一些性能警告,由于需要锁定)。 SSO 包含一个自动固定大小的小字符串数组(比如 8 个字符左右);因此,如果您的字符串很小,则不需要在堆上分配、释放内存。
SSO 的问题在于,如果字符串很小(因为必须复制整个固定大小的数组),将一个字符串移动(使用移动语义)到另一个字符串的性能并不比复制它好。
因此,尽可能使用 const 引用或右值引用,并避免使用按值传递。
关于c++ - std::string/引用计数/const,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25203800/