是对std :: vector safe中元素的引用

时间:2015-04-19 08:43:07

标签: c++11 stl stdvector

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

使用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

1 个答案:

答案 0 :(得分:2)

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