basic_string 不调用其元素的构造函数和析构函数。矢量确实如此。 交换 basic_string 会使迭代器无效(启用小字符串优化),交换向量不会。 在 C++03 中可能不会连续分配 basic_string 内存。向量总是连续的。在 C++0x [string.require] 中消除了这种差异: basic_string 对象中的类字符对象应连续存储 basic_string 具有字符串操作的接口。矢量没有。 basic_string 可以使用写时复制策略(在 C++11 之前)。矢量不能。 非信徒的相关引述: [基本字符串]: 类模板 basic_string 符合序列容器 (23.2.3)、可逆容器 (23.2) 和分配器感知容器(表 99)的要求,除了 basic_string 不使用 allocatortraits 构造或销毁其元素::construct 和 allocator- traits::destroy 以及用于 basic_string 的 swap() 使迭代器无效。 basic_string 支持的迭代器是随机访问迭代器 (24.2.7)。 原文由 Yakov Galka 发布,翻译遵循 CC BY-SA 3.0 许可协议
basic_string 不调用其元素的构造函数和析构函数。矢量确实如此。
交换 basic_string 会使迭代器无效(启用小字符串优化),交换向量不会。
在 C++03 中可能不会连续分配 basic_string 内存。向量总是连续的。在 C++0x [string.require] 中消除了这种差异:
basic_string 具有字符串操作的接口。矢量没有。
basic_string 可以使用写时复制策略(在 C++11 之前)。矢量不能。
非信徒的相关引述:
[基本字符串]: