STL中vector、stack、queue的基本用法
最近几天开始刷LeetCode,除了自己分知识点做以外,每日一题也有在跟进做,希望自己能坚持。
个人感觉以下列出的vector、stack、queue用法在刷题时基本够用,属于比较实用的部分,若不完善日后也会补充。
关于这些容器的详细介绍,包括如何构造、各种赋值存取操作,我会在近期专门开展blog配合code介绍。
1.vector
vector是向量类型,可以存放许多类型的数据。
头文件:#include<vector>
相关操作函数
函数名 | 内容 |
---|---|
empty() | 判断向量是否为空 |
size() | 返回向量中元素的数目 |
push_back() | 在向量末尾增加元素 |
emplace_back() | c++11新特性,在向量末尾增加元素,原地构造元素,无需触发拷贝构造和转移构造 |
pop_back() | 移除向量尾部元素 |
front() | 返回向量顶部元素 |
2.stack
stack栈是一个先进后出FILO的数据结构。
头文件:#include<stack>
相关操作函数
函数名 | 内容 |
---|---|
empty() | 判断栈是否为空 |
size() | 返回栈中元素的数目 |
push() | 在栈顶增加元素 |
pop() | 移除栈顶元素 |
top() | 返回栈顶元素 |
3.queue
queue队列是一个先进先出FIFO的数据结构。
头文件:#include<queue>
相关操作函数
函数名 | 内容 |
---|---|
empty() | 判断队列是否为空 |
size() | 返回队列中元素的数目 |
push() | 在队尾增加元素 |
pop() | 移除队头的元素 |
front() | 返回队头的元素 |
优先级队列,实际上就是堆。可以以O(1)的时间取出最小/最大的元素,以O(logn)时间删除元素。
举个例子,小顶堆。
priority_queue<int, vector<int>, greater<int> > pq;
函数名 | 内容 |
---|---|
empty() | 判断队列是否为空 |
size() | 返回队列中元素的数目 |
push() | 在队尾增加元素 |
pop() | 移除队头的元素 |
top() | 返回队头的元素 |
欢迎转载,表明出处。