C++primer 关联容器

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中一个键所关联的元素必然相邻存放,因此找到第一个后,只要迭代器++,则能找到全部。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值