哪一个更适合存储字符、矢量<char>或字符串?

which one is preferable to store characters, vector<char> or string?

本文关键字:lt char 字符串 gt 矢量 存储 字符 哪一个      更新时间:2023-10-16

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

  1. 添加字符
  2. 查找角色
  3. 删除字符

我认为所有这些操作对于vector<char>string都有 O(n( 复杂性,我应该更喜欢哪一个,为什么?

您是否考虑过更好的时间复杂度?如果要存储"大量"字符,则不希望 O(n( 复杂性,字符串和向量都是如此。也许你应该使用unordered_map然后你将在 O(1( 时间内完成所有操作,只需计算每个字符的数量:

std::unordered_map<char, int> chars_map;

如果您实际使用字符串,我建议您使用std::string。 从语义的角度来看,这对我来说比使用std::vector<char>更有意义......

另请注意,std::string实现了高效的SSO(小字符串优化(,避免了对小字符串进行昂贵的堆分配。此优化不适用于vector<char>

此外,请注意,std::string还支持嵌入式 NULL(因此您甚至可以将子字符串序列有效地存储在单个std::string对象的缓存友好连续内存中,如果这对您的特定上下文有意义(。