multiset:
multiset<int>s;
定义正向迭代器与正向遍历:
multiset<int>::iterator it;
for(it=s.begin();it!=s.end();it++) {
printf("%d
",(*it));
}
定义反向迭代器与反向遍历:
multiset<int>::reverse_iterator rit;
for(rit=s.rbegin();rit!=s.rend();rit++) {
printf("%d
",-(*rit));
}
插入一个数x:
s.insert(x)
几种删除:
s.erase(v):删除值为v的所有元素。
s.erase(it):删除迭代器it处的元素。
也就是说可以用s.erase(s.find(v))来删除值为v的一个元素。
查找相关:
s.lower_bound(v):返回第一个大于等于v的迭代器指针。
s.upper_bound(v):返回第一个大于v的迭代器指针。
s.find(v):返回一个等于v的迭代器指针。如果不存在值等于v的元素,则返回s.end()
s.equal_range(v):返回值等于v的第一个迭代器和最后一个迭代器,左闭右开,如果不存在则返回两个s.end()
s.count(v):返回值等于v的元素个数,数据类型为unsigned longlong int,如果不存在返回0,时间复杂度未知,如果重复的个数过多可能会慢。