STL之空間配置器

2021-06-22 07:36:43 字數 1453 閱讀 2494

空間配置器allocator負責空間的配置和管理,是一種實現了動態空間配置、空間管理、空間釋放的class template。

1.空間配置器的標準介面

allocator::value_type

allocator::pointer

allocator::const_pointer

allocator::reference

allocator::const_reference

allocator::size_type

allocator::different_type

allocator::rebind

allocator::allocator() // default constructor

allocator::allocator(const allocator&) // copy constructor

template allocator::allocator(const allocator&) // 泛化的copy constructor

allocator::~allocator()

pointer allocator::address(reference x) const

const_pointer allocator::address(const_reference x) const

pointer allocator::allocate(size_type n, const void*=0)

void allocator::deallocator(pointer p, const t& x)

size_type allocator::max_size() const

void allocator::construct(pointer p, const t& x)

void allocator::destroy(pointer p)

2. sgi 標準的空間配置器 std::allocator

事實上,sgi從未使用過這個配置器,主要原因是效率不好,只是把c++的::operator new 和 ::operator delete做了一層封裝而已,其空間配置的兩個函式如下所示:

templateinline t* allocate(ptrdiff_t size, t*)

3. sgi具有次配置能力的空間配置器

sgi stl使用的空間配置器為alloc,sgi stl每個容器都已經指定了其預設的空間配置器為alloc,例如下面關於vector的宣告:

template //預設使用alloc為配置器

class vector ;

雖然alloc沒有提供標準的介面,但是sgi採用乙個間接層,提供乙個具有標準介面的配置器******_alloc。

未完待續。。。。。。。。。。。。。。。

STL之空間配置器

最近在看侯捷老師寫的stl原始碼剖析,想通過看優秀的 來提高自己的程式設計水平。首先stl提供了六大元件,彼此可以套用使用。借助一張從書上截的圖來表明 container通過allocator來獲取資料儲存空間 algorithms通過迭代器來獲取container的內容,functors可以協助a...

STL之空間配置器

pragma once include 為了malloc free include define throw bad alloc std cerr class onespce 對free的封裝 static void deallocate void p,size t n 這個size t完全可以不要...

STL 空間配置器

stl有6大元件 容器 演算法 迭代器 仿函式 配接器 分配器。它們之間的密切關係是stl的精髓所在,容器用來存放資料,而容器存在的前提是要有分配器給它分配記憶體,接下來需要實現演算法,迭代器便作為演算法來對容器資料操作的橋梁,演算法可以使用仿函式完成不同的策略變化,配接器可修飾或套接仿函式。說了麼...