在c++stl中常用的容器和类型,STL语法
【语法复习】C STL:容器(1)-ATP _-博客花园
【语法回顾】C STL:容器(1)
2012-07-12 12:05
经过
ATP_,
968
读书,
0
评论,
收藏,
编辑
顺序容器的定义。顺序容器(Sequential container)是将单一类型的元素聚合到容器中,然后根据它们的位置存储和访问这些元素,称为顺序容器。容器中元素的顺序与元素的值无关,而是由元素添加到容器中的顺序决定的。
标准库被定义为三个连续的容器:vector、list和dequee(在dequee中读作“deck”)。
三个顺序容器的适配器:堆栈、队列、优先级队列
相关头文件
#包含向量#包含列表
#包含队列#包含堆栈#包含队列
容器(4种)向量的初始化;//默认构造函数
向量int c(C2);//创建容器c2的副本
向量int c(n,t);//用值为t的n个元素创建并初始化容器。
列表字符串mylist(3,“哈哈”);//3个“哈哈”字符串来初始化列表
列表字符串mylist1(mylist.begin()、my list . end());//初始化为其他容器的一部分
容器操作的特殊要求是,容器的存储类类型的对象只能在其元素类型提供默认构造函数时使用。
Car类没有默认的构造函数,但是它有一个带有int参数的构造函数。
?12345矢量车汽车;//正确,默认构造函数vector cars(10)没有被调用;//错误,这个声明意味着定义并初始化了Car类的10个对象,调用了默认的构造函数,但是Car没有提供Vector CARs (10,1);//正确,调用int参数II的构造函数。容器的容器向量字符串行;//两个符号必须用空格隔开
A.迭代器常用操作*iter //返回迭代器iter指向的元素的引用。
Iter- number //当容器中的一个元素是一个结构或者一个类时,相当于对它进行解引用,返回number成员值。
iterITER-;//迭代器的增量和减量
Iter1==iter2 //当它们指向同一个容器中的同一个元素,或者指向。end()同时进行;
只有在vector和deque中,迭代器支持算术运算:ITER N-N,ITER 1 ITER 2ITER 3;操作:=,=
注意:使用迭代器时,一定要注意哪些操作会使迭代器失效,比如添加和删除。示例:当vector执行push_back操作时,它不再信任之前的迭代器值。
B.容器定义的类型别名(常用)size_type //无符号整数,足够存储可能的最大容器长度。
迭代器//该容器的迭代器类型
Reverse_iterator //这个容器以相反的顺序处理迭代器
Const_iterator //只读迭代器
Const_reverse_iterator //只读迭代器,顺序相反
三。容器的常见操作a .在顺序容器中添加人的元素的操作(原迭代器可能会失败)c.push_back(t) //在容器末尾添加c
C.push_front(t) //添加在容器c的前端。
C.insert(iter,t) //在迭代器iter指向的位置前添加元素T
C.insert(iter,iterA,iterB) //在迭代器iter指向的位置之前添加迭代器iterA,iterB限制内的元素。
注意:容器元素的插入和复制结果都是原始数据的副本,互不影响。
B.容器大小c.size() //的运算返回c:size_type类型的元素个数
空的()
C.resize(n) //调整容器的长度,使其可以容纳n个元素。
C.resize(n,t) //所有新范围都用元素t填充。
C.访问元素c.back() //返回容器c的最后一个元素的引用。
C.front() //返回容器第一个元素的引用
C[n] //下标操作,只能使用vector,deque (string)。
D.删除元素c.erase(p) //删除迭代器p指向的元素。
C.erase(b,e) //删除迭代器b,e之间的元素。
C.pop_back() //删除容器的最后一个元素
C.pop_front() //删除容器的第一个元素
清空容器
C1.swap(c2) //c1,c2存储内容交换。
C.assign(b,e) //重置C的元素,将迭代器B,e之间的元素复制到C中,B,e一定不是指向C中元素的迭代器。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。