C++ STL常用容器用法
前言:近些天看题解总是看到一些容器的用法搞不明白,
比如优先队列为什么写成priority_queue<int,vector<int>,greater<int> > q;
自己对于某些容器还是很陌生,于是翻开了《算法笔记》学习一下。
一、set的使用方法
set(集合)是一个内部自动有序的不含重复元素的容器。
可以用来去掉重复元素。
1、set的定义
单独定义一个set:
set<int> name;
定义一个set数组:
set<int> a[100];
2、对set容器内元素的访问
set只能通过迭代器访问。
set<int>::iterator it;
除去vector和string的容器都不支持通过*(it + i)
的方式访问。
set也不支持it < st.end()
的写法。
3、set的常用函数
insert(); find(); erase(); size(); clear();
4、延伸
set中的元素是唯一的,如果要处理不唯一的情况,则需要使用multiset。
C++ 11中还添加了unordered_set,以散列表来代替set內部的红黑树实现,可以处理只去重但不排序的需求,速度比set快得多。
二、map的使用方法
map(映射)任意两种基本类型之间的映射。
map<typename1, typename2> mp;
第一个是键的类型,第二个是值的类型