這裡需要的基礎知識主要是類模板和函式模板,以及乙個c++記憶體分配的技術allocator類,它提供可感知型別的記憶體分配,這個類支援乙個抽象介面,以分配記憶體並隨後使用該記憶體儲存物件。
使用allocator類,首先應用allocator類建立乙個allocator物件,然後使用該物件你可以分配記憶體,釋放記憶體,構造你需要的物件,釋放不要的物件。
templateallocatorvector::alloc;這句必須存在,就是生成乙個allocator物件,不過在類定義時就已經實現了。沒有這句在vs2010上會編譯不通過,原因不清楚.
#ifndef myvector_h
#define myvector_h
#include#includeusing namespace std;
templateclass vector
void push_back(const t&);
//返回vector的大小
size_t size()
//返回vector的容量
size_t capacity()
private:
static std::allocatoralloc;//所有的vector都用這個配置器,乙個物件,用來獲取原始的沒有構造物件的記憶體
void reallocate();
t* elements;
t* first_free;
t* end;
};templateallocatorvector::alloc;
//往容器後面加入元素
templatevoid vector::push_back(const t&t)
templatevoid vector::reallocate()
#endif
上面就是完整的vector容器的建立,只提供乙個功能,往容器加入元素,然後我們執行下面的函式來檢查記憶體的占用情況,來檢驗我們是否正確實現了該容器。
#include"test.h"
#includeusing namespace std;
void main()
{ vectora;
cout<<"vector已經空間: "<
輸出結果
vector已經空間: 0
vector總容量: 0
vector容器占用空間:12
請按任意鍵繼續. . .
那麼我們再讓容器 新增乙個元素
vector已經空間: 1
vector總容量: 2
vector容器占用空間:12
請按任意鍵繼續. . .
再讓容器 新增乙個元素
vector已經空間: 2
vector總容量: 2
vector容器占用空間:12
請按任意鍵繼續. . .
再讓容器 新增乙個元素
vector已經空間: 3
vector總容量: 4
vector容器占用空間:12
請按任意鍵繼續. . .
乙個socket原始碼
vc編寫伺服器 式的聊天室 2009 9 11 本文參考了 visual c 6.0完全自學手冊 中的示例 一 流程說明 客戶端客戶端建立流式套接字 呼叫connection向伺服器傳送連線請求 連線成功後使用建立與之關聯的的csocketfile物件和carchive物件 使用carchive物件...
乙個socket原始碼
vc編寫伺服器 式的聊天室 2009 9 11 本文參考了 visual c 6.0完全自學手冊 中的示例 一 流程說明 客戶端客戶端建立流式套接字 呼叫connection向伺服器傳送連線請求 連線成功後使用建立與之關聯的的csocketfile物件和carchive物件 使用carchive物件...
JavaScript之實現乙個簡單的Vue
原文出處 wclimb vue的使用相信大家都很熟練了,使用起來簡單。但是大部分人不知道其內部的原理是怎麼樣的,今天我們就來一起實現乙個簡單的vue 實現之前我們得先看一下object.defineproperty的實現,因為vue主要是通過資料劫持來實現的,通過get set來完成資料的讀取和更新...