C++11 对std::vector中元素的引用是否安全

C++11 对std::vector中元素的引用是否安全,c++11,stl,stdvector,C++11,Stl,Stdvector,,只要我不删除或向向量添加项,项的内存位置就不会更改,因此我可以创建对向量中某些元素的引用,而不用担心这些元素无效 只要我不向vec删除/添加项目,使用refToVec安全吗 vector<int> vec; for (int i = 0; i < 10; i++) vec.push_back(i); vector<reference_wrapper<int>> refToVec; for (auto &item : vec) {

,只要我不删除或向向量添加项,项的内存位置就不会更改,因此我可以创建对向量中某些元素的引用,而不用担心这些元素无效

只要我不向vec删除/添加项目,使用refToVec安全吗

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;
vec;
对于(int i=0;i<10;i++)
向量推回(i);
向量refToVec;
用于(自动和项目:vec)
{
如果(项目%2)
refToVec.推回(项目);
}
//使用refToVec安全吗?
用于(自动和项目:refToVec)
项目+=100;

我正在使用VS 2013

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