zoukankan      html  css  js  c++  java
  • 关联容器 // append方法

    关联容器顺序容器的差别在于:关联容器通过键(key)存储和读取元素,而顺序容器则通过元素在容器中的位置顺序存储和访问元素。

    1、关联容器支持通过键来高效地查找和读取元素。两个基本的关联容器类型是map和set。map中的元素以键—值对的形式组织:键用作元素在map中的索引,而值则表示所存储和读取的数据。set仅包含一个键,并有效地支持关于某个键是否存在的查询。

    【注】关联容器中“容器元素根据键的次序排列”这一事实就是一个重要的结论:在迭代器遍历关联容器时,我们可以确保按键的顺序访问元素,而与元素在容器中的存放位置完全无关。

    2、关联容器类型

    map           关联数组,元素通过键来存储和读取;                   适用于需要存储乃至修改每个键所关联的值的情况

    set             大小可变的集合,支持通过键实现和快速读取                  可以存储不同值的集合

    multimap    支持同一个键多次出现的map类型                          

    multiset      支持同一个键多次出现的set类型

    3、与关联容器相关的一个标准库类型——pair类型,

    pair是一种模板类型,以下是pair类型提供的操作

    pair<T1,T2> p1;     创建一个空的pair对象,它的两个元素分别是T1和T2类型,采用值初始化
    pair<T1,T2> p1(v1,v2);     创建一个pair对象,它的两个元素分别是T1和T2类型,其中,first成员初始化为v1,而second成员初始化为v2.
    make_pair(v1,v2)     以v1和v2值创建一个新的pair对象,其元素类型分别为v1和v2的类型
    p1<p2     两个pair对象之间的小于运算,其定义遵循字典顺序:如果p1.first<p2.first或者!(p2.first<p1.first)&&p1.second<p2.second,则返回true
    p1==p2     如果两个pair对象的first和second成员依次相等,则这两个对象相等
    p.first     返回p中名为first的(公有)数据成员
    p.second     返回p的名为second的(公有)数据成员

    4、map类型(map是键——值对的集合)

    1)、map对象的定义

    map < string, int > word_count;

    这个语句定义了一个名为word_count的map对象,由string类型的键索引,关联的值则为int型。

    【注】在实际应用中,键类型必须定义<操作符,而且该操作符应能“正确地工作”这一点很重要。

    2)map定义的类型

    map对象的元素是键——值对,也即每个元素包含两个部分:键以及由键关联的值。

    map类定义的类型如下:

    map < K, V>::key_type     在map类型中,用作索引的键的类型
    map < K, V>::mapped_type     在map容器中,键所关联的值的类型
    map < K, V>::value_type     一个pair类型,它的first元素具有const map<K,V>::key_type类型,而second元素则为map<K,V>::mapped_type类型

    【注】对map迭代器进行解引用将产生pair类型的对象;map<string,int>::key_type 其实就是string类型,用这种方法可以用map类型来定义额外的数据类型

    3)、用insert成员给map容器添加元素

    4)、使用下标访问map对象

    使用下标访问map: 用下标访问不存在的元素将导致在map容器中添加一个新的元素,它的键即为该下标值。

    【注】1、下标操作符返回一个mapped_type类型的值

    5)map::insert的使用

    map容器提供的insert操作:

    m.insert(e)     e是一个用在m上的value_type类型的值,如果键e.first不在m中,则插入一个值为e.second的新元素;如果该建在m中已存在,则保持m不变。
    此函数返回一个pair类型的对象,包含指向键为e.first的元素的map迭代器,以及一个bool类型的对象,表示是否插入了该元素。 m.insert(beg,end) beg和end是标记元素范围的迭代器,其中的元素必须为m.value_type类型的键——值对。对于该范围的迭代器,如果它的键在m中不存在,则将该键及其关联的值插入到m中,返 回void类型 m.insert(iter,e)
    e是一个用在m上的value_type类型的值,如果键e.first不在m中,则插入一个值为e.second的新元素;并以迭代器iter为起点搜索新元素存储的位置。返回一个迭代器,指向m 中具有给定键的元素
    
    

    6)、查找并读取map中的元素

    m.count(k)    返回m中k的出现次数
    m.find(k)     如果m容器中存在按k索引的元素,则返回指向该元素的迭代器。如果不存在,则返回超出末端迭代器

    7)、从map中删除元素

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

    append() 方法

     append()方法在被选元素的结尾(仍然在内部)插入指定内容。

  • 相关阅读:
    Frameset 框架
    FHS 文件层次标准
    history 命令
    QT基础走起
    Android中导入jar包v4的错误
    Android工具Eclipse点击卡死或者无响应情况
    让程序飞起来
    Android中报错
    【2019.9.23】NOIP2017 practice exam
    【技巧】时间复杂度
  • 原文地址:https://www.cnblogs.com/rong86/p/3463590.html
Copyright © 2011-2022 走看看