STL难记忆却常用的用法集合(持续更新中)
1、set集合
(1)插入用insert()
(2)将原本无序的元素插入 set 集合,set 内部的元素自动递增排序,且去除了重复元素
适合想要去除重复,又想要默认升序的。
但是set的循环是要用迭代器的,输出数字时还要在前面加*,因为迭代器本身是地址
for(set<int>::iterator it = s.begin();it!=s.end();it++){cout<<*it;
}
2、map遍历
map也会根据键的顺序来自动排序从小到大,键的类别必须是可以比较大小的
map跟set遍历方法相似,都是map是映射,一对一的关系,所以稍微有点不同。
it->first指的是第一个值,也就是关键字,key
it->second植的是第二个值,也就是关键字对应的值
map<string,int>mp;
for(map<string,int>::iterator it=mp.begin();it!=mp.end();it++){if(it->second==1){cout<<it->first<<" ";}}
3、map的删除,指定删除某个数
map<int,int>num;
auto it=number.find(num);
number.erase(it);
4、查找某个数是否在map里面,就是看存不存在
map<int,int>number;
auto it=number.find(num);
if(it!=number.end()){//如果不为最后一个指针+1//那么就是存在的//存在就删除number.erase(it);
}
4、给vector排序
sort(v.begin(),v.end());
5、栈入栈
stack<int>s;
s.push(1);
5、删除栈顶元素
s.pop();
6、取栈顶元素
s.top();
7、队列入队
queue<int>q;
q.push(3);
8、队列出列,删除队首元素
queue<int>q;
q.pop();
9、双端队列
入队
deque<int>dq;
dq.push_back(x);
dq.push_front(x);
10、删除队列队头队尾
dq.pop_back();
dq.pop_front();
11、删除队列的某一个元素
dq.erase(iterator it);
//删除某个迭代器
12、清空队列
dq.clear();
13、优先队列
优先队列,默认大根堆,就是每次从中取到的都是最大的元素
priority_queue<int> pq; // 默认大根堆, 即每次取出的元素是队列中的最大值
priority_queue<int, vector<int>, greater<int>> q; // 小根堆, 每次取出的元素是队列中的最小值
q.top();
q.push();
q.pop();
q.size();
(持续更新中)
这里是红糖,记录我的小白成长史。
如果觉得对你有帮助的话可以点个赞,点个关注,创作不易,请多多支持。
我们下篇文章见!!