set类型
map容器是键值对的集合,set容器只是单纯的键的集合。
#include <set>
set容器的定义和使用:
set容器的每个键都只能对应一下元素。
eg:vector<int> ivec;
for(vector<int>::size_type i=0;i !=10;++i) {
ivec.push_back(i);
ivec.push_back(i);
}
set<int> iset(ivec.begin(),ivec.end());
cout << ivec.size() << endl;
cout << iset.size() << endl;
在set中添加元素
set<string> set1;
set.insert("the");
set1.insert("and");
set<int> iset2;
inset2.insert(ivec.begin(),ivec.end());
从set中获取元素
count的返回值只能是1(元素存在)或0(元素不存在);
iset.find(1)
iset.count(1)
正如不能修改map中元素的键部分一样,set中的键也为const。
eg: set<int>::iterator set_it = iset.find(1);
*set_it = 11; //error:keys in a set are read-only
cout << *set_it << endl; //ok:can read the key
multimap和multiset类型
map和set容器中,一个键只能对应一个实例,而multiset和multimap类型则允许一个键对应多个实例,不支持下标运算。
元素的添加和删除
eg:authors.insert(make_pair(string("Barth,John"),string("So-weed Factior")));
authors.insert(make_pair(string("Barth,John"),string("Lost in the Funhouse")));
删除eg:
multimap<string,string> authors;
string search_item("Kazuo Ishiguro");
multimap<string,string>::size_type cnt = authors.erase(search_item);