21xrx.com
2025-04-01 18:13:57 Tuesday
文章检索 我的文章 写文章
C++中队列的迭代器使用方法
2023-07-12 14:08:45 深夜i     43     0
C++ 队列 迭代器 使用方法

队列(Queue)是一种比较常用的数据结构,在C++标准模板库(STL)中也有相应的实现,即std::queue。在使用队列时,我们经常需要遍历其中所有的元素,这就需要使用到队列的迭代器(Iterator)。本篇文章将介绍C++中队列的迭代器使用方法。

首先,需要注意的是,std::queue的迭代器是受限的。这是因为队列是一种“先进先出”的数据结构,迭代器只能访问队列中最“老”的元素,而不能访问队列中其他元素。

那么,如何使用队列的迭代器呢?在C++中,std::queue的迭代器分为两种:正向迭代器(Forward Iterator)和常量正向迭代器(Const Forward Iterator)。它们的定义如下:

iterator         // 正向迭代器
const_iterator      // 常量正向迭代器

其中,iterator表示正向迭代器,可以用于修改队列中元素的值。const_iterator表示常量正向迭代器,不允许修改队列中元素的值。

接下来,我们来看一下使用正向迭代器和常量正向迭代器遍历队列的代码示例:

#include <iostream>
#include <queue>
using namespace std;
int main()
{
  // 创建队列
  queue<int> q;
  // 向队列中添加元素
  q.push(1);
  q.push(2);
  q.push(3);
  
  // 正向迭代器
  queue<int>::iterator iter;
  for (iter = q.begin(); iter != q.end(); iter++) {
    cout << *iter << " ";
    *iter = *iter + 1;  // 修改队列中元素的值
  }
  cout << endl;
  // 常量正向迭代器
  queue<int>::const_iterator citer;
  for (citer = q.cbegin(); citer != q.cend(); citer++) {
    cout << *citer << " ";
  }
  cout << endl;
  
  return 0;
}

注:q.begin()和q.end()分别返回队列的第一个元素和最后一个元素的迭代器。

在上面的代码示例中,我们首先创建了一个队列,并向其中添加了三个元素。接着,我们使用正向迭代器遍历队列,并输出每个元素的值,并且修改了这些元素的值。之后,我们使用常量正向迭代器再次遍历队列,并输出每个元素的值。需要注意的是,常量正向迭代器不允许修改队列中元素的值。

以上就是C++中队列的迭代器使用方法的简要介绍,希望对大家有所帮助。

  
  

评论区