C++ vector初始化方式


C++的初始化方法很多,各種初始化方法有一些不同。

(1): vector<int> ilist1;

    默認初始化,vector為空, size為0,表明容器中沒有元素,而且 capacity 也返回 0,意味着還沒有分配內存空間。這種初始化方式適用於元素個數未知,需要在程序中動態添加的情況。

(2): vector<int> ilist2(ilist);

vector<int> ilist2  = ilist; 

兩種方式等價 ,ilist2 初始化為ilist 的拷貝,ilist必須與ilist2 類型相同,也就是同為int的vector類型,ilist2將具有和ilist相同的容量和元素

(3): vector<int> ilist = {1,2,3.0,4,5,6,7};

 vector<int> ilist {1,2,3.0,4,5,6,7};

ilist 初始化為列表中元素的拷貝,列表中元素必須與ilist的元素類型相容,本例中必須是與整數類型相容的類型,整形會直接拷貝,其他類型會進行類型轉換。

(4): vector<int> ilist3(ilist.begin()+2,ilist.end()-1);

ilist3初始化為兩個迭代器指定范圍中元素的拷貝,范圍中的元素類型必須與ilist3 的元素類型相容,在本例中ilist3被初始化為{3,4,5,6}。注意:由於只要求范圍中的元素類型與待初始化的容器的元素類型相容,因此迭代器來自不同的容器是可能的,例如,用一個double的list的范圍來初始化ilist3是可行的。另外由於構造函數只是讀取范圍中的元素進行拷貝,因此使用普通迭代器還是const迭代器來指出范圍並沒有區別。這種初始化方法特別適合於獲取一個序列的子序列。

(5): vector<int> ilist4(7);

默認值初始化,ilist4中將包含7個元素,每個元素進行缺省的值初始化,對於int,也就是被賦值為0,因此ilist4被初始化為包含7個0。當程序運行初期元素大致數量可預知,而元素的值需要動態獲取的時候,可采用這種初始化方式。

(6):vector<int> ilist5(7,3);

指定值初始化,ilist5被初始化為包含7個值為3的int

 

內容主要來自於===>  C++primer習題集(第五版)P198
————————————————
版權聲明:本文為CSDN博主「未來老干部」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/veghlreywg/article/details/80400382


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM