c++ 的 map 中通过 key 获取 value 的方法
一般是 value =map[key], 或者另一种迭代器的方式
1, 在 map 中, 由 key 查找 value 时, 首先要判断 map 中是否包含 key.
2, 如果不检查, 直接返回 map[key], 可能会出现意想不到的行为. 如果 map 包含 key, 没有问题, 如果 map 不包含 key, 使用下标有一个危险的副作用, 会在 map 中插入一个 key 的元素, value 取默认值, 返回 value. 也就是说, map[key] 不可能返回 null.
3,map 提供了两种方式, 查看是否包含 key,m.count(key),m.find(key).
4,m.count(key): 由于 map 不包含重复的 key, 因此 m.count(key) 取值为 0, 或者 1, 表示是否包含.
5,m.find(key): 返回迭代器, 判断是否存在.
6, 对于下面的场景, 存在 key 就使用, 否则返回 null,
有下面两种写法:
- if(m.count(key)>0)
- {
- return m[key];
- }
- return null;
- iter = m.find(key);
- if(iter!=m.end())
- {
- return iter->second;
- }
- return null;
这里需要注意: 前一种方法很直观, 但是效率差很多. 因为前面的方法, 需要执行两次查找. 因此, 推荐使用后一种方法.
7, 对于 STL 中的容器, 有泛型算法 find(begin,end,target) 查找目标, map 还提供了一个成员方法 find(key)
来源: http://www.bubuko.com/infodetail-2775772.html