21xrx.com
2024-11-08 23:16:21 Friday
登录
文章检索 我的文章 写文章
C++如何遍历容器?
2023-07-05 13:28:37 深夜i     --     --
C++ 遍历 容器

C++中容器是非常常用的数据结构,它们能够帮助程序员高效地存储和处理数据。在实际的编程过程中,我们经常需要遍历容器中的元素,进行各种处理操作。那么,C++中如何遍历容器呢?下面我们就来介绍一下相关的方法。

迭代器遍历

C++中的迭代器是指向容器中元素的指针,通过迭代器可以访问容器中的元素。因此,使用迭代器进行遍历是非常常见的方法。一般来说,迭代器具有如下几种类型:

- 正向迭代器(forward_iterator):支持单向遍历;

- 反向迭代器(reverse_iterator):支持逆向遍历;

- 双向迭代器(bidirectional_iterator):支持前后遍历;

- 随机访问迭代器(random_access_iterator):支持随机访问。

不同类型的容器支持不同类型的迭代器。例如,vector、deque、set、map等容器都支持随机访问迭代器;而forward_list容器则只支持正向迭代器。

以vector为例,下面是使用迭代器遍历的示例代码:


#include <vector>

#include <iostream>

using namespace std;

int main()

{

  vector<int> vec = 3;

  vector<int>::iterator iter;

  for (iter = vec.begin(); iter != vec.end(); iter++)

  {

    cout << *iter << " ";

  }

  cout << endl;

  return 0;

}

其中,vector ::iterator是vector容器的迭代器类型,使用vec.begin()可以获得指向容器第一个元素的迭代器,使用vec.end()可以获得指向容器最后一个元素的下一个位置的迭代器(实际上,该位置不包含在容器中)。通过迭代器遍历容器中的元素,输出结果为:


1 2 3 4 5

auto关键字遍历

除了使用迭代器遍历容器,C++11及其后续版本还提供了auto关键字,可以自动推导出变量的类型。使用auto关键字遍历容器,代码会简化许多。以下是使用auto遍历vector容器的示例代码:


#include <vector>

#include <iostream>

using namespace std;

int main()

{

  vector<int> vec = 4;

  for (auto iter = vec.begin(); iter != vec.end(); iter++)

  {

    cout << *iter << " ";

  }

  cout << endl;

  return 0;

}

可以发现,使用auto关键字遍历时,不必再显式地声明迭代器类型。输出结果与上例相同:


1 2 3 4 5

范围for循环遍历

C++11还提供了另一种遍历容器的方法,即范围for循环。范围for循环的语法格式如下:


for (auto& x : vec)

  // ...

其中,auto& x是一个引用,范围for循环会遍历vec容器中的每个元素,将其给x。使用范围for循环遍历vector容器的示例代码如下:


#include <vector>

#include <iostream>

using namespace std;

int main()

{

  vector<int> vec = 3;

  for (auto& x : vec)

  

    cout << x << " ";

  

  cout << endl;

  return 0;

}

输出结果与前面两个例子相同:


1 2 3 4 5

总结

本文介绍了C++中遍历容器的方法,包括迭代器遍历、auto关键字遍历以及范围for循环遍历。这些都是C++程序员在日常开发中必须掌握的基本技能之一。在实际应用中,我们可以根据具体情况选择最合适的遍历方法,以提高程序的效率和可读性。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复