我刚刚转到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循环中的两次迭代的语法是否已更改?
答案 0 :(得分:4)
(cit != _names.end()) && (i < _names.size());
,
运算符评估左侧,丢弃结果。那不是你想要的。您需要将这两个测试与&&
(或||
)结合使用。
答案 1 :(得分:1)
不,语法没有改变。
cit != _names.end(), i < _names.size()
这里使用的是逗号运算符,这意味着左侧将被评估然后被丢弃,然后将评估右侧。表达式的结果是逗号右侧的结果。
如果要确保两个条件都为真,则需要使用逻辑AND:
cit != _names.end() && i < _names.size()