编写程序在一个(名字,数值)对的列表中查找给定名字,是一项很烦人的工作。而且,除非列表很短,否则顺序搜索是非常低效的。标准库提供了一个名为map的搜索树(红黑树):
在某些情境下,map也被称为关联数组或字典。map通常用平衡二叉树实现。
标准库map(见31.4.3节)是值对的容器,经过特殊优化来提高搜索性能。我们可以像初始化 vector和st那样来初始化map(见4.4.1节和4.4.2节):
map<Entry> phone_book={{"David Hume",123456},{"Karl Poppe",123456},{"breafas sdas",456789}};
map也支持下标操作,给定的下标值应该是map的第一个类型(称为关键字,key),得到的结果是与关键字关联的值(是map的第二个类型,称为值或映射类型)。例如:
int get_number(const string& s){return phone_book[s];}
换句话说,对map进行下标操作本质上是进行一次搜索,我们称为 get_number()。如果未找到key,则向map插入一个新元素,它具有给定的key且关联的值是vaue类型的默认值。在本例中,整数类型的默认值是0,恰好是我用来表示无效电话号码的值。
如果我们希望避免将一个无效号码添加到电话簿中,就应该使用fnd()和Inser()来代替[](见31.4.3.1节)。
