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

C++ C++;警告C4018:&x27<';:有符号/无符号不匹配,c++,warnings,C++,Warnings,当我在windows下编译时,此代码会引发警告。有什么解决办法吗 #include<vector> int main(){ std::vector<int> v; //... for (int i = 0; i < v.size(); ++i) { //warning on this line //... } } #包括 int main(){ std::向量v; //... 对于(inti=0;i

当我在windows下编译时,此代码会引发警告。有什么解决办法吗

#include<vector> 

int main(){
  std::vector<int> v;
  //...
  for (int i = 0; i < v.size(); ++i) { //warning on this line
    //...
  }
}
#包括
int main(){
std::向量v;
//...
对于(inti=0;i
std::size\u t i=0

for (std::size_t i = 0; i != v.size(); ++i) { /* ... */ }

int i
的所有定义替换为
size\u t i


std::vector::size()
返回未签名的类型
size\t
(因为容器包含负数的元素是没有意义的)。

您也可以使用迭代器来避免出现警告:

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

这是一个坏主意,因为在您的解决方案中,-3 int将大于size\t 31。虽然此解决方案适用于当前示例,但在其他情况下可能会导致难以调试的bug。
for (int i : v)
{
    ...
}