基本概念
map是(关键字,值)对的集合,例如,可以将一个人的名字作为关键字,将其电话号码作为值,我们可以将这个人的名字作为下标获取此人的电话号码。
set是(关键字)的简单集合,当只是想知道一个值是否存在时,set是最有用的。例如,一个企业可以定义一个名为bad_checks的set来保存那些曾经开过空头支票的人的名字。在接受一张支票前,可以查询bad_checks来查询顾客的名字是否在其中。
unordered_map和unordered_set外部实现与map和set相同,但是内部实现不同,set和map内部实现是基于RB-Tree,而unordered_set和unordered_map内部实现是基于哈希表(hashtable)。
操作
map、unordered_map的元素是pair, (map.insert(pair))
pair<T1,T2> p; 定义一个pair
pair<T1,T2> p(v1,v2); 定义一个pair,并初始化
make_pair(v1,v2);pair的类型从v1和v2的类型推断出来
p.first ;返回p的关键字v1
p.second;返回p的值v2
Leetcode练习:我的Leecode博客中的方法2
set、unordered_set常用方法
unordered_set<int/char/...> set;
set.find(x);定位到x的位置
set.insert(x);插入x
set.count(x);若set中存在x则返回1,不存在则返回0
打印set
for ( unordered_set<int/char/...>::iterator iter = set.begin(); iter !=set.end();iter++)
{
cout << *iter << endl;
}
Leetcode练习:我的Leetcode博客