C++ C++;警告C4018:&x27<';:有符号/无符号不匹配
当我在windows下编译时,此代码会引发警告。有什么解决办法吗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
#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)
{
...
}