队列是一种常见的数据结构,主要用于元素的存储和访问,遵循先进先出(FIFO,First In First Out)的原则。在C++编程中,定义和使用队列可以通过STL(标准模板库)提供的queue库来实现。
1. 定义并初始化队列
在代码中定义队列需要引入
#include <queue> //包含队列头文件
using namespace std;
queue<int> q; //定义一个空的int类型队列
这里定义了一个名为q的int类型队列,使用默认的构造函数创建一个空的队列。如果需要在定义时初始化队列,可以使用以下代码:
queue<int> q1({ 1, 2, 3 }); //定义并初始化整数队列
queue<string> q2({ "apple", "orange", "banana" }); //定义并初始化字符串队列
可以使用花括号“{ } ”来初始化队列,这里可以实现Int类型或字符串类型队列的初始化。
2. 插入元素到队列中
队列中主要提供两种插入元素的方法:push()和emplace()。下面分别详细讲解。
- push()方法
push()方法用于将元素插入到队列的末尾,代码如下:
q.push(10); //将10插入队列q的末尾
q.push(20); //将20插入队列q的末尾
q.push(30); //将30插入队列q的末尾
q.push(40); //将40插入队列q的末尾
- emplace()方法
emplace()方法用于在队列的末尾创建一个新元素,代码如下:
q.emplace(50); //任务元素50 到队列q的末尾
3. 遍历队列元素
遍历队列元素主要有两种方式,一种是使用循环和front()方法、pop()方法来实现,另一种是使用STL提供的算法for_each() function来实现。
- 方法一
while (!q.empty()) { //当队列非空时继续循环
cout << q.front() << " "; //输出队列的第一个元素
q.pop(); //从队列中删除第一个元素
}
- for_each()函数
#include <algorithm> //包含算法库
void output(int i) {
cout << i << " ";
}
for_each(q.front(), q.back(), output);
这里采用STL中的for_each()函数,从队列的首位置到队列的末位置循环执行output()函数。
4. 删除队列的元素
队列中有两种方法用于删除队列中的元素:pop()和clear()。前者从队列中删除队首元素,而后者删除队列中所有元素。
- pop()方法
q.pop(); //从队列中删除第一个元素
- clear()方法
q.clear(); //从队列q中删除所有元素
示例1
假设现在需要使用队列,按照顺序输入两个数字,依次将这两个数字加入队列,每增加一个新的数字需要输出一下队列的所有元素,如此重复执行。
#include<iostream>
#include<queue>
using namespace std;
int main() {
queue<int> q;//定义一个int类型的空队列
int num1 = 0, num2 = 0;//定义两个变量
while (cin >> num1 >> num2) {//循环输入两个数字
q.push(num1); //将第一个数字加入队列中
q.emplace(num2); //将输入的第二个数字加入队列末尾
cout << "Elements of Queue: ";
while (!q.empty()) { //输出队列中的所有元素
cout << q.front() << " ";
q.pop();
}
cout << "\n";
}
return 0;
}
示例2
假设现需要按照一定规则,依次将所有数字入队列,并输出队列中的所有偶数。
#include<iostream>
#include<queue>
#include<algorithm> //使用for_each()函数需要包含algorithm头文件
using namespace std;
void output(int i) { //输出所有偶数函数
if (i % 2 == 0) {
cout << i << " ";
}
}
int main() {
queue<int> q;
for (int i = 1; i <= 10; ++i) { //将1-10的数字入队
q.push(i);
}
cout << "Elements of Queue: ";
for_each(q.front(), q.back(), output); //输出队列中的所有偶数
cout << "\n";
return 0;
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在编程语言中怎样定义队列及其使用(C++) - Python技术站