C字符串是char数组。
vector 是C++中的新数组。
为什么不是字符串 vector (字符)呢?
vector 和字符串的大多数方法似乎也是重复的。在C++中是否有使字符串变得不同的原因?
最佳答案
这几乎只是历史。字符串和 vector 是并行开发的,对于T==char
几乎没有想到如何将它们视为相同。
这就是为什么标准容器很好且通用的原因,而std::basic_string
是成员函数之后的成员函数的整体。
由于存在边缘案例优化机会,因此很难或不可能以任何标准方式将std::basic_string<T, Alloc>
转换为std::vector<T, Alloc>
。以小字符串优化为例。尽管现在GCC的写时复制机制已正式失效,但我们之间的距离更近了。
但是,依法取消对std::string::end()
的引用(并为您的麻烦获取'\0'
)的功能仍然存在问题。一堆相当严格的.c_str()
迭代器失效规则基本上阻止了我们从一开始就为此使用std::vector<char>
。
tl; dr:创建 Camel 时会发生这种情况