重写STL中的vector的内存配置器

本文探讨了如何在创建C++ STL中的vector时覆盖默认内存配置器,通过提供第二个参数来指定自定义的内存分配器,如std::vector<int, my::allocator<int>>。文章介绍了内存配置器的基本使用和接口规范。" 103384597,3339227,GitHub开源:用Python自制GIF表情包,Sorry项目解析,"['Python空间', 'Git']
摘要由CSDN通过智能技术生成

Vector在创建时接受的参数

在c++STL中,容器类vector实际上在创建时可以接收两个参数,第一个是存储的元素的类型,第二个是内存配置器,第二个参数有默认值,但我们可以覆盖这个默认值,但是默认值的覆盖需要遵守一些规则,而这些规则则是本文的要讲述的。

创建时添加第二参数:std::vector<int, my::allocator<int>> iv; //创建一个元素类型为int,内存配置器为my空间下的allocator<int>类

简易内存配置器

#include <cstddef>
#include <cstdlib>
#include <climits>

namespace my{
	template<class T>
	class allocator{
	public:
		//以下的 typedef 是必须的,因为在容器中有类似 _alloc::pointer 的语法 
		typedef T 			value_type;
		typedef T* 			pointer;
		typedef const T*	const_pointer;
		typedef const T& 	const_reference;
		typedef T&			reference;
		typedef size_t		size_type;
		typedef ptrdiff_t	difference_type;
		
		//rebind, 一般情况下似乎可以去掉,暂不知道在什么场景下使用 
		template <class U>
		struct rebind{
			typedef allocator<U> other;
		};
	
		//以下全部的方法都可无,而这取决于容器执行了什么操作
		p
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值