C++ 如何在for循环中创建自动迭代,该循环将指针而不是值分配给它
我想创建如下自动迭代循环:C++ 如何在for循环中创建自动迭代,该循环将指针而不是值分配给它,c++,iteration,auto,C++,Iteration,Auto,我想创建如下自动迭代循环: std::vector<sometype> vector1; for(auto it : vector1) { if(&it == &vector1.at(4)) //do something... else continue; } std::vector1; 用于(自动it:vector1) { if(&it==&vector1.at(4)) //做点什么。。。 其他的 继续; } 但我发现,当它等
std::vector<sometype> vector1;
for(auto it : vector1)
{
if(&it == &vector1.at(4))
//do something...
else
continue;
}
std::vector1;
用于(自动it:vector1)
{
if(&it==&vector1.at(4))
//做点什么。。。
其他的
继续;
}
但我发现,当它等于向量1.at(4)时,它的地址与向量1.at(4)的地址不同。我如何处理循环,该循环将分配给“it”的不是值,而是当前指向的值的地址。您可以使用引用(将&
添加到变量声明)来执行类似的操作
std::vector<sometype> vector1;
for(auto& it : vector1) // add &
{
if(&it == &vector1.at(4))
//do something...
else
continue;
}
std::vector1;
for(auto&it:vector1)//添加&
{
if(&it==&vector1.at(4))
//做点什么。。。
其他的
继续;
}
将代码视为算法的伪代码,它基本上是试图解决
- 如果
,则转到2true
- 否则什么也不做
//执行某些操作…
:
#include <iostream>
#include <string>
#include <vector>
int main() {
const std::vector<std::string> v{"a", "b", "c", "d", "e", "f"};
if (v.size() > 4) {
auto s = v[4];
// do something with the 5th element, as it exists.
std::cout << e; // d
}
}
#包括
#包括
#包括
int main(){
常数std::向量v{“a”、“b”、“c”、“d”、“e”、“f”};
如果(v.size()>4){
自动s=v[4];
//对第五个元素做一些事情,因为它存在。
std::cout在基于for循环的范围内
std::vector<sometype> vector1;
for(auto it : vector1)
{
if(&it == &vector1.at(4))
//do something...
else
continue;
}
请注意,带有continue的else语句没有太大意义。您可以简单地编写
std::vector<sometype> vector1;
for( auto &value : vector1)
{
if( &value == &vector1.at(4))
//do something...
}
std::vector1;
用于(自动和值:矢量1)
{
if(&value==&vector1.at(4))
//做点什么。。。
}
虽然目前还不清楚,当向量的一个元素满足条件时,为什么要使用基于范围的for循环。下面的答案解释了如何执行此操作,但我可以问一下您为什么要执行此操作吗?例如,在这种特殊情况下,您可以直接使用/…使用vector.at(4)
执行某些操作。
std::vector<sometype> vector1;
for( auto &value : vector1)
{
if( &value == &vector1.at(4))
//do something...
}