由于某种原因,迭代器在迭代两个向量时的执行速度比 BOOST FOREACH 快得多……我正在使用启用了优化的 Visual Studio 2012。下面是我比较的两段代码......我错过了什么吗?
typedef boost::tuple<int&, int&> int_ref_tuple;
BOOST_FOREACH(int_ref_tuple tup, boost::combine(v1, v2))
tup.get<0>() = tup.get<1>();
对比
vector<int>::iterator iIter = v1.begin();
vector<int>::const_iterator jIter = v2.begin();
for (;iIter != v1.end();++iIter, ++jIter)
{
//this is faster
}