STL 學習筆記 default alloc

2021-06-26 09:21:06 字數 2078 閱讀 5136

下面是沒有加上多執行緒安全的default_alloc_template模板類以及實現**:(⊙o⊙)…  本人比較懶,自己寫的注釋都寫在書上了,覺得自己敲出來理解的更加透徹些。

template class __default_alloc_template;

enum ;

enum ;

union obj ;

static obj* volatile free_list[_nfreelists];

static size_t freelist_index(size_t bytes)

static size_t round_up(size_t n)

static void *refill(size_t n);

static char *chunk_alloc(size_t size , int &nobjs);

static char *start_free;

static char *end_free;

static size_t heap_size;

public:

static void *allocate(size_t n);

static void deallocate(void *p , size_t n);

static void *reallocate(void *p , size_t old_sz , size_t new_sz);

};template char * __default_alloc_template::start_free = 0;

template char * __default_alloc_template::end_free = 0;

template char * __default_alloc_template::heap_size = 0;

template char * __default_alloc_template:: free_list = ;

template static void * __default_alloc_template:: allocate(size_t n)

obj *volatile *my_free_list;

obj * result;

my_free_list = free_list + freelist_index(n);

result = *my_free_list;

if (result == 0)

*my_free_list = result -> free_list_link;

return result;

}template void __default_alloc_template:: deallocate(void *p , size_t n)

obj *q = (obj *)p;

obj *volatile *my_free_list = free_list + freelist_index(n);

q->free_list_link = *my_free_list;

*my_free_list->free_list_link = q;

}template void *__default_alloc_template::refill(size_t n)

else }}

template char *__default_alloc_template::chunk_alloc(size_t size , int &nobjs)

else if ( bytes_left >= size )

else

start_free = (char *) malloc(bytes_to_get);

if (start_free == 0)

}end_free = 0;

start_free = (char *) malloc_alloc::allocate(bytes_to_get);

} heap_size += bytes_to_get;

end_free = start_free + bytes_to_get;

return chunk_alloc(size , nobjs);

}}

STL學習筆記

1.stl六大元件 1 容器 各種資料結構,如vector,list,deque,set,map,用來存放資料,從實現的角度看,stl容器是一種class template。2 演算法 各種常用的演算法如sort,search,copy,erase.從實現的角度看,stl演算法是一種function...

STL學習筆記

容器是用來存放資料的,掌握容器特性才能更好地選擇合適的容器載資料。這裡要記住,可自主選擇插入的位置 vectors 可隨機訪問,可變長陣列,可快速在尾部插入刪除,不適合在中部頭部頻繁插入刪除 deques 可隨機訪問,佇列,先進先出,可快速在頭部尾部插入刪除,同樣不適合在中部插入刪除元素 list ...

STL學習筆記 01

1.容器 containers 各種資料結構 2.演算法 algorithms 各種常用演算法 3.迭代器 iterators 容器和演算法之間的膠合劑 4.仿函式 functors 行為類似函式,可作為演算法的某種策略 5.配接器 adapters 一種用來修飾容器或仿函式或迭代器介面的東西 6....