STL小记——set/multiset、map/mutlimap
set:
- 所有元素在插入时自动排序;
- 关联式容器;
- 底层结构——二叉树;
set——不允许有重复元素
multiset——允许容器中有重复元素
构造:
set<T> st;
set(const set &st);
赋值:
set& operator=(const set &st);
插入:
只有insert()
删除:
clear();
erase(pos);
erase(begin,end);
erase(ele); //相当于list中的remove(ele);
set大小操作:
empty();
size();——不支持resize()
交换:
swap(st);
查找:
find(key); //查找key是否存在,存在,返回该元素的迭代器;不存在,返回set.end();
统计:
count(key); //统计key的元素个数——要么是0,要么是1
修改set容器排序:
class compare
{
public:
bool operator()(int v1,int v2) const
{
return v1>v2; //从大到小排序
}
};
set<int, compare> s2; //此时的排序规则由从小到大变为从大到小排序
set中使用自定义数据类型时必须通过仿函数(class)指定排序规则
map:
- 所有元素都是pair(成对的——<key,value>)
- map中所有元素根据key自动排序(从小到大)
- 关联式容器,底层结构:二叉树
- 可以根据key值快速找到对应的value
- 不存在重复数据(multimap可以存放重复数据)
构造:
map(T1, T2) mp;
map(cosnt map &mp);
赋值:
map& operator=(const map &mp);
key=(*it).first;value=it->second;
插入:
insert(pair<T1, T2>(n1, n2));
删除:
clear();
erase(pos);
erase(begin,end);
erase(key);
大小操作:
empty();
size();
交换:
swap(st);
查找:
find(key); //查找key是否存在,存在, 返回该键的迭代器;不存在,返回set.end();
统计:
coutn(key); //统计key的元素个数,要么为0,要么为1(map中不允许有重复元素)
排序:
自定义排序规则——仿函数(class),map<int,int,仿函数>

浙公网安备 33010602011771号