C++容器: 顺序容器,关联容器(2)_C/C++语言_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

C++容器: 顺序容器,关联容器(2)

作者:黑客防线网安C/C++教程基地 来源:黑客防线网安C/C++教程基地 浏览次数:0

本篇关键词:关联顺序 元素
黑客防线网安网讯:    p;  其中,deg为deque<int>;    也就是说,创建适配器时,一般将一个顺序容器指定为其原本。    默认的stack和queue是基于deque实现的。    priority_queue则默认在vector上实现。    但...
    p;  其中deg为deque<int>;
    也就是说创建适配器时,一般将一个顺序容器指定为其原本
    默认的stack和queue是基于deque实现的
    priority_queue则默认在vector上实现。
    但是,实际上statck可以建立在vector,list,deque任何一种容器之上queue要求关联容器提供front操作,所以只有list和deque满足priority_queue要求提供随机访问功能 ,所有只有vector和deque满足
    如果适配器不是建在其默认类型上,则必须显式的指定其关联类型stack<int, vector<int> >  stk(ve);其中ve为vector<int>类型。
    2,栈适配器stack的使用
    先进后出
    stk.empty()  bool,空为true stk.size()    元素个数stk.pop()  删除栈顶元素,但是不返回其值stk.top()  返回栈顶元素,但不删除其值stk.push(item);  在栈顶压入item元素
    3,队列和优先级队列先进先出,优先级队列则按照优先级
  
  三,关联容器(associative container)
    map,multimap 类 --#include<map> set , multiset 类 -- #include<set>
    关联容器,通过 键 存储和读取元素。顺序容器,通过元素在容器中的位置顺序存储和读取元素。
    关联容器map的用法:
    1,map的定义map<k,v> m;   k为键类型,v为值类型map<k,v> m(m2); map<k,v> m(b,e); 将迭代器b e 之间的元素复制到m
    2,键类型必须满足严格弱排序,即 < 一定要定义,且大于 等于时都视为等于关系如 p1<p2,表示p1.first()<p2.first() ||  (!(p1.first()<p2.first)&&p1.second()<p2.seconf() )
    3,map的类型map<k,v>::key_type  键类型,而且是const的, const k map<k,v>::mapped_type  值类型,v map<k,v>::value_type  键-值对应的pair类型,pair<k,v>
    4,使用下标访问map对象,可以直接添加新元素map<string,int> w;   w["ab"]=2;如果w中不存在ab键,则会自动添加一个value_type,设置为"ab"--2
    5,对map迭代器解引用,返回value_type对map进行下标操作,返回mapped_type
    6,map.insert(e);  e为pair类型,如果其键不存在,则新建;如果键已经存在,则m不变;返回值为pair类型,其中pair.first为指向此键的迭代器, pair.second为bool,指示是否插入了该元素。
    m.insert(beg,end); 插入迭代器范围,返回void,规则同上m.insert(iter,e); iter为迭代器,以iter为起点搜索,查找是否有e.first对应的键元素,如果没有,则插入e。返回一个迭代器,指向具有e.first键的元素
    7,删除map中元素m.erase(k); 删除键k对应元素,返回删除个数(map中,只能为0或者1)
    m.erase(p);删除迭代器p对应元素,返回void m.erase(b,e);删除迭代器b e之间元素,返回boid
    8,检查map中键是否存在m.count(k)  返回键k在m中出现的次数m.find(k)  返回键k在m中首次出现的迭代器;不存在则返回末端迭代器
    9,map中,内存存在方式类型list是不连续的。
    所以,map的迭代器只有简单的自增 自减操作,而且map中没有push  pop相关操作。
    但是,map提供下标操作,只是它的下标操作和顺序容器是不一样的。
    关联容器set:
    set与map不同的地方在于:set仅有key_type类型,它的value_type 也就是key_type;而且set不提供下标操作。
    set也支持count find 操作,类似map。
    关联容器multimap multiset:
    一个键可以对应多个实例
    1,insert总会添加一个新元素,不管键是否存在2,erase会删除拥有该键的所有元素3,在multimap中,拥有相同键的元素是相邻存放的 。
    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-15264-1.html
网站维护教程更新时间:2012-04-04 22:52:29  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer