multiset
multiset的插入、二分、迭代器写法
multiset 内部由平衡树实现
对 于 插 入 的 数 据 会 自 动 从 小 到 大 排 序 , 数 据 可 以 重 复
创建multiset
multiset<int>mp;
抹除数据
mp.erase(2)
创建一个迭代器用于for循环
multiset<int>::iterator it;(it是迭代器,名字可以随意起)
for(;it!=mp.end();it++)
cout<<(*it);
由于上面的it类似指针,打印出来需要加 *
multiset有自己专用的二分查找函数
multiset<int>::iterator it;
it=mp.lower_bound(x);
如代码所示,lower_bound返回第一个大于等于x的位置的迭代器
upper_bound同理
multiset的常用函数
multiset<int>::iterator it;
it=mp.begin();
it=mp.end();
其中begin()返回第一个位置的迭代器
但是end()函数返回的位置迭代器是开区间的
也就是如果你想得到最后一个位置的迭代器,需要:
multiset<int>::iterator it;
it=mp.end();
it--;//往回退一格即可