引用 std::vector 中的元素是安全的
Is reference to elements in std::vector safe
As I understand it,只要我不删除或添加项目到 vector,项目内存位置就不会改变,所以我可以创建对 vector 中某些元素的引用而不用担心它们将无效.
使用 refToVec 是否安全,只要我不 delete/add 项到 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
是的,很安全。只要您不向向量添加元素(超出 reserve
的内容),指针、引用和迭代器将保持有效。
As I understand it,只要我不删除或添加项目到 vector,项目内存位置就不会改变,所以我可以创建对 vector 中某些元素的引用而不用担心它们将无效.
使用 refToVec 是否安全,只要我不 delete/add 项到 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
是的,很安全。只要您不向向量添加元素(超出 reserve
的内容),指针、引用和迭代器将保持有效。