STL Array、ForwardList源码剖析

STL Array、ForwardList源码剖析

参考文章: https://blog.csdn.net/weixin_45389639/article/details/121618243

array 源代码

cpp 复制代码
template<typename _Tp,std::size_t _Nm>
struct array
{
	typedef _Tp value_type;
	typedef _Tp* pointer;
	typedef value_type* iterator;
	// Support for zero-sized arrays mandatory
	value_type _M_instance[_Nm?_Nm:1];

	iterator begin(){return iterator(_M_instance[0]);}
	iterator end(){return iterator(_M_instance[_Nm]);}
	...
};

array的使用

array不可以扩充,必须指定大小

cpp 复制代码
array<int,10> arr;
auto it = arr.begin();
//array<int,10>::iterator it = ...
it += 3;
cout << *it << endl;

array实际是个数组

在C++11中,新增的一种容器std::array,和我们平常所使用的array操作类似,和vector动态可扩容不同它是静态不可扩容的。

只要是连续空间迭代器不需要额外设计成一个class,

array的迭代器是一个指针(萃取)

forward_list容器

​ forward_list 也是C++11提供的容器,和list容器不同,它是单项链表,比起需要每个Node节点需要存储next和pre节点的list。forward_list只需要存储next节点,forward_list会更加轻量级。

相关推荐
Aurorar0rua4 小时前
CS50 x 2024 Notes C -14
c语言·开发语言·学习方法
小短腿的代码世界5 小时前
从.qrc到rcc编译器:Qt资源系统的隐秘运作机制与大型项目性能突围
开发语言·qt
2401_833269305 小时前
Java网络编程入门
java·开发语言
青瓦梦滋5 小时前
C++的IO流与STL的空间配置器
开发语言·c++
五月君_6 小时前
Bun v1.3.14 发布,Rust 版即将进 Claude Code 内测,下一版可能就告别 Zig
开发语言·后端·rust
鱼很腾apoc7 小时前
【学习篇】第20期 超详解 C++ 多态:从语法规则到底层原理
java·c语言·开发语言·c++·学习·算法·青少年编程
不吃土豆的马铃薯8 小时前
4.SGI STL 二级空间配置器 allocate 与_S_refill 源码解析
c语言·开发语言·c++·dreamweaver·内存池
码界筑梦坊8 小时前
120-基于Python的食品营养特征数据可视化分析系统
开发语言·python·信息可视化·数据分析·毕业设计·echarts·fastapi
lsx2024068 小时前
《Foundation 模态框》
开发语言
fufu03119 小时前
vscode配置C/C++环境,用GDB调试简单程序分享
开发语言·c++