每个人都知道,对于所有字符串应用程序,我们应该首选C ++中的string类,因为它们执行许多特殊功能并具有动态增长和缩小的能力。对于其他数据类型和类,vector表现出色,就像string对于字符一样。
但是,在什么情况下我们需要优先选择vector(我很少看到),而不是string呢?
但是,在什么情况下我们需要优先选择vector(我很少看到),而不是string呢?
如果我明确要存储字符数组,而不是字符串,我会使用vector<char>
。例如,如果由于某种原因我需要收集特定文本中使用的所有字符,则结果可能是一个vector<char>
。
明确表达意图非常重要。
string
,他们会期望某些事情是真实的,其中最重要的是字符串变量包含可读且可能可打印的文本。而 vector
包含的内容则因模板参数和内容解释的范围而异。 - user4581301std::string
,实际上它是字符,而不仅仅是字节,因此也没有std::vector<unsigned char>
或类似的东西。 - cdonatstring
,否则使用 vector<char>
。using byte = char;
的 vector<byte>
,以清楚地表示它存储的是原始二进制数据而不是字符。请参见此答案,了解为什么要使用 char
而不是 unsigned char
。 - emlai
std::vector<char>
中,考虑任何不是文本的文件(例如可执行文件) - Alex Díazbyte
而不是char
,并让定义在幕后处理有符号或无符号。 - Michael Dorganvector
是一个容器,string
则是一个字符串。 - Kerrek SB