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