pair<T1,T2>P1;
pair<T1,T2>p1(v1,v2);//v1为T1类型,v2为T2类型
make_pair(v1,v2);//返回一个pair对象
p.first;
p.second;
关联容器不能通过容器大小定义,不能用resize。
map<k,v>m(m2);
map<k,v>m;
map<k,v>m(b,e); //b,e为map迭代器。
键必须支持<。
map<k,v>::value_type为pair类型 const key_type mapped_type
map<k,v>::mapped_type 为键关联的值类型
map<k,v>::key_type 为键类型
map添加元素比较简便。类似下标就可。
如map<string,int>word;
word["a"]=1;//insert(make_pair("a",1);
word["a"]返回一个关联值
因此可以用map方便记录单词出现的次数。
map<string,int>word_count;
string word;
while(cin>>word)
{
word_count[word]++;
}
map的insert
m.insert(e); //e为pair 返回一个e的一个迭代器和bool判断是否成功插入
m.insert(beg,end);//返回void
m.insert(iter,e); //iter为辅助,返回迭代器,指向m中具有特定键的元素
m.count(k); //返回m中k的出现次数
m.find(k); //是否存在按k索引的元素,返回元素迭代器
m.erase(k);//删除键为k的元素。返回size_type类型,表示删除的元素个数。
m.erase(p);//删除迭代器p所指的元素,返回void
m.erase(b,e); //删除b,e的元素返回void
map可以作为单词转换,电话簿,字典。
set不支持下标操作符,
insert(key); //返回pair <iterator ,bool >;
set可以帮map忙记录单词排除的集。
multimap 不支持下标运算。
insert总会加元素。erase会删除所有符合的元素,返回删除个数。
在multimap中一个键所关联的元素必然相邻存放,因此找到第一个后,只要迭代器++,则能找到全部。