c++ 标准库

c++ 标准库,第1张

第九章 顺序容器

9.1  概述

顺序容器就是排放顺序与先后加入容器有关

list  和  forward_list    任何位置的删除和添加都很块,但是访问一个元素要遍历整个容器

顺序容器可以保存任意的数据类型

vector> lines;//vector的vector

注意:在构造容器的时候,不能值传递给它一个元素参数

vector v1(10,init);
vector v2(10)//错误必须提供一个元素初始化器

9.2  容器库概述

迭代器

迭代器的范围是左闭右开 【beg,end)

每个容器中都有两个迭代器

begin:第一个元素

end: 最后一个元素的下一个

迭代器的类型

list:: iterator iter;//iter是通过list定义的一个迭代器类型

容器的定义和初始化

处理array以外其他容器默认构造都是构造一个空容器

 将容器初始化为一个容器的拷贝

1、直接拷贝整个容器(要求容器类型和元素类型一样)

2、拷贝由一个迭代器指定的元素范围

拷贝元素,但是不包括it指向的元素

标准库array具有固定大小

array ia1; //指定元素类型和大小

容器的大小 *** 作

size

empty

max_size  返回一个大于或者等于该类型容器能容纳的最大元素的值

9.3 顺序容器 *** 作

 容器元素是拷贝

当我们用一个对象来初始化容器时,或将一个对象插入到容器中去,实际上是放入的是原对象的拷贝,拷贝对象不会与原对象关联任何关系

在容器中的特定位置添加元素/插入一个范围

slist.insert(slist.begin(),"Hello!");//在slist容器开头之前插入元素Hello!

c.isnert(p,n,t)      在p之前插入n个t

c.isnert(p,b,e)      在p之前插入b与e之间的元素

c.isnert(p,il)      在p之前插入il花括号范围内的元素列表

emplace *** 作

emplace_front  将元素存放的容器头部

emplace     在某个位置之前插入

emplace_back   容器尾部

emplace函数在容器中直接构造元素,传递给emplace函数的参数必须与元素类型的构造函数相匹配

9.3 访问元素

在所有的容器中都存在成员函数 front 与back用来返回容器中的首尾端元素(单链表中不能使用back)

空容中不能使用front和back函数

pop_front 与pop_back(string、vector不支持)

删除首尾元素

erase 从容器中指定位置删除元素

删除list中的索引奇数元素

erase返回指向删除得(最后一个元素之后位置的迭代器)

list lst = {0,1,2,3,4,5,6,7,8,9};

auto it = lst.begin();

while(it != lst.end())
  
  if(*it % 2)  //为奇数
      it = lst.erase(it);删除此元素,返回的值是被删除之后的下一个位置
  else
     ++it;

erase删除范围内的元素

elem1 = slist.erase(elem1,elem2)

单链表的特殊 *** 作

resize

 array不支持resize

9.4 vector怎么增长的

vector会有预留空间作为备用,可以用来保存更多的新元素

capacity :不扩张的时候容量

size:保存了多少元素

reserver:通知容器扩展容量          reserver不会变小

9.5   额外的string *** 作

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/2889408.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-14
下一篇 2022-09-14

发表评论

登录后才能评论

评论列表(0条)

保存