在C ++中迭代向量的正确方法是什么?
考虑下面的两个代码片段,这一段效果很好:
for (unsigned i=0; i < polygon.size(); i++) {
sum += polygon[i];
}
还有这个:
for (int i=0; i < polygon.size(); i++) {
sum += polygon[i];
}
产生warning: comparison between signed and unsigned integer expressions。
我是C ++领域的新手,所以unsigned变量对我来说有点令人恐惧,我知道unsigned如果使用不正确,变量可能很危险,所以-这正确吗?
.size()不是unsignedaka 类型unsigned int。它是类型的std::size_t。
std::size_t是_implementation定义的typedef。参见标准。std::size_t可能与unsigned您当前的实现等效,但这无关紧要。假装它会导致不可移植的代码和不确定的行为。
std::size_t在实践中。您认为我们已经在6年多的漫长评论中涵盖了所有内容吗?