哪一个更适合存储字符,vector <char>还是字符串?

时间:2018-05-07 14:50:12

标签: c++

我想存储字符并执行以下操作

  1. 添加字符
  2. 找到字符
  3. 删除字符
  4. 我认为所有这些操作对于vector<char>string都有O(n)复杂度,我应该选择哪一个以及为什么?

2 个答案:

答案 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中有效地将缓存友好的连续内存中的子字符串序列存储起来对象,如果这对你的特定上下文有意义的话。)