1.栈的使用:


2.队列的使用:



3.优先队列的使用:叫队列,底层实现其实是大根堆;另外push 和 emplace 的区别为前者是对已有对象插入,后者可原地构造后插入。



4.容器适配器:可以理解为对底层数据结构进行封装,提供给客户需要的接口。

STL标准库中的stack 和 queue的底层结构默认都为deque。deque 是双端队列,是一种双开口的“连续”空间的数据结构,可以在头尾两端进行插入和删除操作,时间复杂度为O(1),与 vector 比头插和删除效率高,不需要移动元素,扩容时,也无需移动元素效率高;与 list 相比,空间利用率高,不需要存储额外字段。deque 的缺陷是不适合遍历,因为在遍历时,deque 的迭代器要频繁检测其是否移动到某段小空间边界,导致效率低。

deque 并不连续的空间,而是由一段段连续的小空间拼接而成,类似一个二维数组。
5.仿函数:也叫函数对象,行为像函数的类对象,核心是类中重载函数调用运算符。仿函数对象可以保存状态,可以根据对象数据的不同,产生不同的行为
#include<iostream>
class Add
{
public:
int operator()(int x, int y)const
{
return x + y;
}
};
//使用时先创建对象,然后像调用函数一样调用他
int main()
{
Add add;
int ret = add(10, 20);//add.operator()(10, 20);
std::cout << ret << std::endl;
}
class mycomparison
{
bool reverse;
public:
mycomparison(bool revparam = false)
: reverse(revparam)
{}
bool operator()(const int& lhs, const int& rhs) const
{
if (reverse)
return lhs > rhs;
else
return lhs < rhs;
}
};
int main()
{
mycomparison cmp1; // reverse == false
mycomparison cmp2(true); // reverse == true
cmp1(10, 20); // 相当于 10 < 20,结果为 true
cmp2(10, 20); // 相当于 10 > 20,结果为 false
}



![P11246 [GESP202409 六级] 小杨和整数拆分-171主机测评](https://www.171host.com/wp-content/uploads/2026/11/20261108100631-6af049a75855c-220x150.png)

