标准模板库(STL)之 map 列传 (二)
2016-02-29 21:21
309 查看
标准模板库(STL)之 map 列传
map 容器的遍历
修改 key or value
实用的成员函数
下标 vs at
其中 elem 是个 reference,指向“容器 coll 中目前正被处理的元素”,因此 elem 的类型是
以迭代器访问元素(C++11之前必须使用这种方法)
不过如果 value 本身的类型并非 const,修改其值自然没有问题:
(2)c.find(val):最终取返回迭代器 ite 的 second 成员变量
(2)c.at(key):返回 key 对应的 value,如果不存在于容器中,则会抛异常;如下图:
map 容器的遍历
修改 key or value
实用的成员函数
下标 vs at
map 容器的遍历
使用 range-based for 循环访问 map 元素(C++11之后方支持)std::map<std::string, float> coll; ... for (auto elem&: coll) std::cout << "key: " << elem.first << "\t" << "value: " << elem.second << std::endl;
其中 elem 是个 reference,指向“容器 coll 中目前正被处理的元素”,因此 elem 的类型是
pair<const std::string, float>。表达式
elem.first取得元素的
key,表达式
elem.second自然取得元素的 value。
以迭代器访问元素(C++11之前必须使用这种方法)
std::map<std::string, float>::iterator pos; for (pos = coll.begin(); pos != coll.end(); ++pos) std::cout << "key: " << pos->first << "\t" << "value: " << pos->second << std::endl;
修改 key or value?
如果你尝试改变元素的 key,会在编译器即引发错误:elem.first = "hello"; // ERROR at compile time pos->first = "hello"; // ERROR at compile time
不过如果 value 本身的类型并非 const,修改其值自然没有问题:
elem.second = 13.5; pos->second = 13.5;
实用的成员函数
(1)c.count(val):返回”key 为 val”的元素的个数(2)c.find(val):最终取返回迭代器 ite 的 second 成员变量
下标 vs at
(1)c[key]:返回 key 对应的value,如果存在于该容器;安装这一key value 对,如果尚未存在于容器内;(2)c.at(key):返回 key 对应的 value,如果不存在于容器中,则会抛异常;如下图:
相关文章推荐
- linux系统常用命令
- hdu1281二分图匹配
- Android SwipeActionAdapter结合Pinnedheaderlistview实现复杂列表的左右滑动操作
- 谈话的力量
- QT5+VS2012配置
- 谈话的力量
- Android SwipeActionAdapter结合Pinnedheaderlistview实现复杂列表的左右滑动操作
- 韩顺平XML学习2
- lucene-Field.Store解析
- Objective-C self = [super init]理解
- 微信红包算法探究
- Swift之初体验
- android中网络请求库volley的使用
- awk学习 【转】
- C++: 避免cout删除小数中0的操作
- Roman to Integer
- 微信商户发放红包接口调试经验总结
- R语言学习:数据结构4-列表
- 深入理解数据库日志系统原理
- Apache Benchmark测试工具