c++,stl,线性容器vector,string的size,capacity,push_back,reserve,resize函数的作用和相互影响

编程入门 行业动态 更新时间:2024-10-26 20:29:17

c++,stl,线性容器vector,string的size,capacity,push_back,reserve函数的作用

以线性容器vector为例:

.size()函数的作用是:
返回当前容器中程序员给容器的数据个数,是容器中的数据量。

特点:
紧跟着程序员操作带来的的数据量改变而改变。
例如程序员定义了一个vector,然后push_back了5个数字进去,此时这个容器的size()返回值就是5,且size是从0开始,每push_back一次,size值紧跟着加一的。
程序员再push_back进去4个数,这个容器的size()返回值就是5+4=9;

capacity的作用是:
返回当前容器总体能容纳的最大数据个数,这个数程序员可以设定也可以不管,容器本身自己也会自动伸缩长度,是容器的容量。

特点:
1、capacity的值会大于等于size,
2、一个vector对象刚被定义出来时时capacity和size值都为0,
3、push_back后,size值会因push_back函数调用一次加一,size值会紧跟内部数据量的变化而变化,数据量变一次,size变一次,增加或减少都一致。
4、capacity不会紧跟数据量的变化而变化,而是随着size的改变,发生增量变化。
5、当size变大一部分时,capacity会扩容一次,当size减少时,比如用了pop,capacity却不会缩容减少,而是保持其最大值。


这里pop了很多数据后,capacity的值都维持在了最大时的28,而不会随着数据量的减少而缩小容器的容量。

对容器数据的操作函数:
push_back,pop,insert,erase,clear等操作是针对数据的操作,程序员对它们的每一次操作都会影响容器size的值,size的增大进而引起了capacity的增大,但这些函数本身不会影响容器容量capacity的值。

对容器数据量的操作函数:
resize函数是可以直接控制容器中数据量的函数,通过传入的int值可以增加或减少容器内数据量,直到容器数据量等于传入值。

resize扩数据:调用内部数据的默认构造函数至达到数量,引起size增加可能引发扩容。
resize减数据:删除多余数据的值和减小size,但不会释放内存。



对容器容量的操作函数:
reserve函数是对容器容量capacity进行操作的函数,作用是扩大容器的容量,注意,它只扩大,没有减小。
对当前例子vector来讲,reserve作用是通过申请一块大内存并把现有数据一一复制过去实现的。
reserve函数只扩容不缩容,例如:



总结:
线性容器中:
1、reserve函数和数据数量和内容没有关系,不会影响。
2、数据量增加会引发容量增加。
3、capacity不会减少。

更多推荐

c++,stl,线性容器vector,string的size,capacity,push_back,reserve,resize函数的作用和相互影响

本文发布于:2023-06-14 01:16:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1422023.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:线性   容器   函数   作用   string

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!