博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STL中 map 和 multimap
阅读量:5127 次
发布时间:2019-06-13

本文共 1210 字,大约阅读时间需要 4 分钟。

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

1 namespace std{ 2     template 
, 4 class Allocator = allocator
> > 5 class map; 6 template
, 8 class Allocator = allocator
> > 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)); 

转载于:https://www.cnblogs.com/roger9567/p/4889906.html

你可能感兴趣的文章
3月29日AM
查看>>
利用IP地址查询接口来查询IP归属地
查看>>
HTML元素定义 ID,Class,Style的优先级
查看>>
构造者模式
查看>>
http和https的区别
查看>>
Hbuild在线云ios打包失败,提示BuildConfigure Failed 31013 App Store 图标 未找到 解决方法...
查看>>
找到树中指定id的所有父节点
查看>>
今天新开通了博客
查看>>
AS3优化性能笔记二
查看>>
ElasticSearch(站内搜索)
查看>>
4----COM:a Generative Model for group recommendation(组推荐的一种生成模型)
查看>>
UVA 11137 - Ingenuous Cubrency
查看>>
js阻止事件冒泡的两种方法
查看>>
Java异常抛出
查看>>
[SQL Server 系] T-SQL数据库的创建与修改
查看>>
74HC164应用
查看>>
变量声明和定义的关系
查看>>
Wpf 之Canvas介绍
查看>>
linux history
查看>>
jQuery on(),live(),trigger()
查看>>