Joe*_*oeG 16
除了可读性(不应低估),我可以想到使用std::stringover时的几个小的性能/内存问题std::vector:
一些现代std::string实现使用小字符串优化.如果您存储的数据大于string内部缓冲区,则会变为悲观,从而降低复制,移动和swap1的效率,并且sizeof()不会增加效益.
一个有效的std::string实现总是会分配至少比当前大小多1个字节来存储终止空值(不这样做需要额外的逻辑operator[]来处理str[size()]).
我应该强调,这两个问题都很小; 它们的性能成本很可能会在背景噪声中丢失.但你确实问过.
1size()如果正在使用小字符串优化,那些操作需要分支,而它们没有良好的std::vector实现.
vector<char>确实比 .有更多的能力string。与 不同的是string,vector<char> 保证在操作期间保留迭代器、引用等swap。请参阅:可以std::vector利用小缓冲区优化吗?