multiset set multimap map
#include <set> //使用multiset和set需要此头文件
可在增加和删除数据的基础上查找数据。
multiset用法
multiset<T> st;
定义了一个multiset变量st,st里面可以存放T类型的数据,并且能自 动排序。开始st为空
size() | 返回容器中元素的数目 |
empty() | 判断容器收为空 |
insert(elem) | 在容器中插入元素。 |
clear() | 清除所有元素 |
erase(pos) | 删除pos迭代器所指的元素,返回下一个元素的迭代器 |
erase(beg, end) | 删除区间[beg,end)的所有元素 ,返回下一个元素的迭代器 |
erase(elem) | 删除容器中值为elem的元素 |
find(key) | 查找键key是否存在,若存在,返回该键的元素的迭代器;若不存在,返回set.end() |
count(key) | 查找键key的元素个数 |
lower_bound(keyElem) | 返回最后一个key<=keyElem元素的迭代器 |
upper_bound(keyElem) | 返回第一个key>keyElem元素的迭代器 |
equal_range(keyElem) | 返回容器中key与keyElem相等的上下限的两个迭代器,这两个迭代器被放在对组(pair)中 |
分类: C/C++
multiset 上的迭代器
multiset<T>::iterator p;
p是迭代器,相当于指针,可用于指向multiset中的元素。访问multiset中的元素要通 过迭代器。
与指针的不同:
multiset上的迭代器可 ++ ,--, 用 != 和 == 比较,不可比大小,不可加减整数,不 可相减
multiset<T> st;
st.begin() 返回值类型为 multiset<T>::iterator, 是指向st中的头一个元素的迭代器
st.end() 返回值类型为 multiset<T>::iterator, 是指向st中的最后一个元素后面的迭代器
对迭代器 ++ ,其就指向容器中下一个元素,-- 则令其指向上一个元素
set 与multiset唯一的不同是set容器里不能有重复元素
#include <iostream>
#include <cstring>
#include <set>
using namespace std;
int main() {
set<int> st;
int a[10] ={ 1,2,3,8,7,7,5,6,8,12 };
for(int i = 0;i < 10; ++i)
st.insert(a[i]);
cout << st.size() << endl; //输出:8
set<int>::iterator i;
for(i = st.begin(); i != st.end(); ++i)
cout << * i << ","; //输出:1,2,3,5,6,7,8,12,
cout << endl;
pair<set<int>::iterator, bool>
result = st.insert(2); pair<set<int>::iterator, bool> 等于
struct { set<int>::iterator first;
if( ! result.second ) //条件成立说明插入不成功 bool second; };
cout << * result.first <<" already exists." << endl;
else
cout << * result.first << " inserted." << endl;
return 0;
}
输出: 2 already exists.