(1)vector容器支持随机访问,其内部是通过动态数组实现的;

(2)当vector执行insert或者push_back时,如果此时动态数组的内存不够用,则会重新分配当前大小的1.5~2倍的新内存区,把原来数组的内容复制过去;

(3)为了减少动态数组的不断分配,通过采用reverse()来提前设定容器的大小。

(4)每一次容器进行扩容的时候,原容器内的内存,迭代器,指针和引用都会失效;

     (5)标准容器的四个成员函数(vector和string)

1)size()函数:获得容器中元素的个数;

2)capacity()函数:容器在分配那块内存上可以容纳的元素的个数;

3)resize(n)函数:强制将容器改为容纳为n个数据;调用之后函数返回为n,如果n小于当前大小,容器尾部元素被销毁;如果n大于当前大小,新构造的元素会添加到末尾;如果n大于当前容量,在元素加入前会进行重新分配;

            4)reserve(n):强制容器把它的容量改为不小于n,提供的n不小于当前所需大小。如果n小于当前容量,则vector会忽略它,什么都不调用,string可能会把它的容量减小为size()和n中的大数,但是string的大小不变;

(6)使用“交换技巧”来修整vector过剩空间/内存

使用语句:vector<int>(ivec).swap(ivec);

vector<Int>(ivec)表示建立一个临时的vector,它是ivec的一份拷贝,但是vector的拷贝构造函数只分配拷贝的元素需要的内存,所以这个临时的vector没有多余的容量,然后再实现vector和ivec交换数据万能充,但是ivec只有临时变量修整后的容量,而临时变量拥有曾经ivec没有用到的过剩容量;

C/C++之vector的内存管理和效率相关推荐

  1. 【redismemcached】数据类型、内存管理、数据持久化和集群管理的区别

    这几年redis很火,redis也常常被当做memcached的挑战者被提到桌面上来.关于redis和memcached的比较比比皆是.然而,redis真的在功能.性能以及内存使用效率上都超越memc ...

  2. 使用jemalloc在Go中进行手动内存管理

    目录 通过Cgo创建内存 jemalloc 在字节片上放置Go结构 用分配器摊销Calloc的成本 明智地参考 处理分配的GB 排序可变长度数据 捕捉内存泄漏 结论 推荐阅读 曼尼斯·赖·贾 因(Ma ...

  3. Redis和Memcached的区别(数据类型、内存管理、数据持久化、集群管理)

    Redis的作者Salvatore Sanfilippo曾经对这两种基于内存的数据存储系统进行过比较: Redis支持服务器端的数据操作:Redis相比Memcached来说,拥有更多的数据结构和并支 ...

  4. windows7系统内存管理--Superfetch

    苦比了一天后的释然.今天给笔记本加了一条2G内存,但是开机之后win7内存占用率竟然50%左右,好生郁闷啊,最终还是找到了原因,给大家分享一下! 对于Windows Vista.windows 7的内 ...

  5. 学习笔记:C++初阶【C++入门、类和对象、C/C++内存管理、模板初阶、STL简介、string、vector、list、stack、queueu、模板进阶、C++的IO流】

    文章目录 前言 一.C++入门 1. C++关键字 2.命名空间 2.1 C语言缺点之一,没办法很好地解决命名冲突问题 2.2 C++提出了一个新语法--命名空间 2.2.1 命名空间概念 2.2.2 ...

  6. 【C++】动态内存管理/move/以及移动构造与移动赋值运算符

    文章目录 1 .对象移动与右值引用 实际应用过程中遇到的问题及其解决方案 c++中临时变量不能作为非const的引用参数 2. 动态内存管理类 3. 对象移动与右值引用 4. 移动构造与移动复制运算符 ...

  7. Python3.5源码分析-内存管理

    Python3源码分析 本文环境python3.5.2. 参考书籍<<Python源码剖析>> python官网 Python3的内存管理概述 python提供了对内存的垃圾收 ...

  8. java基础(一):谈谈java内存管理与垃圾回收机制

    看了很多java内存管理的文章或者博客,写的要么笼统,要么划分的不正确,且很多文章都千篇一律.例如部分地方将jvm笼统的分为堆.栈.程序计数器,这么分太过于笼统,无法清晰的阐述java的内存管理模型: ...

  9. python 内存回收机制_【第1题】 Pythonn内存管理以及垃圾回收机制

    内存管理 Python解释器由c语言开发完成,py中所有的操作最终都由底层的c语言来实现并完成,所以想要了解底层内存管理需要结合python源码来进行解释. 1. 两个重要的结构体 include/o ...

最新文章

  1. javascript——事件默认行为
  2. Java 变量声明和赋值
  3. phpcms 添加memcache支持
  4. MVCWebForm对照学习:传值方式
  5. 企业级NGINX的重定向rewrite
  6. 查看linux服务器信息
  7. JavaScript 触发click事件 兼容FireFox,IE 和 Chrome
  8. 微型计算机技术 论文,微型计算机技术课程设计论文报告微机交通灯控制系统_毕业论文.docx...
  9. .NET EF~Entity Framework详解(lambda表达式、linq到EF)
  10. java手机飞信_手机飞信JAVA通用版 手机飞信2011通用版
  11. 记一次虚拟机无妨访问网络的问题-Failed to start LSB:Bring up/down networking
  12. Uva815 Flooded
  13. Win10 一些常用快捷键
  14. 众多交通工具3dm Rhino资源素材一键即可获取
  15. ArcGIS如何创建渔网?渔网不见了。
  16. XML教程~一文完结
  17. mysql万能标签调用字段_万能循环(Loop)标签与万能调用(SQL)标签
  18. tkinter可视化天气查询
  19. linux stopped 进程,Linux运维知识之Linux查杀stopped进程
  20. 数学建模:灰色预测模型

热门文章

  1. 【DP】【期望】$P1850$换教室
  2. 《程序设计与数据结构》第3周学习总结
  3. jquery GET POST
  4. Ajax和Jsonp实践
  5. 解释三度带和六度带的概念以及各坐标系如何定义
  6. 基于Windows 7旗舰版搭建WinCE6.0开发环境的过程
  7. plsql 为空显示 0 的函数_不加班只加薪!从0到1教你制作出入库进销存表格
  8. php mysql无限分类排序_PHP 无限级分类、排序
  9. 测试环境搭建流程_前端构建 DevOps 搭建 DevOps 基础平台(中)
  10. unix/linux系统中文件分为哪些类型?,到底该如何理解 Unix/Linux 的文件系统?看这篇就知道了...