STL容器1——vector、stack、queue、deque
一、vector(动态数组)
支持随机访问,尾部增删效率高。
声明与初始化
#include <vector>
using namespace std;
vector<int> v1; // 空vector
vector<int> v2(5); // 5个元素,默认值为0
vector<int> v3(5, 10); // 5个元素,每个值为10
vector<int> v4(v3); // 拷贝v3
vector<int> v5 = {1,2,3,4,5}; // 列表初始化(C++11及以上)常用函数
v.push_back(6); // 尾部添加元素6
v.pop_back(); // 删除尾部元素
v.size(); // 返回元素个数
v.empty(); // 为空返回true,否则false
v.clear(); // 清空所有元素
v[0]; // 访问第0个元素(不检查越界)
v.at(0); // 访问第0个元素(越界抛出异常)
v.front(); // 返回第一个元素
v.back(); // 返回最后一个元素
v.insert(v.begin()+2, 7); // 在第2个位置插入7
v.erase(v.begin()+1); // 删除第1个元素
v.erase(v.begin(), v.begin()+3); // 删除前3个元素二、stack(栈)
后进先出(LIFO)容器适配器,只能操作栈顶元素。
声明与初始化
#include <stack>
using namespace std;
stack<int> s1; // 空栈
stack<int> s2(s1); // 拷贝s1常用函数
s.push(10); // 栈顶压入元素10
s.pop(); // 弹出栈顶元素(无返回值)
s.top(); // 返回栈顶元素
s.size(); // 返回栈中元素个数
s.empty(); // 为空返回true,否则false三、queue(队列)
先进先出(FIFO)容器适配器,只能操作队头和队尾。
声明与初始化
#include <queue>
using namespace std;
queue<int> q1; // 空队列
queue<int> q2(q1); // 拷贝q1常用函数
q.push(20); // 队尾添加元素20
q.pop(); // 删除队头元素(无返回值)
q.front(); // 返回队头元素
q.back(); // 返回队尾元素
q.size(); // 返回队列中元素个数
q.empty(); // 为空返回true,否则false四、deque(双端队列)
支持两端高效增删,也支持随机访问,功能介于vector和list之间。
声明与初始化
#include <deque>
using namespace std;
deque<int> dq1; // 空deque
deque<int> dq2(5); // 5个元素,默认值为0
deque<int> dq3(5, 10); // 5个元素,每个值为10
deque<int> dq4(dq3); // 拷贝dq3
deque<int> dq5 = {1,2,3,4,5}; // 列表初始化常用函数
dq.push_back(6); // 尾部添加元素6
dq.push_front(0); // 头部添加元素0
dq.pop_back(); // 删除尾部元素
dq.pop_front(); // 删除头部元素
dq.size(); // 返回元素个数
dq.empty(); // 为空返回true,否则false
dq.clear(); // 清空所有元素
dq[0]; // 访问第0个元素
dq.at(0); // 访问第0个元素(越界检查)
dq.front(); // 返回第一个元素
dq.back(); // 返回最后一个元素
dq.insert(dq.begin()+2, 7); // 在第2个位置插入7
dq.erase(dq.begin()+1); // 删除第1个元素
评论已关闭