我刚刚移到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());


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

07-24 07:41