我想存储字符并执行以下操作
我认为所有这些操作对于vector<char>
和string
都有O(n)复杂度,我应该选择哪一个以及为什么?
答案 0 :(得分:2)
您是否考虑过更好的时间复杂度?如果您将存储“大”字符数,则不需要O(n)复杂度,这是字符串和向量的情况。也许你应该使用unordered_map然后你将在O(1)时间内完成所有操作,只计算每个字符的数量:
std::unordered_map<char, int> chars_map;
答案 1 :(得分:1)
如果您实际使用字符串,我建议您使用std::string
。
从语义角度来看,这对我来说比使用std::vector<char>
更有意义......
另请注意,std::string
实现了高效的 SSO (小字符串优化),避免了对小字符串进行昂贵的堆分配。 vector<char>
无法使用此优化。
此外,请注意std::string
也支持嵌入式NUL (因此您甚至可以在一个std::string
中有效地将缓存友好的连续内存中的子字符串序列存储起来对象,如果这对你的特定上下文有意义的话。)