这个问题与
this question有关,但不完全相同.
使用std :: vector< char>有什么好处吗?而不是std :: string来保存任意的二进制数据,除了可读性相关的问题?
即与字符串相比,是否有任何更容易/更有效/更好地使用向量执行的任务?
解决方法
除了可读性(不应该被低估),我可以想到使用std :: string over std :: vector的几个次要的性能/内存问题:
>一些现代的std :: string实现使用small string optimization.如果你正在存储大于字符串内部缓冲区的数据,它将变得一个悲观,降低了复制,移动和交换1的效率,并增加了sizeof(),从而没有任何好处.
>一个有效的std :: string实现将总是分配至少比当前大小多1个字节来存储一个终止的null(不要这样做需要额外的逻辑在operator []来处理str [size()]).
我应该强调,这两个问题都很小;他们的性能成本在背景噪声中将更有可能丢失.但你确实问过.
1如果使用小字符串优化,那么这些操作需要在size()上进行分支,而它们不是在一个很好的std :: vector实现中.