STL——标准模板库(一)
STL是标准模板库,主要分为:容器、算法、迭代器(重点)和适配器、分配器、仿函数。(了解)
容器 :系统为我们封装好的数据结构:数组(array、vector)、链表、栈、队列、树、hash表等
算法:系统为我们写好的算法:排序、交换、替换。
迭代器:链接容器和算法。
一、Verctor
1、Verctor 是向量,变长数组。[
2、 需要头文件 #include
3 访问方式:
Verctor
pair
v.push //向数组添加元素
// 1使用下标访问
for(int i = 0;i printf("%d",V[i]); } // 2 使用迭代器访问 itartor vector for(vertor (int) ::iterator it = v.begin(); it!=end();it++){ printf("%d",V[i]); } 4、、常用函数 二、 queue&&prioity_queue 队列 quese 1、使用方式 2、常用函数 Priority_queue //优先队列 、堆 1、使用方式 2、访问方式 3、常用函数 和queue一样,不过不能用pop()访问 三、stack 1、使用方式 2、常用函数 四、 map&&multimap //映射 1、 使用方式 2、访问方式 3、常用函数 五、set //集合 自动排序 1、使用方式 2、 访问方式 只支持迭代器访问#include 3、常用函数 六、 algorithm库中的算法/函数 sort //排序函数
函数名
函数作用
push_back()
在容器尾部添加元素
pop_back()
在容器尾部删除元素
size()
获取数组容量
clear()
清空数组
insert(it,x)
在迭代器it位置添加x元素
erase(it)/ erase(first,last)
删除迭代器it位置的元素 删除
[first,last) 位置的元素
#include
函数名
函数功能
push()
将元素进队列
front()/top()
访问队首元素
back()
访问队尾元素
size()
获取队列大小
pop()
将队首出队列
empty()
判断队列是否为空
#include
//第二个参数是承载堆的容器
less 表示数字越大优先级越大,可替换参数:greater 表示数字越小优先级越大
priority_queue<int,vector<int>,greater<> > q; //大根堆
priority_queue<int,vector<int>,less<>> q;//小根堆#include
#include
#include
{
//通过it->first访问key的值,通过it->second访问value的值
printf("%c: %d\t",it->first,it->second);
}
return 0;
}
while(~scanf("%d",&a))
while(cin >> a)
#include<set>
using namespace std;
set
int main(){
set<int> s; s.insert(12); //添加元素
...
for(set<int>:: iterator it = s.begin();it!=s.end();it++){
printf("%d",*it);
}
for(auto p : s) }
第一行一个数字t代表测试数据数量
第二行一个数字n代表数据个数
第三行n个数代表数据
3
s.insert(a[i]);
}
3
1 2 3
4
3 2 1 5
5
1 2 3 4 5
#include<set>
#includefor(set<int>:: iterator it = s.begin();it!=s.end();it++){
printf("%d",*it);
}
}
return 0; }