Day06 动态数组、栈、队列
2026-08-07 22:19:07
发布于:广东
一、动态数组 vector(动态数组)
- 可以自动扩容的数组,内存连续,下标从 0 开始。
- 不用提前写死数组大小,运行时可以增加 / 删除元素。
- 在中间插入、删除元素效率低(要移动后面一堆元素);末尾增删很快。
操作及方法
vector<int> v; 定义空 int 动态数组
v.push_back(x); 尾部添加元素 x,最常用
v.pop_back(); 删除尾部元素,无返回值
v.size() 获取元素个数,返回无符号整数
v[i] 下标访问,和普通数组一样,不会越界检查
v.clear() 清空所有元素
v.begin() v.end() 迭代器,用于 sort 排序
sort(v.begin(),v.end()); 从小到大排序
二、栈 stack(后进先出 LIFO Last In First Out)
核心重点
- 后进先出,后放进去的元素,最先拿出来。想象一个桶,只能从桶口放、拿。
- 只能操作栈顶!不能访问中间元素,不能下标访问stack[i]❌
操作及方法
stack<int> st; 定义 int 栈
st.push(x); 把 x 压入栈顶
st.top(); 取栈顶元素(不删除)
st.pop(); 删除栈顶,没有返回值
st.empty() 判断栈是否为空,空返回 true
st.size() 栈内元素数量
⚠取 top 或者 pop 之前,一定要判断栈不为空!空栈调用 top/pop 直接运行报错!
三、队列 queue(先进先出 FIFO First In First Out)
- 先进先出,排队,先排队的人先出去。队尾入队,队头出队。
- 不能随机访问,不能queue[i]❌
操作及方法
queue<int> q; 定义队列
q.push(x); 队尾入队
q.front(); 获取队头元素(不删除)
q.back(); 获取队尾元素
q.pop(); 删除队头,无返回值
q.empty() 判空
q.size() 元素个数
⚠front/pop 前,队列不能为空,否则程序崩溃。
这里空空如也












有帮助,赞一个