c++ - 迭代两个 vector 迭代器比 boost_foreach 更快

标签 c++ boost iterator

出于某种原因,在迭代两个 vector 时,迭代器的执行速度比 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
}

最佳答案

尝试:

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

关于c++ - 迭代两个 vector 迭代器比 boost_foreach 更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13617860/

相关文章:

c++ - 有没有办法在 C 头文件中禁用全局标识符?

c++ - 标准库中rbegin和end函数的区别

c++ - unordered_map 中的 "error: assignment of read-only location"(C++)

c++ - Boost进程间共享内存删除、权限和输出文件

C++ 比较迭代器和 int

c++ - std::find_if_not() 返回什么类型?

c++ - 在没有管理员权限的情况下安装 Qt

c++ - R* 树重叠计算

c++ - 与 boost::interprocess 共享内存时从 std::string 转换为 "MyShmString"

c++ - boost::sp_convertible 的解释