zoukankan      html  css  js  c++  java
  • 关联容器总结

    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不存在,则这两个迭代器相等。

  • 相关阅读:
    Tensorflow基础教程4:卷积神经网络(CNN)介绍
    Keras之 cifar10数据集使用keras generator读取、模型训练、预测
    Tensorflow基础教程3:基础示例:多层感知机(MLP)
    Tensorflow基础教程2:Tensorflow模型建立与训练
    Chaquopy中不能导入64位Python训练的机器学习模型
    (转)使用SDWebImage和YYImage下载高分辨率图,导致内存暴增的解决办法
    C/C++ 递归与结束递归
    C/C++ 读取文件16进制格式
    C/C++ 打开外部程序
    C/C++ 遍历托盘图标
  • 原文地址:https://www.cnblogs.com/runninglzw/p/4734726.html
Copyright © 2011-2022 走看看