不等式比较结果 移至 C++11 时未使用的警告



我刚刚移动到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 大小相同的参数)。 给出的建议对我来说似乎偏离了主题。一个 for 循环中两次迭代的语法在 C++11 中是否发生了变化?

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

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

不,语法没有改变。

cit != _names.end(), i < _names.size()

在这里,您使用的是逗号运算符,这意味着左侧将被评估然后丢弃,然后右侧将被评估。表达式的结果是逗号右侧的结果。

如果要确保这两个条件都为真,则需要使用逻辑 AND:

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

最新更新