gpt4 book ai didi

c++ - 为什么字符串不是 vector 的(子类)?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:52:28 26 4
gpt4 key购买 nike

C 字符串是字符数组。

vector 是 C++ 中的新数组。

为什么字符串不是(字符的) vector ?

vector 和字符串的大多数方法似乎也是重复的。在 C++ 中使字符串成为不同的东西是否有原因?

最佳答案

这几乎只是历史。对于T==char,字符串和 vector 是并行开发的,很少考虑如何将它们视为同一事物。 .

这也是为什么标准容器既漂亮又通用,而 std::basic_string是成员函数之后的成员函数的整体。

Edge case 优化机会使得转换变得困难或不可能 std::basic_string<T, Alloc>进入std::vector<T, Alloc>以任何一种标准方式。以小字符串优化为例。虽然,现在 GCC 的写时复制机制正式失效,但我们更接近了。

合法取消引用的能力 std::string::end() (并为您的麻烦获取 '\0')仍然有问题。 .c_str() 的一堆相当严格的迭代器失效规则基本上阻止我们使用 std::vector<char>从一开始就是为了这个。

tl;dr:这就是您创建 Camel 时发生的情况

关于c++ - 为什么字符串不是 vector 的(子类)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31411309/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com