有关c++STL容器及头文件

  • 万能头

打遍天下无敌手(除了vjudge)
#include<bits/stdc++.h>
  • 通用函数(在以下STL容器中均适用)

size返回容器的实际长度(元素个数)
empty返回一个bool型,表示容器是非为空

  • vector

声明:
vector<int>
头文件:

Here
#include<vector>

一些函数:
clear清空
迭代器与begin,end参考以下代码

遍历vector并输出
for(int i=0;i<a.size();i++){
	cout<<a[i]<<endl;
}
//或者
for(vector<int>::iterator it=a.begin();it!=a.end();it++){
	cont<<*it<<endl;
}

front返回vector第一个元素,等价于*a.begin()a[0]
back返回vector最后一个元素,等价于*--a.end()a[a.size()-1]
push_back在vector尾部插入元素
pop_back删除vector尾部元素

附:用vector代替邻接链表
const int maxn=1e6+10;
vector<int> v[maxn],e[maxn];
void add(int x,int y,int z){//有向边存图 
	v[x].push_back(y);
	e[x].push_back(z);
}
for(int i=0;i<v[x].size();i++){//遍历从x出发的所有有向边 
	int y=v[x][i],z=e[x][i];
}
  • 队列

头文件:

Here
#include<queue>
#include<deque>
  • 普通队列

声明:
queue<int>
一些函数:
push从队尾入队
pop从队头出队
front返回队头元素
back返回队尾元素

  • 优先队列

声明:

Here
//升序队列,小顶堆
priority_queue <int,vector<int>,greater<int> > q;
//降序队列,大顶堆
priority_queue <int,vector<int>,less<int> >q;
//基础类型默认为大顶堆
priority_queue<int> a;

一些函数:
push将元素插入堆
pop删除堆顶元素
top返回堆顶元素

  • 双端队列

ps:双端队列支持随机访问
一些函数:
frontback
push_back从队尾入队
push_front从队头入队
pop_back从队尾出队
pop_front从队头出队

  • set容器

一看就会のset详解
声明:

Here
set<int> s
multiset<int> mt

注意:set容器可存储long long double char string等多种类型
一些函数:
begin指向set起始位置
end指向set末尾
insert插入元素
erase删除元素(erase: v.擦除,消除,消去,抹去 ->eraser: n.橡皮擦)学好英文的重要性
clear清空set
find查找元素地址,元素不存在时返回末尾指针
lower_bound查找第一个不小于元素的地址,不存在时返回末尾指针

set的遍历
for(auto i:s){
	cout<<i<<endl;
}
  • multiset容器

大致与set类似,但其在删除时若有相同元素,只删除其中一个
例题

未完待续...

posted @ 2024-05-03 16:52  Mx_Gms  阅读(62)  评论(2)    收藏  举报