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 0
stack<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 0
vector<int> primes {1, 2, 3, 4};
stack<int, vector<int>> data1(primes);
display(data1); // 4 3 2 1
stack<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 2
list<int> values {5, 6, 7, 8};
stack<int, list<int>> data3(values);
display(data3); // 8 7 6 5
list<int> value {11, 12, 13, 14};
stack<int, list<int>> data4(value);
stack<int, list<int>> data5 = data4;
display(data5); // 14 13 12 11
display(data4); // 14 13 12 11
return 0;
}