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 时会发生这种情况

10-02 01:49
查看更多