在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如果使用不正确,变量可能是危险的,所以 - 这是正确的吗?
在你的例子中的具体情况,我会使用STL算法来完成这个。
#include <numeric>
sum = std::accumulate( polygon.begin(), polygon.end(), 0 );
对于一个更一般的,但仍然相当简单的情况下,我会去:
#include <boost/lambda/lambda.hpp>
#include <boost/lambda/bind.hpp>
using namespace boost::lambda;
std::for_each( polygon.begin(), polygon.end(), sum += _1 );