c++ - std::string/引用计数/const

标签 c++ string

据我所知,std::string 是否可以被引用计数。我会说引用计数字符串有更好的性能? 所以我的问题是,将 std::string 设为常量是一种好的编码风格吗?例如,局部变量或函数参数。我喜欢它,因为如果您知道某个变量是否打算更改,那么阅读代码会更容易。

据我了解,如果复制变量,则复制​​ const 字符串的值。还是我错了?我会说引用计数器不能更改,因为它是常量?

最佳答案

据我所知,最新的 std::string 实现使用小字符串优化 (SSO) 而不是引用计数(因为多核系统上的一些性能警告,由于需要锁定)。 SSO 包含一个自动固定大小的小字符串数组(比如 8 个字符左右);因此,如果您的字符串很小,则不需要在堆上分配、释放内存。

SSO 的问题在于,如果字符串很小(因为必须复制整个固定大小的数组),将一个字符串移动(使用移动语义)到另一个字符串的性能并不比复制它好。

因此,尽可能使用 const 引用或右值引用,并避免使用按值传递。

关于c++ - std::string/引用计数/const,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25203800/

相关文章:

java - 从 Java 中解析的正则表达式中转义字符串

c# - 10以下的int值转换为字符串两位数

string - 如何从Qt中的字符串中删除重音/变音符号?

c++ - switch 语句条件下同时具有模板和非模板转换运算符的类

c++ - Boost序列化编译错误

c++ - 如何制作接受任何等级数组的函数或构造函数

PHP strcmp result int 含义

c++ - 如何使用SFINAE停用 `Pow(T)`的非集成版本?

c++ - 在 Qt Creator 中将 Lua 与 C++ 链接起来

javascript - 如何恢复由 javascript 对 css 所做的更改