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会更加轻量级。

相关推荐
hdsoft_huge10 小时前
Java & Spring Boot常见异常全解析:原因、危害、处理与防范
java·开发语言·spring boot
风中的微尘11 小时前
39.网络流入门
开发语言·网络·c++·算法
未来之窗软件服务11 小时前
幽冥大陆(二)RDIFSDK 接口文档:布草洗涤厂高效运营的技术桥梁C#—东方仙盟
开发语言·c#·rdif·仙盟创梦ide·东方仙盟
混分巨兽龙某某11 小时前
基于Qt Creator的Serial Port串口调试助手项目(代码开源)
c++·qt creator·串口助手·serial port
小冯记录编程11 小时前
C++指针陷阱:高效背后的致命危险
开发语言·c++·visual studio
1uther12 小时前
Unity核心概念⑨:Screen
开发语言·游戏·unity·c#·游戏引擎
C_Liu_12 小时前
C++:类和对象(下)
开发语言·c++
coderxiaohan12 小时前
【C++】类和对象1
java·开发语言·c++
阿昭L12 小时前
MFC仿真
c++·mfc
阿幸软件杂货间13 小时前
Office转PDF转换器v1.0.py
开发语言·pdf·c#