哪个更快,使用迭代还是简单的循环计数器?

时间:2012-04-03 00:04:38

标签: c++ optimization vector iteration

  

可能重复:
  C++ STL: Which method of iteration over a STL container is better?
  Efficiency of vector index access vs iterator access

假设名为std::vector<int>的{​​{1}},以下哪项更快?

numbers

或..

for (vector<int>::iterator i = numbers.begin(); i != numbers.end(); i++)
  cout << *i;

哪一个更快?有什么重大差异吗?

2 个答案:

答案 0 :(得分:1)

任何差异都取决于硬件和编译器,因此您必须进行测量。除了使用非优化编译器的外来硬件之外,我预计没有显着差异。

当然,IO可能远远超过循环开销。

答案 1 :(得分:1)

这两者甚至不具有可比性。前者循环遍历每个元素,而后者循环通过,同时检查当前索引是否有效(使用at())。拿出支票再问:

for (/* Not an int! Unsigned type: */ std::size_t i = 0; i < numbers.size(); i++)
    cout << numbers[i];

现在他们做同样的事情。现在问题是重复(#12)。总结一下:没关系。