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