对于数据压缩,我需要打开文件(这里是文本文件)并将所有内容存储在变量中。
使用字符串或字符向量来存储真正的大文本(数百万或更多字符)是否更好?
更好的是,我的意思是更快地遍历每个字符,并且更快地使用count
函数来计算文本中给定字符的出现次数。
大小在这里不是一个问题,因为字符串和向量都可以存储很多字符,如果需要,我可以将文本分成几个子字符。
答案 0 :(得分:4)
因为矢量和字符串性能是依赖于实现的,所以没有确定的答案。我建议您在您的环境中对这些操作进行基准测试并选择。
this是一个关于基准测试代码的非常好的演讲,甚至标准也不能总是建议正确的工具。
谈话的妙语是性能可能会发生剧烈且不可预测的变化 - 在一个例子中,在循环内移动的实例化实际上通过在编译器优化中加入来减少了80%的运行时间。
如果你真的关心表现总是衡量自己。
答案 1 :(得分:1)
使用字符串或字符向量来存储真正的大文本(数百万或更多字符)是否更好?
(此处是文本文件)
std::string
适用于文字数据。主要是由于惯例,也因为它提供了一些处理字符串的基本工具,std::vector
没有。
更好的是,我的意思是更快地遍历每个字符,并且还更快地使用count函数来计算文本中给定字符的出现次数。
通过这些指标,字符串和向量都具有可比性且几乎相同,但确切的性能是特定于实现的。