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