• 关联容器总结


    1.容器类型

    按关键字有序保存元素:

    map:用来保存键值对,关键字不可以重复

    set:只保存关键字,关键字不可重复

    multimap:用来保存键值对,关键字可以重复

    multiset:只保存关键字,关键字可以重复

    无序集合:

    unordered_map:用哈希函数组织的map

    unordered_set:用哈希函数组织的set

    unordered_multimap:用哈希函数组织的map,关键字可重复

    unordered_multiset:用哈希函数组织的set,关键字可重复

    2.定义和初始化容器

    可以使用3种方式初始化(和上一篇的顺序容器初始化方式相同):

    1.c={a,b,c...}  按括号中的列表进行初始化

    map<string,string> word_count={{“a”,”1”},  {“b”,”2”}};

    2.初始化为另一个同类型容器的拷贝

    C c(c1)     c初始化为c1的拷贝

    3.按照迭代器范围来初始化容器

    C c(b,e)    b,e迭代器之间的元素拷贝到c

    3.关联容器额外的类型别名

    key_type:容器的关键字类型

    对于set容器,key_typevalue_type一样

    对于map容器,表示关键字的类型

    mapped_type:只适用于map,每个关键字关联的值的类型

    value_type:对于set,与key_type相同

    对于map,表示pair<const key_type, mapped_type>键值对

    pair键值对有两个公有成员firstsecond,分别表示关键字和值

    4.添加元素

    c.insert(v)

    c.emplace(args)

    对于mapset:只有当元素不再容器中才插入v,返回一个pairfirst成员表示一个迭代器,指向该关键字,second成员是  表示是否插入成功的  bool

    对于multimapmultiset:无论什么时候都会插入v,并返回一个指向新元素的迭代器

    c.insert(b,e)   

    c.insert(li)

    分别表示插入b,e迭代器之间的元素,插入li列表中的元素,返回void

    对于mapset:只会插入不再容器中的元素

    对于multimapmultiset:插入每个元素

    c.insert(p,v)

    c.empalce(p,args)

    并不是插入到p之前(与顺序容器不同),而是指示从p迭代器开始搜索,插入到指定位置(因为有序容器中的元素是有序的)

    5.删除容器

    c.erase(k):删除关键字为k的元素,返回被删除元素的数量

    c.erase(p):删除p迭代器指向的元素,返回指向被删元素之后元素的迭代器,p必须指向c中的真实元素

    c.erase(b,e):删除迭代器b,e之间的元素,返回e

    6.访问元素

    c.find(k):返回指向第一个关键字为k的迭代器,若不存在k,返回尾后迭代器(c.end()

    c.count(k):返回关键字等于k的元素数量,对于setmap,元素数永远为10

    c.lower_bound(k):返回一个迭代器,指向第一个  关键字>=k 的元素

    c.upper_bound(k):返回一个迭代器,指向第一个 关键字>k 的元素

    c.equal_range(k):返回一个迭代器pair,表示关键字=k的元素范围,若k不存在,pair两个成员都为c.end()

    注:使用c.lower_bound(k)c.upper_bound(k)配合查找k,若k存在,分别返回第一个指向k的迭代器和最后一个指向k元素之后的迭代器(不是最后一个k元素),若k不存在,则这两个迭代器相等。

  • 相关阅读:
    客户端相关知识学习(三)之Android原生与H5交互的实现
    客户端相关知识学习(二)之h5与原生app交互的原理
    nslookup基础用法
    十大渗透测试演练系统
    最新的windows xp sp3序列号(绝对可通过正版验证)
    Metasploit基础命令
    msf回退一步
    验证SMB登入
    Nmap使用指南(1)
    postgreSql基础命令及linux下postgreSql命令
  • 原文地址:https://www.cnblogs.com/runninglzw/p/4734726.html
Copyright © 2020-2023  润新知