我想要:
例:
int index = -1;
for (int i; i < vector.size(); i++){
if (vector[i] == 1) {
index = i;
break;
}
}
但是,我总是从
for (int i; i < vector.size(); i++)
收到关于“有符号和无符号整数表达式之间的比较”的警告。不幸的是,我不能只使用unsigned integer index = -1
,因为无符号整数不能存储负值。 将unsigned int i
值存储在int index
中是否安全,还是需要找到其他比较方法? 在这种情况下,我将for循环更改为for (unsigned int i; i < vector.size(); i++)
,但其余代码保持不变。我可以使用一个单独的 bool(boolean) 变量,但是每次遇到这种情况时,使用额外的变量似乎比较困惑。看起来像这样:
bool found = false;
unsigned int index = -1;
for (unsigned int i; i < vector.size(); i++){
if (vector[i] == 1) {
index = i;
bool = true;
break;
}
}
最佳答案
使用迭代器代替,作为奖励,您根本不必编写循环:
auto it = std::find( vector.begin(), vector.end(), 1 );
if( it == vector.end() ) {
... // not found
}
您可以根据需要使用带有显式循环的迭代器。
auto it = vector.begin();
for( ; it != vector.end(); ++it ) {
if( *it == 1 ) break;
}
if( it == vector.end() ) {
... // not found
}
auto index = std::distance( vector.begin(), it );
关于c++ - 在C++中的for循环上进行迭代,并将迭代器与负数进行比较。一个int可以存储一个未签名的int吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49680583/