• STL中 map 和 multimap


    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)); 

  • 相关阅读:
    DOM官方文档学习总结
    python安装BeautifulSoup库解析HTML页面
    操作datatable数据
    aod.net连接字符串大全
    jqery对于select的操作
    希尔排序算法
    冒泡排序算法
    归并排序(分治法)
    随机函数
    【题解】LibreOJ #6279. 数列分块入门 3
  • 原文地址:https://www.cnblogs.com/roger9567/p/4889906.html
Copyright © 2020-2023  润新知