c++ - 迁移到 C++11 时出现不等式比较结果未使用警告

标签 c++ c++11 for-loop

我刚转到 C++11 并注意到我的旧代码上有一些新警告:

ChinaminiC.cpp:70:76: warning: inequality comparison result unused [-Wunused-comparison]
for(std::vector<std::string>::const_iterator cit = _names.begin(); 
    cit != _names.end(), i < _names.size(); 
    cit++, i++)
ChinaminiC.cpp:70:76: note: use '|=' to turn this inequality comparison into an or-assignment

所指的不等式来自 cit != _names.end()。如果这意味着不检查不等式条件,那就是一个问题(使用 i 的双重迭代是为了迭代与 _names 大小相同的参数)。给出的建议对我来说似乎是题外话。在 C++11 中,一个 for 循环中的两次迭代的语法是否发生了变化?

最佳答案

(cit != _names.end()) && (i < _names.size());

, 运算符计算左侧,并丢弃 结果。那不是你想要的。您需要将这两个测试与 &&(或 ||)结合起来。

关于c++ - 迁移到 C++11 时出现不等式比较结果未使用警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21203889/

相关文章:

c++ - 我不小心没有使用 std::ref - 结果代码做了什么?

c++ - 如何从 `start group ... end group` 链接器选项构建文件列表

c++ - Netbeans 远程调试 C++ 无控制台输出

c++ - 您可以根据大小及其内容生成可变模板包吗?

java - 如何从 Java 中的 for 循环返回多个字符串?

batch-file - 如何使用rsync而不是批量移入for循环

c++ - 如何实现用于配置功能的通用 C++?

c++ - 是否有使用谓词比较两个范围的标准方法?

c++ - 构造函数在这里被调用了吗?

objective-c - For 循环会按照此模式在索引 : 0, 1 然后 1,2 然后 2,3 然后 3,4 处给我对象,直到数组计数?