c – 矢量对字符串的好处?

前端之家收集整理的这篇文章主要介绍了c – 矢量对字符串的好处?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这个问题与 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实现中.

猜你在找的C&C++相关文章