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

 namespace std{
template <class Key,class T,
class Compare = less<Key>,
class Allocator = allocator<pair<const Key,T> > >
class map;
template <class Key,class T,
class Compare = less<Key>,
class Allocator = allocator<pair<const Key,T> > >
class multimap;
}

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

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

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

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

2. map/multimap的构造/析构

 map c;
map c(op);
map c1(c2);
map c(beg,end);
map c(beg,end,op);
c.~map();

3. 非变动性操作

 c.size();
c.empty();
c.max_size();
各类算术运算

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",""));   value_type 是容器本身提供的类型定义.

7. pair<>

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

8. make_pair()算法函数

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

STL中 map 和 multimap的更多相关文章

  1. C++ STL中Map的按Key排序和按Value排序

    map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value.假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区 分),我们用map来进 ...

  2. STL中map与hash_map的比较

    1. map : C++的STL中map是使用树来做查找算法; 时间复杂度:O(log2N) 2. hash_map : 使用hash表来排列配对,hash表是使用关键字来计算表位置; 时间复杂度:O ...

  3. STL中map与hash_map容器的选择收藏

    这篇文章来自我今天碰到的一个问题,一个朋友问我使用map和hash_map的效率问题,虽然我也了解一些,但是我不敢直接告诉朋友,因为我怕我说错了,通过我查询一些帖子,我这里做一个总结!内容分别来自al ...

  4. C++ STL中Map的相关排序操作:按Key排序和按Value排序 - 编程小径 - 博客频道 - CSDN.NET

    C++ STL中Map的相关排序操作:按Key排序和按Value排序 - 编程小径 - 博客频道 - CSDN.NET C++ STL中Map的相关排序操作:按Key排序和按Value排序 分类: C ...

  5. C++中的STL中map用法详解(转)

    原文地址: https://www.cnblogs.com/fnlingnzb-learner/p/5833051.html C++中的STL中map用法详解   Map是STL的一个关联容器,它提供 ...

  6. C++ STL中Map的按Key排序跟按Value排序

    C++ STL中Map的按Key排序和按Value排序 map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value.假如存储学生和其成绩(假定 ...

  7. stl中map的四种插入方法总结

    stl中map的四种插入方法总结方法一:pair例:map<int, string> mp;mp.insert(pair<int,string>(1,"aaaaa&q ...

  8. C++ STL 中 map 容器

    C++ STL 中 map 容器 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处理能力,由于这个特性,它 ...

  9. STL中map的使用

    知识点 C++中map提供的是一种键值对容器,里面的数据都是成对出现的.map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的. ...

随机推荐

  1. STM32=LWIP

    https://blog.csdn.net/zouw96/article/details/8443141

  2. mysql 数据库 自动截取数据的问题---mysql的sql_model的四种模式:宽松模式、严格模式

    mysql支持的sql_mode模式:ANSI.TRADITIONAL.STRICT_ALL_TABLES和STRICT_TRANS_TABLES. ANSI模式:宽松模式,对插入数据进行校验,如果不 ...

  3. mac 第一次安装mysql 5.7.12 不知道root 密码的解决办法

    搞了2个晚上,这个必须记录一下 1.    先从系统偏好设置里 把 mysql 停掉 2.    打开mac 命令行工具,sudo su 以管理员身份运行命令 3.    cd /usr/local/ ...

  4. FBVector

    folly/FBVector.h Simply replacing std::vector with folly::fbvector (after having included the folly/ ...

  5. CentOS 7 创建桌面快捷方式

    一,在桌面新建一个文件 文件名随意,但必须带有.desktop的后缀名, 以Eclipse为例 vi /home/lenmom/Desktop/eclipse.desktop 其中: lenmom 是 ...

  6. 如何将字符串去重复demo工具

    //方法一:使用集合的indexOf方法 public static void one(){ String string="aaaaaakkkkkkmnf";//需去重复的字符串s ...

  7. Julia - 复合表达式

    复合表达式是用一个表达式按照顺序对一系列子表达式求值,并返回最后一个子表达式的值 有两种方法:begin 块和 “;” 链 begin 块 begin 块的多行写法 julia> a = beg ...

  8. Shift Operations on C

    The C standard doesn't precisely define which type of right shift should be used. For unsigned data, ...

  9. awk查看接口耗时情况

    +1:LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Ag ...

  10. django之jquery完成ajax

    使用Ajax 使用视图通过上下文向模板中传递数据,需要先加载完成模板的静态页面,再执行模型代码,生成最张的html,返回给浏览器,这个过程将页面与数据集成到了一起,扩展性差 改进方案:通过ajax的方 ...