C++ 小弦的弦效率

C++ 小弦的弦效率,c++,string,C++,String,我想我在什么地方听说过字符串有一种叫做“小字符串优化”的方法,这是一种避免分配的方法。我可以这样做来避免分配吗: auto s = "hello" + "world!"s; 而不是: auto s = "hello, world!"s; 不,那不行。SSO意味着在字符串对象中存储没有指针的短字符串。只要将两个短字符串连接起来,它就不合适了。有些字符串类内部有较大的缓冲区,以防您需要一个对31个字符进行SSO的类。Ugh,不。无论您在哪里听说过,不要再访问那个地方,否则您可能会听到其他完全错误

我想我在什么地方听说过字符串有一种叫做“小字符串优化”的方法,这是一种避免分配的方法。我可以这样做来避免分配吗:

auto s = "hello" + "world!"s;
而不是:

auto s = "hello, world!"s;

不,那不行。SSO意味着在字符串对象中存储没有指针的短字符串。只要将两个短字符串连接起来,它就不合适了。有些字符串类内部有较大的缓冲区,以防您需要一个对31个字符进行SSO的类。

Ugh,不。无论您在哪里听说过,不要再访问那个地方,否则您可能会听到其他完全错误的消息。仅供参考,小字符串优化不一定会被使用,这是允许的。@SamVarshavchik只需使用一组加号,就可以一次性避免分配。这会给你无限的记忆。当然,这不是真的,因为没有任何分配。这就是为什么我们称之为虚拟内存。。。。哦,如果你没注意到,我是在讽刺。@user6419459在那段视频中,它在哪里说你在做什么以避免分配?对于不使用额外缓冲区的字符串的SSO,特别是对于SSO,常见的限制是64位应用程序的15个符号。您只需要保留逻辑结束指针,这样缓冲区开始/结束指针就可以自由地存储字符。