• Chapter11(关联容器)--C++Prime笔记


    1.关联容器:
    map关键字-值对,经常被称为关联数组
    set中每个元素只有一个关键字,即只保存关键字的容器
    ①允许重复的关键字的容器名字都包含multi。
    ②不保持关键字顺序存储的容器的名字都以但粗unordered开头。
    ③无序容器以哈希函数来组织元素。
    ④关联容器的迭代器都是双向的。
    map   set    multimap    multiset    / 无序集合   unordered_map  unordered_set     unordered_multimap    unordered_multiset.

    2.使用map:map <string,size_t>word_count;
    ①指定关键字和值的类型
    ②map所使用的pair用first成员保存关键字,用second成员保存对应的值
    使用set:set<string> exclude = {"the","but"};
    exclude.find(word)返回一个迭代器,如果关键字在set中,迭代器指向该关键字,否则返回尾后迭代器。

    3.map中的元素的pair类型的,这种类型定义在头文件utility中。
    pairde的数据成员是public的。

    4.关联容器额外的类型别名:
    key_type:此容器类型的关键字类型
    mapped_type:每个关键字关联的类型;只适用于map
    value_type:对于set与key_type相同
    对于map,为pair<const key_type,mapped_type>
    map和set关键字是const的

    5.当使用一个迭代器历遍一个map,multimap,set,multiset时,迭代器按关键字升序历遍元素。

    6.向map和和向multimap,multiset添加元素的区别:
    ①前者只能添加不存在的元素。
    ②前者返回pair<std:map::value_type,bool>,后者返回指向新元素的迭代器。

    7.set和multimap,unordered multimap不支持小标运算符。
    对于map来说,如果使用一个不在容器中的关键字作为下标,会添加一个具有此关键字的元素到map中。但是如果使用at函数,若关键字不存在,抛出一个out_of_range异常。
    ①对map进行下标操作时,会获得一个mapped_type对象,但当解引用一个map迭代器时,会得到一个value_type对象。
    ②下标和at操作只适用于非const的map和unordered_map

    8.
    c.lower_bound(k)返回一个迭代器,指向第一个关键字不小于k的元素(指向第一个具有给定关键字的元素)
    c.upper_bound(k)返回一个迭代器,指向第一个关键字大于k的元素(指向最后一个匹配给定关键字的元素之后的位置)--如果lower_bound(k)和upper_bound(k)返回相同迭代器,则说明不存在这个关键字。
    c.equal_range(k)返回一个迭代器pair,表示关键字等于k的元素的范围,若k不存在,pair的两个成员均等于c.end();


    9.getline不会跳过前导空格。


  • 相关阅读:
    Python 魔法方法
    使用PHP7来批量更新MangoDB数据
    git 小乌龟安装教程
    webpack初学者(1)
    移动端与PC端的触屏事件
    解决onclick事件的300ms延时问题
    尺寸单位em,rem,vh,vw
    ngRoute 与ui.router区别
    angular.js的依赖注入解析
    ionic的基础学习(第一篇)
  • 原文地址:https://www.cnblogs.com/LyndonMario/p/9326160.html
Copyright © 2020-2023  润新知