在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()
不是unsigned
aka 类型unsigned int
。它是类型的std::size_t
。
std::size_t
是_implementation定义的typedef。参见标准。std::size_t
可能与unsigned
您当前的实现等效,但这无关紧要。假装它会导致不可移植的代码和不确定的行为。
std::size_t
在实践中。您认为我们已经在6年多的漫长评论中涵盖了所有内容吗?