首页 > 解决方案 > 如何在for循环中创建自动迭代,它将为其分配指针而不是值

问题描述

我想创建这样的自动迭代循环:

std::vector<sometype> vector1;
for(auto it : vector1)
{
   if(&it == &vector1.at(4))
      //do something...
   else
      continue;
}

但是我发现当它等于vector1.at(4)时“it”的地址与vector1.at(4)的地址不同。我该如何做for循环,它会分配给“它”不是值,而是当前指向的值的地址。

标签: c++iterationauto

解决方案


您可以使用引用(添加&到变量声明)来做类似的事情。

std::vector<sometype> vector1;
for(auto& it : vector1) // add &
{
   if(&it == &vector1.at(4))
      //do something...
   else
      continue;
}

推荐阅读