C++ 在两个向量迭代器上迭代比boost_foreach更快

C++ 在两个向量迭代器上迭代比boost_foreach更快,c++,boost,iterator,C++,Boost,Iterator,由于某些原因,迭代器在两个向量上迭代时的执行速度比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&g

由于某些原因,迭代器在两个向量上迭代时的执行速度比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>();
typedef boost::tuple int\u ref\u tuple;
BOOST_FOREACH(int_ref_tuple tup,BOOST::combine(v1,v2))
tup.get()=tup.get();
vs

vector::迭代器iIter=v1.begin();
vector::const_迭代器jIter=v2.begin();
对于(;iIter!=v1.end();++iIter,++jIter)
{
//这个更快
}
试试:

BOOST_FOREACH(int_ref_tuple &tup, boost::combine(v1, v2))

尝试在
boost::combine
的结果上使用迭代器,看看boost\u FOREACH在这种情况下是否具有可比性。visual studio 2012支持C++11基于范围的for语句。在您的情况下,性能是否重要?不要优化它prematurely@Edison.. 这很重要。。。此迭代是一个重载方法,它被调用了一百万次,性能分析器将其显示为热路径。
BOOST_FOREACH(int_ref_tuple &tup, boost::combine(v1, v2))