使用矢量迭代器

时间:2016-03-14 09:59:23

标签: c++ vector iterator

这更具有概念上的疑问。我正在学习在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等)使用迭代器。是否有任何具体原因或仅仅是为了方便?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

当矢量的大小很小时,首选选项。 此外,如果您不打算使用它来改变矢量的内容,那么为什么要使用它呢?改为使用Iterator。

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