当前位置:   article > 正文

C++中vector迭代器_c++ vector iterator

c++ vector iterator

迭代器(iterator)是一种用于遍历数据集合的的对象。它提供了一种访问数据集合中元素的方式,而无需暴露数据集合内部的细节。使用迭代器,我们可以对数据集合中的每个元素进行处理,而无需将整个数据集合加载到内存中。这样可以节省内存空间,并且在处理大型数据集合时可以提高处理效率。

C++ STL(标准模板库)中的容器类都提供了迭代器,用于访问容器内部的元素。迭代器是一个类或者一个指针,它可以指向容器中的一个元素,然后遍历容器中的所有元素。

C++ STL中的迭代器通常具有以下五个成员函数:

  • operator*():用于返回当前迭代器指向的元素的引用。
  • operator->():用于返回当前迭代器指向的元素的指针。
  • operator++():用于将迭代器移动到下一个元素。
  • operator--():用于将迭代器移动到上一个元素。
  • operator==()operator!=():用于比较两个迭代器是否相等。

C++ STL中的容器类,如vector、list、map、set等都提供了迭代器,可以通过调用容器的成员函数begin()和end()获取指向容器第一个元素和最后一个元素的迭代器。

  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4. int main()
  5. {
  6. vector<int> v = {1, 2, 3, 4, 5};
  7. // 遍历vector中的所有元素
  8. for (auto it = v.begin(); it != v.end(); ++it)
  9. {
  10. cout << *it << " ";
  11. }
  12. cout << endl;
  13. return 0;
  14. }

该代码定义了一个vector<int>对象v,并使用auto关键字定义了一个迭代器it来遍历vector中的所有元素。在每次迭代中,使用*it访问迭代器指向的元素。最后输出所有元素的值。

vector是一个动态数组容器,可以使用迭代器来访问其元素。vector有两种类型迭代器:正向迭代器和反向迭代器。

正向迭代器遍历:

  1. #include<iostream>
  2. #include<vector>
  3. using namespace std;
  4. int main() {
  5. vector<int> v = { 1,2,3,4,5 };
  6. vector<int>::iterator it;
  7. for (it = v.begin(); it != v.end(); ++it) {
  8. cout << *it << " ";
  9. }
  10. return 0;
  11. }

输出结果:1,2,3,4,5

在上面的示例中,我们首先创建一个vector对象v,并使用v.begin()和v.end()方法获取迭代器的起始和结束位置。然后我们使用一个迭代器it来遍历vector的每个元素。通过使用*it来获取迭代器指向的元素的值。

我们也可以使用auto关键字来简化迭代器的定义:

  1. #include<iostream>
  2. #include<vector>
  3. using namespace std;
  4. int main() {
  5. vector<int> v = { 1,2,3,4,5 };
  6. for (auto it = v.begin(); it != v.end(); ++it) {
  7. cout << *it << " ";
  8. }
  9. return 0;
  10. }

反向迭代器遍历:

反向迭代器遍历vector的方法与正向迭代器类似,只需使用rbegin()和rend()方法获取反向迭代器的起始和结束位置。以下是一个使用反向迭代器遍历vector数组的示例:

  1. #include<iostream>
  2. #include<vector>
  3. using namespace std;
  4. int main() {
  5. vector<int> v = { 1,2,3,4,5 };
  6. vector<int>::reverse_iterator it;
  7. for (it = v.rbegin(); it != v.rend(); ++it) {
  8. cout << *it << " ";
  9. }
  10. return 0;
  11. }

输出结果:5,4,3,2,1

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/390784
推荐阅读
相关标签
  

闽ICP备14008679号