String vs vector用于存储大型文本

时间:2017-02-20 13:15:44

标签: c++ text storage

对于数据压缩,我需要打开文件(这里是文本文件)并将所有内容存储在变量中。

使用字符串或字符向量来存储真正的大文本(数百万或更多字符)是否更好?

更好的是,我的意思是更快地遍历每个字符,并且更快地使用count函数来计算文本中给定字符的出现次数。

大小在这里不是一个问题,因为字符串和向量都可以存储很多字符,如果需要,我可以将文本分成几个子字符。

2 个答案:

答案 0 :(得分:4)

因为矢量和字符串性能是依赖于实现的,所以没有确定的答案。我建议您在您的环境中对这些操作进行基准测试并选择。

this是一个关于基准测试代码的非常好的演讲,甚至标准也不能总是建议正确的工具。

谈话的妙语是性能可能会发生剧烈且不可预测的变化 - 在一个例子中,在循环内移动的实例化实际上通过在编译器优化中加入来减少了80%的运行时间。

如果你真的关心表现总是衡量自己。

答案 1 :(得分:1)

  

使用字符串或字符向量来存储真正的大文本(数百万或更多字符)是否更好?

     

(此处是文本文件)

std::string适用于文字数据。主要是由于惯例,也因为它提供了一些处理字符串的基本工具,std::vector没有。

  

更好的是,我的意思是更快地遍历每个字符,并且还更快地使用count函数来计算文本中给定字符的出现次数。

通过这些指标,字符串和向量都具有可比性且几乎相同,但确切的性能是特定于实现的。