zoukankan      html  css  js  c++  java
  • map/multimap_01

    标准的关联式容器

    键值对序列

    基于key的快速检索能力

    key按序排列,按序插入

    红黑树变体的平衡二叉树

    对key来说支持 mapT[key] 和 mapT.at(key)

    multimap 不支持 multimapT[key] 和 multimapT.at(key)

    A、头尾 添加/移除

    B、随机存取

    C、数据存取

    1、构造函数

      1.1、默认构造函数 ==> 无参构造函数

      1.2、必定需要 复制构造函数 :map<T1,T2> mapTT(const map<T1,T2>& mapTT02);

    2、赋值

      2.1、重载"="操作符

          map& = const map& map1;

    3、迭代器操作

      3.1、const_iterator map<T>::begin();  // 第1个

      3.2、const_iterator map<T>::end();  // 最后1个

      3.3、const_reverse_iterator map<T>::rbegin();  // 倒数第1个

      3.4、const_reverse_iterator map<T>::rend();  // 倒数最后1个

    4、插入

      4.1、std::pair<map<T1,T2>::iterator, bool> pairA = map::insert(pair<T1,T2>(key, value));

      4.2、std::pair<map<T1,T2>::iterator, bool> pairB = map::insert(map<T1,T2>::value_type(key, value));

      4.3、mapTT[key1] = value1;  性能问题

        先查找有无主键为 key1的项

         --> 无

           --> 新建 主键为key1 值为value1 的项  初始化值的对组,插入map中

         --> 有

           --> 原来的 mapTT[key1] ,将值改为 value1

    5、删除

      void map::clear();
      iterator map::erase(const_iterator beg, const_iterator end); // [beg, end)区间,返回下一个元素的位置
      iterator map::erase(const_iterator pos);           // 返回下一个元素的位置

      size_type map::erase(key_type keyElem);  // 删除 容器中 key为keyElem的对组。返回的是删掉的个数?

    6、交换

      void map<T>::swap(map<T>&);

    7、大小

      size_type map<T>::size();
      bool map<T>::empty();

    8、查找

      iterator map::find(key);  // 查找key是否存在。存在:返回元素迭代器;不存在:返回map::end() 

      size_type map::count(key_type keyElem);  // 返回容器中key为keyElem的对组个数

      iterator map::lower_bound(key_type keyElem);  // 返回第一个key>=keyElem元素的迭代器

      iterator map::upper_bound(key_type keyElem);  // 返回第一个key>keyElem元素的迭代器

      std::pair<map<T1,T2>::iterator, map<T1,T2>::iterator> pair01 = mapTT.equal_range(key_type keyElem); // 返回容器中 key为keyElem的区间。上限是闭区间,下限是开区间。如[beg, end)

  • 相关阅读:
    你真的会玩SQL吗?让人晕头转向的三值逻辑
    SQL Server 索引维护:系统常见的索引问题
    MySQL Proxy 实现 MySQL 读写分离提高并发负载
    php 处理上百万条的数据库如何提高处理查询速度
    sql事务(Transaction)用法介绍及回滚实例
    数据库update的异常一例
    使用Java正则表达式提取字符串中的数字一例
    JodaTime library not available
    java web中日期Date类型在页面中格式化显示的三种方式
    深入剖析js命名空间函数namespace
  • 原文地址:https://www.cnblogs.com/cppskill/p/5412345.html
Copyright © 2011-2022 走看看