栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

STL系列——深入理解vector容器

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

STL系列——深入理解vector容器

本文源码以GNU2.9编译器为例展开说明,同时参考一下GNU4.9的部分源码。

1 vector内存结构和源码 1.1 vector内存结构和GNU2.9源码结构

1.2 GNU4.9源码结构 1.2.1 GNU4.9源码结构

1.2.2 GNU4.9源码

2 vector内存二次分配原理

以push_back()函数为例分析vector内存的二次分配原理。

2.1 vector内存分配的整体流程

2.2 当空闲空间不够时的二次分配流程

注意:vector的两倍增长前后,不仅要大量调用拷贝构造函数,而且还需要大量析构函数,用以释放原来vector占用的内存空间。所以,如果vector内存分配不当,容器出现bad_alloc错误。

3 vector迭代器 3.1 GNU2.9迭代器

因为vector是一个连续空间,在GNU2.9中没有将其迭代器iterator封装为一个class类,直接使用泛型T的指针作为vector迭代器。

3.2 GNU4.9迭代器

在GNU4.9中,vector的迭代器本质上还是一个指针,不过被封装成了一个类。

4 参考材料
  • 侯捷《STL标准库和泛型编程》
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/457945.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号