c++ - 更改 vector<string> 中字符串的大小

标签 c++ stl

当一个或多个元素改变大小时, vector 会发生什么变化?

详细说明,

#include <string>
#include <vector>
using namespace std;
int main() {
    vector<string> v;
    v.push_back("first string");
    v.push_back("2nd string");
    v[0] += " has increased in size";
}

“v[0] += ...”会发生什么?是否会进行大规模重新分配,以保持字符串和 vector 中的内存连续?

最佳答案

vector 中不会重新分配内存,而且几乎肯定会为 string 重新分配内存,尽管标准对此没有任何说明.字符串就像一个 vector ,因为它将内容与字符串对象本身分开。

关于c++ - 更改 vector<string> 中字符串的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12362575/

相关文章:

c++ - 将 std::find_if 与 std::string 一起使用

c++ - 如何区分这些定义?如何理解它们以便记住。

c++ - 我可以访问地址零吗?

c++ - 区间范围树数据结构c++

c++ - 从连续的固定大小的矩形制作更宽的矩形?

c++ - 通过包装容器减少 STL 代码膨胀

c++ - 从 std::string_view 删除字符串前缀的最佳方法?

c++ - 将数据存储在 char 数组中导致变量周围损坏

c++ - 如何使用 OpenCV 在 C++ 中快速访问像素值

c++ - 如何使用 LuaBind 将 std::map 绑定(bind)到 Lua