開始學習 stl原始碼剖析
已經學習了前兩章 有關記憶體管理 以及 迭代器
下面 先嘗試自己寫vector再根據源**進行 修改 以下為**
#ifndef _vector_h
#define _vector_h
#include "alloc.h"
#define _vector_overflow std::cerr<<"vector overflow"public:
~vector()
vector() : start(0),finish(0),end_of_storage(0) {}
iterator begin()
iterator end()
size_type size() const
size_type capacity() const
bool empty() const
reference front()
reference back()
void push_back(const_reference value)
reference operator(size_type n)
return *(start + n);
} void erase(iterator i)
void erase(iterator low, iterator up)
void insert(iterator i, const_reference value)
void insert(iterator i, size_type n, const_reference value)
void resize(size_type n)
void clear() };
#endif // !_vector_h
以下為 借鑑書上**改正的 主要改了以下幾點
1. 資料的 構造 與 析構 的問題
2. 擴充緩衝區大小計算的問題 由原來oldsize的兩倍 改為了 2*(oldsize + needsize)
3. 堅持貫徹左閉右開 將erase改正
4. 由於沒寫 copy 因此 都是用的memcpy 因此 拷貝時 也沒有構造析構的過程
#ifndef _wvector_h
#define _wvector_h
#include "alloc.h"
#include "stl_construct.h"
#define _vector_overflow std::cerr<<"vector overflow"void dellocate()
public:
~vector()
vector() : start(0), finish(0), end_of_storage(0) {}
iterator begin()
iterator end()
size_type size() const
size_type capacity() const
bool empty() const
reference front()
reference back()
void push_back(const_reference value)
reference operator(size_type n)
return *(start + n);
} void erase(iterator i)
void erase(iterator low, iterator up)
void insert(iterator i, const_reference value)
void insert(iterator i, size_type n, const_reference value)
void resize(size_type n)
void clear() };
#endif // !_wvector_h
STL原始碼剖析之vector
向量vector 1.vector概述 vector的資料安排以及操作方式,與array非常相似。兩者的唯一差別在於空間的運用的靈活性。array是靜態空間,一旦配置了就不能改變 vector是動態空間,隨著元素的加入,它的內部機制會自行擴充空間以容納新元素。vector的實現技術,關鍵在於其對大小...
stl原始碼剖析之vector
作者最近在學習c 學習侯捷的stl原始碼剖析這本書,但是我覺得裡面的內容有些古老並且生澀。比如說alloc,對於一些基礎知識不太牢固的同學不是很友好 我建議先細讀第二章前4小節,第一級分配器之後的內容可等基礎足夠再回頭彌補 雖然這本書本就不是面對像菜鳥的c 程式設計師。然一些基礎思想,程式設計方法,...
STL原始碼剖析 容器 vector
vector 常被稱為向量容器,因為該容器擅長在尾部插入或刪除元素,在常量時間內就可以完成,時間複雜度為o 1 而對於在容器頭部或者中部插入或刪除元素,則花費時間要長一些 移動元素需要耗費時間 時間複雜度為線性階o n vector實現的關鍵在於其對大小的控制以及重新配置時的資料移動效率。vecto...