常用 stl
- list底层是双向链表
- vector底层是数组
list
list常用方法
| 头 | 尾 | |
|---|---|---|
| 增加元素 | push_front/emplace_front | push_back/emplace_back |
| 删除元素 | pop_front | pop_back |
| 获取元素引用 | front | back |
emplace_front 和push_front 的区别在于,emplace_front可以直接构造数据放到list最前面,不用再次拷贝
emplace_back和push_back类似
删除某些元素
std::list<int> myList = {1, 2, 3, 4, 5};
// 删除所有偶数元素
myList.remove_if([](int n) { return n % 2 == 0; });
// 删除所有值为3的元素
myList.remove(3);
vector
vector常用方法
| 头 | 尾 | |
|---|---|---|
| 增加元素 | myVector.insert(myVector.begin(), value) | push_back |
| 删除元素 | myVector.erase(myVector.begin()); | pop_back |
| 获取元素引用 | front | back |
vector在头部增加元素或者删除元素 时间复杂度都是O(n)
删除某些元素
#include <algorithm> // for std::remove_if
std::vector<int> myVector = {1, 2, 3, 4, 3, 5};
// 删除所有值为3的元素
myVector.erase(std::remove(myVector.begin(), myVector.end(), 3), myVector.end());
// 删除所有偶数元素
myVector.erase(std::remove_if(myVector.begin(), myVector.end(),
[](int n) { return n % 2 == 0; }),
myVector.end());
stack
常用方法
- push(const T& value):将一个元素值拷贝后压入栈顶。
- emplace(Args&&… args):在栈顶构造一个元素,直接使用传入的参数进行原地构造,避免了拷贝。
- pop():移除栈顶元素,但不返回其值。
- top():返回栈顶元素的引用,即最后被压入栈中的元素。
- empty():如果栈为空则返回true,否则返回false。
- size():返回栈中元素的数量。
queue
常用方法
- push(const T& value) 或 emplace(Args&&… args):将一个元素值拷贝或移动后加入队列尾部。
- back():返回队列尾部元素的引用,即最后被加入队列的元素
- pop():移除队列头部的元素,但不返回其值。
- front():返回队列头部元素的引用,即最早被加入队列的元素。
- empty():如果队列为空则返回true,否则返回false。
- size():返回队列中元素的数量。
2万+

被折叠的 条评论
为什么被折叠?



