映射---map
写出一些代码,在一个(名字,号码)对的表中寻找一个名字,这也是一件很讨厌的事情。除此之外,线性检索一般也是相当低效的,除非对于特别短的表。另有一些数据结构直接支持插入、删除和基于值的检索,标准库特别为此提供了 map
类型。map
就是值的对偶的容器。例如,
map<string, int> phone_book;
在其他一些地方,人们也把 map
称做关联数组或者字典。
在用它的第一个类型(称为关键码)的某个值去索引时,map
将返回其第二个类型的(称为值类型,或者映射类型)的对应值。例如,
void print_entry(const string& s)
{
if(int i = phone_book[s]) cout << s << ' ' << i << '\n';
}
如果对于某个关键码 s
无法找到匹配,phone_book
将返回一个默认值。map
里对整数类型的默认值是 0
。这里我实际上假定了 0
不是一个合法的电话号码。
🔚