zoukankan      html  css  js  c++  java
  • 【C++学习笔记】标准库容器Vector可变长度实现原理

    vector是C++中标准库容器的一种,vector与C++基本类型数组最大的不同是:数组定长,在初始化时必须定义长度,且不可再添加元素;vector可使用vec.pusu_back()来动态增加元素。

    数组和vector都是线性表的顺序存储结构。
    数组在定义时就规划了一片固定长度的内存空间,一般不可增加,若要再增加,需要重新申请内存;
    那么,vector的动态增加元素是怎么实现的呢?vector其实也是在定义的时候就规划了一篇内存空间,但是内存空间比定义的size要大,也就是说预留了一部分内存空间来用于存储新增的元素。而且还可以自己定义需要预留的空间大小,vec.reserve() 这样就不会对内存空间造成太大的浪费。

    总的来说,数组是C++的基本类型,不可增长,空间利用效率高,但是不是很灵活实用,如果溢出的话还可能有存在很大的程序安全问题;vector是标准库定义的类模板,支持的函数非常丰富,而且支持动态添加,但是需要预留一部分空间作为预留空间,存在一定的浪费,但是可以通过自定义预留空间最小化空间浪费。vector比数组要实用很多。

  • 相关阅读:
    水平居中
    flex布局
    get新技能:上传了 flv 或 MP4 文件到服务器,可访问总是出现 “无法找到该页”的 404 错误
    小程序3.8
    小程序3.7
    Vue 中select option默认选中的处理方法
    HTML5 data属性
    静态html返回
    node中可读流、可写流
    node.js fs、http使用
  • 原文地址:https://www.cnblogs.com/yyehl/p/6652933.html
Copyright © 2011-2022 走看看