如果我不调用push_back,向量是否会移动?

时间:2015-07-19 03:08:32

标签: c++11 memory-management

我正在使用一个函数,该函数将

形式的结构数组作为输入
struct Info
{
  const char* something;
  // more stuff
};

由于我不想担心清理char*中的内存,我的想法是我

  1. 创建所有std::vector<std::string>
  2. something
  3. 循环向量并使用Info
  4. 创建std::vector::c_str()结构
  5. 将结构提供给函数。
  6. 这样矢量拥有所有字符串,我不必担心内存管理。我唯一担心的是,向量可能决定在某个时刻将字符串移动到内存中,这会使我从c_str()得到的指针无效。

    所以我的问题是:假设我没有在向量中添加任何内容,我可以依靠指针保留它们的位置吗?作为奖励,我可以将步骤1和2组合成一个循环,假设我之前调用reserve,以便向量不必移动吗?

0 个答案:

没有答案