顺序容器就是排放顺序与先后加入容器有关
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 *** 作
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)