【C++ Primer】关联容器

本文深入探讨了关联容器中的pair类型和map、set数据结构的基本概念、初始化方式、操作方法、添加元素、查找与读取、删除元素及迭代遍历等核心内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

十、关联容器

1. pair类型

定义在utility头文件中


初始化:

pair<T1, T2> p1

pair<T1, T2> p1(v1, v2)

make_pair(v1, v2)


操作:

p1.first    p1.second



2. map类型

初始化:键类型必须支持 < 操作符

map<k, v> m

map<k, v> m(m2)

map<k, v> m(b, e)


类型: 

map<k, v>::key_type

******::mapped_type

******::value_type   一个pair类型,键类型为const类型 ,如pair<const string, int>类型

map迭代器解引用产生pair类型对象


添加元素:(同set)

下标操作访问map

map::insert(e)   e是m上的value_type类型,如果已经存在e.first,则不进行插入操作,返回值是一个pai类型对象,pair.first指向map中e.first迭代器,pair.second为bool,表示是否插入成功

map.insert(beg, end)  返回void

m.insert(iter, e)  返回迭代器


查找与读取:(同set)

map<stirng, int> word_count;

int occur = world_count["food"];   //如果map中不包含food,则插入food键,值为0

m.count(k)   返回键k的个数

m.find(k)     返回包含键的迭代器


multimap的查找,可以先用count计算数目,再用find读取迭代器,进而进行循环(同set)

也可以使用m.lower_bound(k) 与 m.upper_bound(k)来进行查找

更可以使用m.equal_range(k)来进行查找,返回一个pair,pair由两迭代器组成,分别是相关的第一个和最后一个迭代器


删除元素:(同set)

m.erase(k)  返回值size_type,表示删除的元素个数

m.erase(p)  p为迭代器

m.erase(b, e)


迭代遍历:

迭代器指向的元素按键的升序排列



3. set类型

不能使用set的迭代器对set的值进行更改,因为set的值属于键值,与map类似,键值不允许修改。但可以进行删除。

set<int>::iterator ite = iset.find(1);

*ite = 10 ; // 错误! 是只读类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值