multiset:
multiset<int>s;
定義正向迭代器與正向遍歷:
multiset<int>::iterator it;
for(it=s.begin();it!=s.end();it++) {
printf("%d\n",(*it));
}
定義反向迭代器與反向遍歷:
multiset<int>::reverse_iterator rit;
for(rit=s.rbegin();rit!=s.rend();rit++) {
printf("%d\n",-(*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,時間復雜度未知,如果重復的個數過多可能會慢。