Cam*_*oen 2 c++ integer unsigned-integer
我想要:
例:
int index = -1;
for (int i; i < vector.size(); i++){
if (vector[i] == 1) {
index = i;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我总是收到关于"有符号和无符号整数表达式之间的比较"的警告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 found = false;
unsigned int index = -1;
for (unsigned int i; i < vector.size(); i++){
if (vector[i] == 1) {
index = i;
bool = true;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
使用迭代器而作为奖励你根本不需要写一个循环:
auto it = std::find( vector.begin(), vector.end(), 1 );
if( it == vector.end() ) {
... // not found
}
Run Code Online (Sandbox Code Playgroud)
如果您愿意,可以使用带有显式循环的迭代器.
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 );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
105 次 |
| 最近记录: |