浅谈顺序容器(三)

顺序容器的赋值操作 如下:

c1=c2 这种呢 是最简单的 也是最常用的赋值方式。它的执行原理是:首先将容器c1中的所有元素清空,然后将c2容器的所有元素复制给c1(c1c2的容器和元素类型必须相同)

c1.swap(c2) ;swap这个函数相信大家都知道 是用来交换元素的 该函数执行后的的结果是 c1里存放的是c2的元素 反之 c2里面存放的是c1的元素 (必须保证c1c2的类型相同)

c.assign(b,e); 重新设置容器c中元素:将迭代器be标记的范围内所有元素复制到容器c(但是b,e不是指向容器c中元素的迭代器) assign函数还有种用法 就是assign(n,t) 该用法是将容器c重新设置为存储n个值为t的元素

值得注意的是:顺序容器vector的元素已连续的方式存放——每一个元素都紧挨着前一个元素存储。因为其实连续存储的 当容器已经没有空间容纳新的元素的时候 我们往里面添加一个新的元素。此时由于元素必须连续存储以便索引访问,所以不能随便找个地方存储这个新添加的元素。于是vector必须重新分配存储空间用来存放原来的元素以及新添加的元素:存放在旧存储空间中的元素被复制到新存储空间里,接着插入新元素,最后撤销旧的存储空间。

试想:如果vector容器每次添加新元素时,都要这么分配和撤销内存空间,其性能将会非常慢。

为了解决上述问题 vector类提供了两个成员函数:capacityreserve使程序员能够与vector容器内存分配的实现部分交互工作。

Capacity-->容器在必须分配新存储空间之前可以存储的元素总数。

Reserve-->告诉vector容器应该预留多少个元素的存储空间。

顺序容器介绍到这里已经是第三章了。介绍了很多,最后再谈谈如何选用顺序容器:

A.如果程序要求随机访问元素,则应使用vectordeque容器

B.如果程序必须在容器的中间位置插入或删除元素,则应采用list容器

C.如果程序不是在容器的中间位置,而是在容器首部或尾部插入或删除元素,则应采用deque容器

如果只需在读取输入时在容器的中间位置插入元素,然后要随机访问元素,则可考虑在输入时将元素读入到一个list容器,接着对此容器重新排序,使其适合顺序访问,然后将排序后的list容器复制到一个vector容器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值