【问题标题】:iterator vs. subscript [duplicate]迭代器与下标[重复]
【发布时间】:2013-02-15 13:53:45
【问题描述】:

我有一个关于迭代器和下标之间的偏好的问题。例如,如果我正在做类似的事情:

for (vector<int>::size_type i = 0; i != ivec.size(); ++i) {
  ivec[i] related operation
}

for (vector<int>::iterator it = ivec.begin(); it != ivec.end(); ++it) {
  *it related operation
}

哪一个更受欢迎?从以下方面来看: 1. 性能 2. 清晰度 3. 其他顾虑?

我知道这个问题之前已经讨论过link。但在另一篇文章中只谈到了 size(); 的性能成本;

假设这是关于向量的,size() 的成本可以忽略不计。

使用下标与迭代器的成本如何?

谢谢。

【问题讨论】:

  • @Rapptz 我对那里的回答不太满意
  • @AlanShore 那里有 24 个答案,肯定有一个符合您的标准。
  • 扮演魔鬼代言人,类似的问题已经被问到15 times before

标签: c++


【解决方案1】:

性能:在大多数情况下,使用向量,这些情况是相等的,因为在大多数情况下,vector&lt;T&gt;::iterator 实际上是指向T 的指针。

清晰:使用迭代器。

【讨论】:

  • 更好,C++11:for ( auto i : ivec )
  • @us2012 更好的是 for (auto&amp; i : ivec)(const auto&amp; i : ivec) 如果我们谈论 T,而不仅仅是 int
猜你喜欢
  • 2018-05-24
  • 2012-03-23
  • 2018-04-26
  • 2015-01-01
  • 1970-01-01
  • 2017-01-17
  • 2016-10-22
  • 2013-09-26
  • 2015-02-20
相关资源
最近更新 更多