首页 > 其他 > 详细

STL中 map 和 multimap

时间:2015-10-18 20:00:47      阅读:180      评论:0      收藏:0      [点我收藏+]

1. 所在头文件<map>. 命名空间std, 声明如下:

 1 namespace std{
 2     template <class Key,class T,
 3               class Compare = less<Key>,
 4               class Allocator = allocator<pair<const Key,T> > >
 5     class map;
 6     template <class Key,class T,
 7               class Compare = less<Key>,
 8               class Allocator = allocator<pair<const Key,T> > >
 9     class multimap;
10 }

  - key/value必须具备 assignable+copyable;  key 必须comparable

  - 元素的次序由key决定, 与value无关.

  - 可以把set/multiset视为特殊的map/multimap. 

  - 也是使用红黑树实现的.

2. map/multimap的构造/析构

1 map c;
2 map c(op);
3 map c1(c2);
4 map c(beg,end);
5 map c(beg,end,op);
6 c.~map();

3. 非变动性操作

1 c.size();
2 c.empty();
3 c.max_size();
4 各类算术运算

4. 查询操作

count(key);
find(key);
lower_bound(key);
upper_bound(key);
equal_range(key)

5. map 和multimap不提供元素直接存取, 因此元素存取通常由迭代器进行 , map提供 []操作符, 可以直接存取.

  - 在map/multimap的定义中可以看到 key是const的,保证了不会被破坏key, 也不会破坏已经排好序的元素. 

  - 如果要移除元素, 只能用它提供的成员函数.

  - find()只能针对key查找, 查找value可以用find_if() 或者直接遍历.

6. 使用value_type避免隐式类型转换

  -  coll.insert(std::map<std::string,float>::value_type("roger","21"));   value_type 是容器本身提供的类型定义. 

7. pair<>

  -  coll.insert(std::pair<std::string,float>("roger",21)); 

8. make_pair()算法函数

  -  coll.insert(std::make_pair("roger",21)); 

STL中 map 和 multimap

原文:http://www.cnblogs.com/roger9567/p/4889906.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!