11/7/2 STL vector (2)

 

1.矢量的容量與大小

容量(capacity)指矢量目前所佔據的內存的大小,表示一種存儲的能力

大小(size)表示目前矢量的容量中已經使用部分的大小,

       vec.size() 返回矢量中元素的個數,如果矢量中只有第0號元素,則size爲1

empty() 函數返回一個bool值,是用來判斷矢量是否爲空(即 size 是否爲0)如果爲空,則返回true,不爲空則返回false

max_size() 函數可能不常用,是用來返回矢量vector<T>最大容量的函數,容量與T類型相關(【疑問】僅與T類型有關?)

resize() 函數重新制定矢量的size,如果指定了更大的size,則用第二參數補全剩餘的空間,如果未指定第二參數,int 默認爲0, 類類型調用默認構造函數

而如果指定了更小的size,則截取矢量尾部的元素

一個有趣的現象是,在矢量自動增加容量的時候,容量的增加量是原容量的一半。如果原容量爲13,則增加6

2.用迭代器遍歷矢量的實例

迭代器的類型是vector<T>::iterator

   1:  for(vector<T>::iterator iter = vec.begin(); iter < vec.end(); iter++) 
   2:          cout<<*iter<<endl;
 

3.訪問矢量中元素以及增刪操作

at() 函數類似於 下標訪問運算符 [] ,但是當越界的時候 at() 函數會拋出一個 out_of_range 類型的異常

front() 函數可以返回矢量的第一個元素的值,而不是迭代器

back() 函數返回矢量的尾元素的值,而不是迭代器

pop_back() 函數可以刪除矢量尾的一個元素,多次操作可以清空矢量

但也可以直接調用 clear() 函數,刪除矢量的所有元素,將大小size 置爲0,但不改變矢量的容量

insert() 函數的3個版本:

1.insert(iterator , T) 可以用來在迭代器所指位置插入一個T類型對象

2.insert(iterator , int n, T) 用來在迭代器所指的位置插入 n 個 T類型對象

3.insert(iterator ,iterator , iterator ) 用來在第一個迭代器所指的位置,插入第二個迭代器與第三個迭代器之間的序列,注意,第三個迭代器指向要插入的元素序列的最後一個元素的下一個位置

erase() 兩個版本:

版本一:一個參數,類型爲迭代器,用來刪除該迭代器所指位置的元素

版本二:二個參數,類型均爲迭代器,用來刪除序列,第二個迭代器指元素序列最後一個元素的下一個位置

swap() 交換兩個矢量,兩個矢量的 T 要相同,交換後,容量,大小,內容均交換(可以理解爲是交換名稱)

實例:vec1.swap(vec2);

assign() 用另一個序列替代矢量中的 全部 內容,注意,使用該函數,第一步先要刪除矢量中的所有內容。   有兩個版本。

版本1:assign(iterator , iterator ) 兩個迭代器指向一個序列的始末位置,第二個迭代器仍是指末尾元素的下一位, 也可以用常規指針來代替迭代器,注意,第二個指針也是指向序列的末尾元素的下一個位置

版本2:assign(int , T ) 替換爲n個T類型元素

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章