一、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个元素

标签: none

评论已关闭