C++ Primer : 第十一章 : 关联容器之关联容器的迭代器和操作

本文介绍了C++中的关联容器,包括set和map的迭代器、添加元素、删除元素的操作。强调了关联容器的迭代器只允许读取,不能修改元素。详细阐述了insert方法的返回值使用,以及如何安全地通过at成员函数或下标操作访问元素。同时,提到了在map中使用find、lower_bound、upper_bound和equal_range函数来查找和管理元素。
摘要由CSDN通过智能技术生成

关联容器的操作


除了和顺序容器定义的类型之外,关联容器还定义了一下几种类型:


关联容器额外的类型别名
 key_type    此容器类型的关键字类型
mapped_type  每个关键字关联的类型,只 适用于map
value_type 对于set,与key_type相同
对于map,为pair<const key_type, mapped_type>


关联容器的迭代器

当解引用一个关联容器迭代器时,会获得一个类型为value_type的值的引用。对于map而言,value_type是一个pair,期first成员保存const关键字,second保存值
auto map_it = words.begin();

map_it->first = "new key"; // 错误:关键字是const的
++map->second;

一个map的value_type是一个pair,我们可以pair的值,但不能改变pair的关键字。


set的迭代器时const的:虽然set定义了iterator和const_iterator类型,但是两种类型都只允许只读set的元素,与不能改变map元素的关键字一样,set的关键字也是const的。


  • 关联容器和算法
我们通常不对关联容器使用泛型算法,因为set的关键字是const的,而map的元素pair的第一个成员也是const的。因此不能将关联容器传递给修改或重排元素的算法。
实际编程中,如果我们对一个关联容器使用泛型算法,要么把它当做一个源序列,要么当做一个目的位置。例如可以用copy算法将元素从一个关联容器拷贝到另一个序列,类似的,还可以调用inserter将一个插入器绑定到一个关联容器。


添加元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值