浅谈顺序容器(二)

每种顺序容器都提供了一组有用的类型定义以及以下操作:在容器中添加元素  在容器中删除元素  设置容器大小  (如果有的话)获取容器内的第一个和最后一个元素

                                 容器定义的类型别名

size_type

无符号整型,足以存储此容器类型的最大可能容器长度

iterator

此容器类型的迭代器类型 (该迭代器类型元素的成员)

const_iterator

元素的只读迭代器类型

reverse_iterator

按逆序寻址元素的迭代器(反过来 例如做++运算时 是前一位了 而不是后一位了)

const_reverse_iterator

元素的只读(不能写)逆序迭代器

different_type

足够存储两个迭代器差值的有符号整型,可为负数

value_type

元素类型

reference

元素的左值类型,是value_type&的同义词

const_reference

元素的左值类型,等效于const value_type&

容器的beginend操作

C.begin(); 返回一个迭代器,它指向容器c的第一个元素

C.end();   返回一个迭代器,它指向容器c的最后一个元素的下一个位置

C.rbegin(); 返回一个逆序迭代器,它指向c最后一个元素

C.rend();   返回一个逆序迭代器,它指向容器c的第一个元素前面的位置

下面谈谈在顺序容器中添加元素的操作

C.push_back(t)  在容器C的尾部添加值为t的元素,返回的类型为void

C.push_front(t)  在容器C的前端添加值为t的元素,返回类型也是void

以下三种操作只适用于 listdeque容器类型:

C.insert(p,t)  在迭代器p所指向的元素前面插入值为t的新元素,返回指向添加新元素的迭代器。

C.insert(p,n,t)  在迭代器p所指向的元素前面插入n个值为t的新元素,返回类型为void

C.insert(p,b,e)  在迭代器p所指向的元素的前面插图有迭代器b标记的范围内的元素。返回类型为void

为什么是在迭代器p所指向元素的前面插入呢?是因为迭代器可以指向容器的末端的下一个位置。

容器都支持关系操作符来实现两个容器的比较 有以下特点:

A.如果两个容器具有相同的长度而且所有元素都相等,那么这两个容器就相等;否则,他们就不相等

B.如果两个容器的长度不相同,但较短的容器中所有元素都等于较长容器中对应的元素,则称较短的容器小于另一个容器。

C.如果两个容器都不是对方的初始子序列,则他们的比较结果取决于所比较的第一个不相等的元素

要操作容器 必须先了解容器 例如 这个容器有多少个元素?它又能容纳多少个元素?当我需要存放100个元素 但容器只能容纳80个元素怎么办?

首先呢 拿到一个容器,用size()方法能得知该容器当前有多少个元素。用max_size()方法能得知改容器最多能装多少个元素。调用empty()方法能得知当前容器是否为空(没有元素)。用resize(n)方法能使容器容纳n个元素  如果n小于容器原来的长度 则多余的元素将被删除掉。另外resize方法还可以这样用resize(n,t) 表示呢 使容器的能容纳n个元素 新添加的元素(n - 容器.size())的值都为t

要获取容器第一个元素的引用呢(是引用)front()方法 如果容器为空 则视为该操作未定义

Back()函数是用来获取容器最后一个元素的引用 如front相反 

容器名称[n] 这种是直接通过指定下标来获取指定元素的引用 如果n不在容器范围内 则视为该操作未定义。

at[n] 同上 也是通过下表来获取指定元素的引用 不同的是在给出的下标无效时 其会抛出 out_of_range异常 但是这种写法只适用于 vectordeque

容器就像公司一样 有人入职 当然也就有人离职 公司发展快了 当然要扩张 。发展不顺利呢 也是要裁员的。公司的职员呢都有编号。可以通过编号找到该职员..........

前面将了入职 扩张 根据编号找员工 下面就谈谈裁员吧

erase(p)这个是将指定一个对象裁掉  erase(b,e)是裁掉指定的一部分对象 

Clear() 是裁掉所有对象 (貌似是倒闭是发生的)

pop_back() 是裁掉最后一个对象(最后一个入职的)

pop_front() 是裁掉第一个对象(第一个入职的)vector容器不支持)

list<int> ilist(10,42);

ilist.clear()或者ilist.erase(ilist.begin(),ilist.en());

list<string>::iterator elem1,elem2;

elem1=find(ilist.begin(),ilist.end(),val1);

Elem2=find(elem1,ilist.end(),val2);

Ilist.erase(elem1,elem2);

val1 val2 均为ilist中的元素

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值