我們知道,記憶體塊的大小是不能改變的,因此陣列的大小不能改變。但是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...