code review!
C++笔记之stack、queue、priority_queue、deque
文章目录
- C++笔记之stack、queue、priority_queue、deque
- 一.cppreference介绍
- 1.stack
- 2.queue
- 3.priority_queue
- 4.deque
- 二.容器适配器
- 三.stack详解
- 1.创建一个不包含任何元素的 stack 适配器,并采用默认的 deque 基础容器
- 2.创建指定底层容器的 stack 适配器
- 3.赋值
- 4.没有迭代器
- 5.stack的使用例程
一.cppreference介绍
1.stack
2.queue
3.priority_queue
4.deque
二.容器适配器
三.stack详解
1.创建一个不包含任何元素的 stack 适配器,并采用默认的 deque 基础容器
std::stack<int> data;
2.创建指定底层容器的 stack 适配器
3.赋值
4.没有迭代器
stack没有其他的访问元素的方法,也就意味着,stack是不能被遍历的,因此也不提供迭代器。
5.stack的使用例程
代码
#include <iostream>
#include <stack>
#include <list>
#include <vector>
#include <cstring>using namespace std;template<class T>
void display(T& data) //注意函数的入参,会修改传入的变量
{
// int nCount = data.size();
// for(int nIndex = 0; nIndex < nCount; ++nIndex) //如果使用for循环遍历,则不能用data.size()直接代替nCount,因为data.pop()会改变data.size()while (!data.empty()){cout << data.top() << " ";data.pop();}cout << endl;
}int main(int argc, char* argv[])
{stack<int> data0;for(int nIndex = 0; nIndex < 10; ++nIndex){data0.push(nIndex);}display(data0); // 9 8 7 6 5 4 3 2 1 0stack<int, vector<int>> data;for(int nIndex = 0; nIndex < 10; ++nIndex){data.push(nIndex);}display(data); // 9 8 7 6 5 4 3 2 1 0vector<int> primes {1, 2, 3, 4};stack<int, vector<int>> data1(primes);display(data1); // 4 3 2 1stack<int, list<int>> data2;for(int nIndex = 1; nIndex <= 10; ++nIndex){data2.push(nIndex * 2);}display(data2); // 20 18 16 14 12 10 8 6 4 2list<int> values {5, 6, 7, 8};stack<int, list<int>> data3(values);display(data3); // 8 7 6 5list<int> value {11, 12, 13, 14};stack<int, list<int>> data4(value);stack<int, list<int>> data5 = data4;display(data5); // 14 13 12 11display(data4); // 14 13 12 11return 0;
}