gpt4 book ai didi

c++ - std::string 不是 std::vector 吗?

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

C++ 入门第 5 期,9.2.5。分配和交换,我读到过这个:

The fact that elements are not moved means that, with the exception of string, iterators, references, and pointers into the containers are not invalidated. They refer to the same elements as they did before the swap.

那么,为什么字符串是个异常(exception)呢?我一直认为字符串是一个 vector ,不是吗?

最佳答案

您引用的措辞表明字符串不是 vector 。交换两个 vector 时,迭代器保持有效并指向新 vector 。对字符串没有类似的要求。这允许字符串使用小缓冲区优化。

比较 basic_stringvector 可能更合适,因为它们都是在元素类型和分配器上参数化的模板。这显示了进一步的差异:basic_string 可能只专用于文字类型。 basic_string 还带有第三个参数,traits,它决定了如何进行比较。

字符串与 vector 的共同点是它们连续存储数据。

关于c++ - std::string 不是 std::vector<char> 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43024313/

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