STL总结(一)顺序容器的操作

首先,所有的容器都是类模板;其次,顺序容器指的是vector、list和deque.

容器内的元素也是有类型约束的,容器元素类型必须满足一下两个约束:1.元素类型必须支持复制运算,2.元素类型的对象必须可以复制。这也就是说除了引用类型外(引用类型不支持一般意义的赋值运算)。

容器的容器:

容器内的元素类型可以是容器即list<list<string> >也是可以的,但是需要注意的是,右侧的> >之间必须包含一个空格,因为编译器可能会无法正确识别该该定义。这点有点类似于C++中不能显示的调用默认无参数构造函数一样。

迭代器:迭代器是一种遍历容器元素的方式,*iter是迭代器指向的元素的引用!所有的迭代器都支持自增和自减,以及 ==和 !=,但是迭代器也有一些差别的,比如vector和deque支持整数运算,但是List是不支持的。对于关系运算符> >= < <=,也是vector和deque支持而list不支持。要通过迭代器删除容器中的元素,必须通过erase函数,但是通过该函数删除后的带迭起都会失效,所以必须重新获取迭代器.

向顺序容器中添加元素:

vector只支持push_back不支持push_front,而list和deque则是两个都支持。而list和deque还支持insert函数,通过迭代器来插入新元素。容器内的元素都是副本,也就是说,在向容器内添加元素时,系统会复制要添加的元素,所以如果一个元素在不同的容器之中存在,那么他们之间是副本关系,一个改变对其他的副本没有影响。所以尽量使用指针元素。同时插入元素也会导致迭代器失效,因为迭代器实际上是一种解引用,而插入新的元素可能会导致容器内存的变化,原来的解引用也随之失效。

容器元素的访问:

vector和deque是支持[]下标访问的,但是List不支持。list和deque支持front和back访问,但是vector不支持。

删除元素:可以使用erase函数以及pop_back、pop_front和clear来删除元素。

clear函数会释放掉容器内的元素,但是如果容器内的元素是指针类型,那么指针指向的的元素还是需要创建者自己释放掉的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值