C++基础 -- vector(向量)

https://blog.csdn.net/weixin_42570248/article/details/98750234 

       vector 是序列式容器(sequence containers)中的一种,是一个封存了动态大小数组的顺序容器。可以简单的认为,vector就是能够存放任意数据的动态数组,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素。

Vector的数据结构

线性连续空间,两个迭代器start和finish分别指向配置得来的连续空间中目前已经被使用的范围(符合STL规范之“前闭后开”),并以迭代器end_of_storage指向整块的连续空间(含备用空间)的尾部。

vector中有容量(capacity)这个概念,这是为了降低空间配置时的运行速度,一个vector的容量永远大于或等于其大小

//在vector当中包含三个迭代器成员变量,分别是:

    iterator start                       // 表示目前使用空间的头

    iterator finish                     // 表示目前使用空间的尾

    iterator end_of_storage    // 表示目前可用空间的尾 

       这里需要注意的是,所谓动态增加大小,并不是在原空间之后接续新空间(因为无法保证原空间之后尚可有可供配置的空间),而是以原大小的两倍配置一块较大空间,然后将原内容拷贝过来,然后才开始在原内容之后构造新元素,并释放原空间。因此,对vector的任何操作,一旦引起空间重新配置,指向原vector的所有迭代器就都失效了。这是程序员易犯的一个错误,务需小心。

      注意事项:在使用迭代器遍历操作vector时,切记不要在循环内部进行任何改变vector大小的操作,一旦引起数据空间重新配置或数据移动,则会造成迭代器失效的状况,进而引发无法预知的错误。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值