C++警告C4018:'<':有符号/无符号不匹配

ruh*_*gry 22 c++ warnings

当我在windows下编译时,此代码会抛出警告.有解决方案吗

#include<vector> 

int main(){
  std::vector<int> v;
  //...
  for (int i = 0; i < v.size(); ++i) { //warning on this line
    //...
  }
}
Run Code Online (Sandbox Code Playgroud)

小智 51

替换int iwith的所有定义size_t i.

std::vector<T>::size()返回size_tunsigned 类型(因为容器包含负数元素没有意义).


Ker*_* SB 7

说std::size_t i = 0;:

for (std::size_t i = 0; i != v.size(); ++i) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)


Ste*_*lly 5

您也可以使用迭代器来避免发生警告的可能性:

for (std::vector<int>::const_iterator i = v.begin(); i != v.end(); ++i)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您使用的是C++ 11:

for (int i : v)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)