vector专题
2024-10-09 23:05:31
《C++程序设计语言(第4部分:标准库)》
31.4 容器
31.4.1 vector
31.4.1.1 vector和增长
- 重要知识点:vector的内存布局
- vector不会在添加每个元素时都分配内存,而是在超出容量时才进行一次重新分配。
- C++标准并未指定超出容量时向量的增长幅度,但很多C++实现都是增加大小的一半
- 容量的概念令指向vector元素的迭代器只有在真正发生重分配时才会实现
31.4.1.1 vector和嵌套
- vector的优势
- vector的元素是紧凑存储的:所有元素都不存在额外的内存开销
- vector的遍历非常快
- vector支持简单高效的随机访问 - 考虑二维矩阵的存储,对比以下两种解决方案,可见数据结构紧凑存储的重要性:
- 使用vector<vector>:需要进行多次自由存储空间的分配,访问元素需要进行二次间接寻址
- 使用vector:仅需要一次自由存储空间的分配,访问元素仅需要进行一次间接寻址
31.4.1.3 vector和数组(或array)
- 内置数据(或array)可将数据存储在栈上,对比vector存储在自由存储空间,存在一定性能上的优势
- 在允许使用未初始化元素的情况下,使用内置数据(或array)可能更优(如从标准输入读取数据存储到数组元素中)
31.4.1.4 vector和string
- vector是一种保存值的通用机制,并不对保存的值之间的关系做任何假设
- string设计的目的就是保存字符序列,它认为字符之间的关系非常重要
问题列表
- vector与数组的区别:C++中数组和vector
- vector在插入和删除时需要注意什么
- 插入数据时,由于内存可能会进行重分配,那么插入数据前保存的迭代器可能会失效
- 删除数据后,内存并不会回收,只是将需要删除的元素覆盖
最新文章
- HDU4348 To the moon
- Hadoop.2.x_无秘钥设置
- Css 特殊或不常用属性
- ie8 不支持new Date(&#39;2012-11-10&#39;)
- 锁_rac环境kill锁表会话后出现killed状态(解决)
- OC基础-day05
- BZOJ 1264 基因匹配Match(LCS转化LIS)
- element.style覆盖了我的样式!!
- dubbo 请求调用过程分析
- 前端到后台ThinkPHP开发整站(3)
- wget实例
- Redis之(四)事务
- 20175316盛茂淞 2018-2019-2《Java程序设计》结对编程项目-四则运算 第二周(6)
- BUG关闭原因
- JS截取文件后缀名
- Dubbo接口压测
- Spring Cloud(Dalston.SR5)--Hystrix 断路器
- 【转】AD常用端口
- VS注释与取消注释快捷键
- 干货:Java并发编程必懂知识点解析
热门文章
- rabbitmq集成和实战
- latex 封面
- 吴恩达《深度学习》-第五门课 序列模型(Sequence Models)-第一周 循环序列模型(Recurrent Neural Networks) -课程笔记
- 自定义 NSLog以便发版和调试
- Linux下rm操作误删恢复
- C#开发PACS医学影像处理系统(十七):2D处理之影像旋转和翻转
- k8s控制器资源
- java.lang.NoSuchMethodError: org.springframework.util.Assert.isTrue(ZLjava/util/function/Supplier;)V
- Boolean.valueOf(String)
- 【转】PostgreSQL Index性能调优