C Vector 簡單實現 會用也要會寫

2021-07-04 19:43:44 字數 808 閱讀 8877

我們知道,記憶體塊的大小是不能改變的,因此陣列的大小不能改變。但是stl的vector讓我們擺脫了這種困擾,它可以幫我們動態的管理陣列的大小。

誠然,stl的vector底層還是通過動態陣列來實現的,當陣列大小不夠時,就申請一塊更大的記憶體,同時將原來的元素的值拷貝過去,再刪掉原來那塊小記憶體,當然這一操作的帶價是非常高的,包括了一次申請記憶體和釋放記憶體,以及元素的初始化。(更多的一些注意問題可以檢視之前的博文

本文給出了vector類模板的實現,相比於stl的vector模板當然差的遠了,但是大致原理差不多了,大家讀讀下面的**應該可以讓你對stl的vector的理解加深。

templateclass vector

vector(const vector& rhs):objects(null)

~vector()

// 過載=號操作符

const vector& operator=(const vector& rhs)

//調整size

void resize(int newsize)

//調整預留的空間,也就是實際上申請的記憶體的大小

void reserve(int newcapacity){

if(newcapacity

這裡稍微提一下 const成員函式,也稱常成員函式,或者唯讀成員函式,const物件只能訪問常成員函式,通過const指標呼叫也只能訪問常成員函式,但是有個特例,建構函式和析構函式是唯一不是const成員函式卻可以被

const物件

呼叫的成員函式。

若有錯誤,歡迎指正。

C vector簡單使用

include include include algorithm意為 演算法 是c 的標準模版庫 stl 中最重要的標頭檔案之一,提供了大量基於迭代器的非成員模板函式。using namespace std int main cout array.push back 4 新增在尾部 array.i...

C vector 簡單教程

vector是表示可以改變大小的陣列的序列容器。就像陣列一樣,向量使用連續的儲存位置作為元素,這意味著它們的元素也可以使用常量指向其元素的 下標 來訪問,並且與陣列一樣有效。但與陣列不同,它們的大小可以動態變化,其儲存由容器自動處理。在使用它時,需要包含標頭檔案 vector include vec...

c vector基本實現

include include include includeusing namespace std namespace bit 第乙個元素的位置 iterator end 最後乙個元素的位置 constiterator cbegin const constiterator cend const s...