C++primer 第九章顺序容器!

 

标准库定义了3种顺序容器:vector支持随机访问,    

list支持快速插入删除,  

deque双端队列。

他们的差别在于访问元素的方式,以及添加或删除元素操作的运行代价。

 

1. 容器元素的初始化
    默认的构造函数:list<int> ilist; list容器,里面内容是int类型的内容
    deque<Sales_item> items; 空容器deque,里面装的是Sales_item类型的

除了默认的构造函数,容器类型还提供了其他的构造函数,可以用这些构造函数指定元素初值:

      C<T> c;创建一个名为c的空容器。C是容器类型名,如vector,T是元素类型,如int或string适用于所有容器。

      C c(c2);创建容器c2的副本c;c和c2必须具有相同的容器类型,并存放相同类型的元素,适用于所有容器

      还有类似几种构造函数如C c(b,e);C c(n,t); C c(n)

      1将一个容器初始化为另一个容器的副本,当不适用默认构造函数,而是用其他构造函数初始化顺序容器时,必须指出该容器有多少个元素,并提供这些元素的初值 。同时指定元素个数和初值的一个方法是将新创建的容器初始化为一个同类型的已存在容器的副本:vector<int> ivec;vector<int> ivec2(ivec);

      2初始化为一段元素的副本,尽管不能直接将一种容器内的元素复制给另一种容器,但系统允许通过传递一对迭代器 间接实现该功能。使用迭代器时,不要求容器类型相同。容器内的元素类型也可以不相同,只要他们相互兼容,能够将要复制的元素转换为所构建的新容器的元素类型,即可实现复制。迭代器标记了要复制的元素范围,这些元素用于初始化新容器的元素。迭代器 标记出要复制的第一个元素和最后一个元素。采用这种初始化形式可复制不能直接复制的容器。更重要的是,可以事先复制其他容器的一个子序列:

      回顾一下指针,我们知道指针就是迭代器,因此允许通过使用内置数组中的一堆指针初始化容器也就不奇怪了:

      3分配和初始化指定数目的元素,创建顺序容器时,可显示指定容器大小和一个(可选的)元素初始化式。我们也可以只指定容器的大小:list<int> ilist(list_size);

 

 

在容器中添加元素:c.push_back(t)在容器末尾加上t元素,返回值是void  

c.push_front(t)只有list和deque容器能使用返回值是void 

c.insert(p,t)在p迭代器指向的位置前面加上元素t,返回指向新元素的迭代器

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

c.insert(p,b,e)在迭代器p所指向的位置前面,加入由迭代器b,e所标记范围内的元素,返回void类型

 

 

关系操作符:所有容器都支持用关系操作符来实现两个容器比较,比较的两个容器类型要相同,其元素类型也要相同。容器的比较是基于容器元素的比较。如果容器内的元素不支持某种操作符,则该类容器就不能做此种比较。

 

容器大小的操作:所有容器类型都提供四种与容器大小相关的操作。

c.size() 返回c中元素的个数,返回类型为c::size_type

c.max_size()返回容器c可容纳的最多元素个数,返回类型为c::size_type

c.empty()返回标记容器大小是否为0的布尔值

c.resize(n)调整容器c的长度大小,使其能容纳n个元素,如果n<c.size(),则删除多出来的元素,否则,添加采用初始化的新元素

c.resize(n,t)调整容器c的长度大小,时期能容纳n个元素,所有新添加的元素值都为t

 

元素的访问:访问顺序容器内元素的操作

c.back()

c.front()

c[n]

c.at(n)

 

删除元素

 

赋值与swap

 

vector容器的自增长

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值