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類型元素