【问题标题】:Is reference to elements in std::vector safe对 std::vector 中元素的引用是否安全
【发布时间】:2015-04-19 08:43:07
【问题描述】:

As I understand it,只要我不删除或添加项目到向量,项目内存位置不会改变,所以我可以创建对向量中某些元素的引用,而不必担心它们会无效。

使用 refToVec 是否安全,只要我不删除/添加项目到 vec??

vector<int> vec;
for (int i = 0; i < 10; i++)
    vec.push_back(i);

vector<reference_wrapper<int>> refToVec;
for (auto &item : vec)
{
    if (item % 2)
        refToVec.push_back(item);
}

//is it safe to use refToVec?
for (auto &item : refToVec)
    item += 100;

我正在使用 VS 2013

【问题讨论】:

    标签: c++11 stl stdvector


    【解决方案1】:

    是的,它是安全的。只要您不向向量添加元素(超出 reserve'd 的内容),指针、引用和迭代器将保持有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-14
      • 1970-01-01
      • 1970-01-01
      • 2010-10-25
      • 2018-01-27
      • 2011-09-30
      • 1970-01-01
      相关资源
      最近更新 更多