【问题标题】:Use of vector iterator [duplicate]向量迭代器的使用[重复]
【发布时间】:2016-06-29 07:20:12
【问题描述】:

这更像是一个概念上的疑问。我正在学习在 C++ 中使用向量。

在遍历向量时,我可以通过两种方式进行:

vector<int> temp;
for (int j = 0; j < 10; j++){     
    temp.push_back(j);
}

int sum1 = 0;
int sum2 = 0;

//Method 1: almost treating it like an array
for (int i = 0; i < temp.size(); i++){
    sum1 = sum1 + temp[i];
}

//Method 2: using an iterator
vector<int>::iterator it;
for(it = temp.begin(); it < temp.end(); it++) {     
    sum2 = sum2 + *it;
}

这两种方法都运行良好并产生了预期的结果。但是,我注意到大多数建议的代码(在 stackexchange 等上)都使用迭代器。是否有任何具体原因,或者只是出于方便?

【问题讨论】:

  • 让我补充一点,如果可以访问,迭代器通常比原始访问稍慢。

标签: c++ vector iterator


【解决方案1】:

迭代器更通用。使用迭代器,您可以使用支持迭代器的 any 类。如果您使用“方法 1”,那么您将仅限于向量和 std::array

我什至会更进一步,停止使用container.begin()container.end(),而是使用std::beginstd::end(如果需要迭代器)或range-based for loop

【讨论】:

    【解决方案2】:

    当向量的大小较小时,首选第一个选项。 此外,如果您不打算使用它来更改向量的内容,那么为什么要使用它呢?请改用迭代器。

    阅读此内容以获得澄清。 Why use iterators instead of array indices?

    【讨论】:

    • 谢谢!这些链接很有帮助!
    猜你喜欢
    • 2011-07-04
    • 2017-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-11
    • 2018-12-25
    • 1970-01-01
    • 2022-01-20
    相关资源
    最近更新 更多