zoukankan      html  css  js  c++  java
  • C++ Primer 随笔 Chapter 10 关联容器

    1.关联容器的类型:map(键-值对的集合,可理解为关联数组), set(单纯的键的集合), multimap(一个键对应多个值,键唯一), multiset(相同键可以是多个)。

    2.pair类型提供的操作:

        a. pair(T1, T2) p1; 创建一个空的pair对象,它的两个元素分别是T1和T2类型,采用值初始化。

        b. pair(T1, T2) p2;创建一个pair对象,它的两个元素分别是T1和T2类型,其中first初始化为v1,second初始化为v2

        c. make_pair(v1,v2);  以v2和v1创建一个新的pair对象

        d. p1 < p2两个pair对象之间的小于运算,先比较第一个再比较第二个

        e. p1 == p2如果两个pair对象first和second成员相等,则这两个对象相等。该运算使用元素的 ==操作符

        f . pq.first :返回p中名为first的公有数据成员,p.second :返回p的名为second的共有数据成员

    3. ,map对象的定义:

        a. map<k, v> m创建一个名为m的空map对象,其键和值的类型分别为k和

        b. map<k, v> m(m2)创建m2的副本,m与m2必须有相同的键值类型

        c. map<k, v> m(b,e)创建map类型的对象m,存储迭代器b和e标记的范围内所有元素的副本。元素类型必须能转换为pair<const k, v>

    4. map定义的类型

        a. map<k,v> :: key_type 在 map容器中,做索引键的类型

        b. map<k,v> :: mapped_type 在map容器中,键所关联的值的类型

        c. map<k,v> :: value_type 一个pair类型,它的first元素具有const map<k,v>::key_type类型,而second元素则为 map<k,v>::mapped_type类型   

    5.给map类型添加元素

        a. 使用下标访问map对象:

          1 map <string , int>  word_count;//empty map
          2 //insert default initialzed element with key Anna;them assign 1 to its value
          3 word_count["Anna"] = 1;

         以上代码将发生以下事情:

            (1)在word_count中查找键为 Anna的元素,没有找到

            (2)将一个新的键值插入到word_count中,他的键是const string类型的对象,保存Anna。而它的值则采用值初始化,这就意味着在本例中值为 0.

            (3)将这个新的键值对插入到word_count中。

            (4)读取新插入的元素,并将它赋值为1。

        b. map::insert的使用

            (1) m.insert(e); e是一个在m上的alue_type类型的值。如果键(e.first)不再m中,则插入一个值为e.second的新元素;如果该键在m中则m保持不变,该函数返回一个

               pair类型对象,包含只想键e.fitst的元素的map迭代器,以及一个bool类型,表示是否插入了该元素.

            (2) m.insert(beg,end) beg和end是标记元素范围的迭代器,其中的元素必须为m.value_type类型的键值对,对于该范围内所有三元素

            (3) m.insert(iter,e) e是一个用在m上的value_type类型的值,如果键不在m中,则创建新元素,并以迭代器iter为起点搜索新元素存储的位置。返回一个迭代器,指           向m中具有给定键的元素

    6.查找并读取map中元素

        a. m.count(k): 返回m中k的出现次数,map中只可能是0或者1

        b. find(k)       : 如果存在则返回迭代器,如果不存在返回超出末端迭代器

    7.从map对象中删除元素

        a. m.erase(k)  : 删除m中键为k的元素,返回size_type类型的值,表示删除元素的个数

        b. merase(p)   :从m中删除迭代器p所指向的元素。p必须指向m中确实存在的元素,而且不能等于m.end。返回oid类型

        c. m.erase(b,e):删除b和e标记的一段元素,返回void

    8.set、multimap、multiset添加、删除和查找操作:

        a. 添加:insert(k) set:重复的只会插入一次,而multimap、multiset会添加多次

        b. 删除:erase(k) set:删除k元素,multimap、multiset可能会删除多个k匹配的元素

        c. 查找:find(),cout()分别返回元素的位置和元素的个数

        d. multimap和multiset特有的

            (1) m.lower_bound(k)返回一个迭代器,指向键不小与k的第一个元素

            (2) m.upper_bound(k)返回一个迭代器,指向键大于k的第一个元素

            (3) m.equal_range(k)返回一个pair类型,pair的first成员等价与lower_bound(k),而second成员则等价于upper_bound(k)成员

  • 相关阅读:
    《DSP using MATLAB》Problem 6.17
    一些老物件
    《DSP using MATLAB》Problem 6.16
    《DSP using MATLAB》Problem 6.15
    《DSP using MATLAB》Problem 6.14
    《DSP using MATLAB》Problem 6.13
    《DSP using MATLAB》Problem 6.12
    《DSP using MATLAB》Problem 6.11
    P1414 又是毕业季II
    Trie树
  • 原文地址:https://www.cnblogs.com/zhuwbox/p/3320942.html
Copyright © 2011-2022 走看看