首页 > 编程语言 >C++ 遍历queue

C++ 遍历queue

时间:2024-04-08 20:13:27浏览次数:13  
标签:std 遍历 队列 C++ queue int myqueue

在C++中,std::queue是一个遵循先进先出(FIFO)原则的容器。由于std::queue不提供直接访问容器内部元素的方法,因此不能直接遍历。但是,您可以使用一个临时队列来遍历。以下是如何做到这一点的示例代码:

 
#include <iostream>
#include <queue>
 
int main() {
    std::queue<int> q;
 
    // 添加一些元素到队列
    for (int i = 0; i < 5; ++i) {
        q.push(i);
    }
 
    // 使用临时队列遍历
    std::queue<int> temp(q); // 复制原队列到临时队列
    while (!temp.empty()) {
        std::cout << temp.front() << " ";
        temp.pop(); // 弹出元素以遍历下一个元素
    }
    std::cout << std::endl;
 
    return 0;
}

这段代码会输出

0 1 2 3 4

请注意,这种方法会复制队列中的所有元素,如果队列很大,这可能不是最佳选择。如果需要频繁遍历队列,可以考虑使用std::deque作为底层容器,然后使用std::queue进行封装,这样可以保持队列的FIFO特性,同时提供遍历能力。

 

 

或者采用这种办法:

#include<iostream>
#include<queue>

using namespace std;
int main(int argc, char* argv[]) {

   queue<int> myqueue;
   myqueue.push(1);
   myqueue.push(2);
   myqueue.push(3);

   int myqueue_size = myqueue.size();
   for(int i = 0; i < myqueue_size; i++) {   //myqueue_size 必须是固定值
      cout << myqueue.front() << endl;
      myqueue.push(myqueue.front());
      myqueue.pop();
   } 
}

 

标签:std,遍历,队列,C++,queue,int,myqueue
From: https://www.cnblogs.com/FBsharl/p/18122428

相关文章

  • C++ [NOIP2009 普及组] 分数线划定
    文章目录一、题目描述[NOIP2009普及组]分数线划定题目描述输入格式输出格式样例#1样例输入#1样例输出#1提示二、参考代码一、题目描述[NOIP2009普及组]分数线划定题目描述世博会志愿者的选拔工作正在A市如火如荼的进行。为了选拔最合适的人才,A市对所......
  • 任务处理【华为OD机试】(JAVA&Python&C++&JS题解)
    一.题目-任务处理在某个项目中有多个任务(用tasks数组表示)需要您进行处理,其中tasks[i]=[si,ei],你可以在si<=day<=ei中的任意一天处理该任务。请返回你可以处理的最大任务数。注:一天可以完成一个任务的处理。输入描述:第一行为任务数量n,1<=n<=100000。后......
  • 跳马【华为OD机试】(JAVA&Python&C++&JS题解)
    一.题目马是象棋(包括中国象棋和国际象棋)中的棋子,走法是每步直一格再斜一格,即先横着或直着走一格,然后再斜着走一个对角线,可进可退,可越过河界,俗称“马走‘日’字。给顶m行n列的棋盘(网格图),棋盘上只有有棋子象棋中的棋子“马”,并且每个棋子有等级之分,等级为k的马可以跳1~k......
  • 动态规划和层次遍历 —— [NOIP2002 普及组] 过河卒
    题目如下:[NOIP2002普及组]过河卒题目描述棋盘上AAA点有一个过河卒,需要走到目标BB......
  • C++要点细细梳理——trivial:运算符优先级、switch、临时变量默认赋值等
    1.运算符优先级在C语言中,运算符的优先级决定了在表达式中各个运算符的执行顺序。当一个表达式中有多个运算符时,优先级高的运算符会先被计算。如果两个运算符的优先级相同,那么它们的结合性(从左到右或从右到左)会决定它们的计算顺序。以下是一些基本的C语言运算符优先级(从......
  • C++中的 =default
    参考:链接每当我们声明一个有参构造函数时,编译器就不会创建默认构造函数。如下代码就会发生错误://useofdefaultedfunctions#include<iostream>usingnamespacestd;classA{public://Auser-definedA(intx){cout<<"Thisisaparameterizedco......
  • 突破编程_C++_网络编程(Windows 套接字(常用数据结构))
    1WSADATAWSADATA结构体包含了关于Winsock实现的一些详细信息,定义如下:structWSAData{WORDwVersion;//Winsock版本号WORDwHighVersion;//Winsock动态库支持的最高版本号charszDescription[WSADESCRIPTION_LEN+1];//Winsock描......
  • 突破编程_C++_网络编程(Windows 套接字(API 接口(1)))
    1初始化与清理1.1WSAStartupWSAStartup函数用于初始化Winsock库,并指定应用程序所需的Winsock版本。它允许应用程序与WinsockDLL(动态链接库)建立联系,并准备Winsock环境以供后续使用。(1)函数原型如下:intWSAStartup(WORDwVersionRequested,LPWSADATAlpWSAData......
  • 【每周例题】蓝桥杯 C++ 对称排序
    对称排序题目对称排序 题目分析1.因为数字是对称交换,所以我们只需要判断前n/2项需不需要交换就好了2.这里我采用了升序排序,你们也可以尝试降序排序3.我们只需要排序好后再遍历一下整个数组,找出不符合排序的就输出NO就好了代码#include<iostream>#include<bits/stdc+......
  • Oracle 递归遍历
    1、场景递归到第几层,例如递归到第2层   selectlevel,--层级wdj.*fromwip_discrete_jobs_vwdjwhere1=1startwithwdj.wip_entity_name='08363790'--递归开始connectbywdj.attribute3=priorwdj.wip_entity_nameandlevel<3; 2、一行数据出现两......