在C++ 中定义了几种类型用来表示容器关键字和值的类型。
key_type mapped_type value_type
对于set,由于保存的值就是关键字,所以,key_type和value_type是一样的。set的迭代器是const的!
对于set,find调用返回的是一个迭代器,如果我们所给定的关键字在set中的时候,迭代器就指向该关键字,否则,find返回尾后迭代器。
在一个map中,元素是键值对,即每个元素就是一个pair对象。值得注意的是,key_type是关键字类型,value_type是pair类型,
mapped_type才是关键字关联的值的类型!
map<int,string>::key_type v //int
map<int,string>::value_type v1 //pair<int,string>
map<int,string>::mapped_type v2 //string
set<string>::key_type v3 //string
set<string>::value_type v4 //string
关联容器的查找
对于有序关联容器 map set
map: 下标或者find
map<string,int>mapp;
mapp["one"] = 1;
cout<<mapp["one"]<<endl;
set:
set和map一样,find调用返回的是一个迭代器,如果我们所给定的关键字在set/map中的时候,迭代器就指向该关键字,否则,find返回尾后迭代器。
if(mapp.find("one") == mapp.end())
cout<<"one is not found !"<<endl;
multimap或者multiset
调用find 返回的是该关键字指向的第一个元素(一个关键字可能对应于很多的元素值),可以遍历这些元素值,全部打印输出。
multimap<string,string>authors;
/*导入数据*/
string search_item("yanghang");
auto entries = authors.count(search_item);
auto iter = authors.find(search_item);
while(entries)
{
cout<<iter->second<<endl;
++iter;
--entries;
}