...
(1)使用vector之前必須包含頭文件<vector>:#include<vector> (2)namespace std{ template <class T, class Allocator = allocator<T> > class vector; } vector的元素可以是任意類型T,但必須具備assignable和copyable兩個性質。第二個template參數可有可無,用來定義記憶體模型,預設的模型是C++標準程式庫提供的allocator。 (3)在末端附加或刪除元素時,vector的性能相當好。可是如果你在前端或中部安插或刪除元素,性能就不怎麼樣了,因為操作點之後的每一個元素都必須移動到另一個位置,而每一次移動都得調用assignment操作符 (4)vector性能優異的秘籍之一就是配置比其所容納的元素所需更多的記憶體。當vector申請的記憶體被用盡時,vector會重新申請一片新的記憶體,通常新申請的記憶體會是原來記憶體的兩倍.一旦記憶體重新配置,和vector元素相關的所有references,pointers,iterators都會失效 (5)vector的各項操作: vector<Elem> c 產生一個空vector vector<Elem> c1(c2) 產生另一個同型vector的副本 vector<Elem> c(n) 利用元素的default構造函數生成一個大小為n的vector vector<Elem> c(n, elem) 產生一個大小為n的vector,每個元素值都是elem vector<Elem> c(beg, end) 產生一個vector,以區間[beg, end)作為元素初值 c.~vector<Elem>() 銷毀所有元素並釋放記憶體 c.size() 返回當前的元素數量 c.empty() 判斷vector是否為空 c.max_size() 返回可容納的元素最大數值 c.capacity() 返回重新分配空間前所能容納的元素最大數量 c.reserve() 如果容量不足,擴大之 c1 compare c2 compare可為==,!=,<,>,<=和>= c1 = c2 將c2全部元素賦值給c1 c.assign(n, elem) 複製n個elem,賦值給c c.assign(beg, end) 將區間[beg, end)內的元素賦值給c c1.swap(c2) 將c1和c2元素互換 c.at(idx) 返回索引idx所標示的元素,如果idx越界則拋出out_of_range異常 c[idx] 返回索引idx所標示的元素,不進行範圍檢查 c.front() 返回第一個元素,不檢查元素是否存在 c.back() 返回最後一個元素,不檢查元素是否存在 c.begin() 返回一個隨機存取迭代器,指向第一個元素 c.end() 返回一個隨機存取迭代器,指向最後元素的下一個位置 c.rbegin() 返回一個逆向迭代器,指向逆向迭代的第一個元素 c.rend() 返回一個逆向迭代器,指向逆向迭代的最後元素的下一個位置 vector迭代器持續有效,除非發生兩種情況:(1)使用者在一個較小的索引位置上安插或移除元素(2)由於容量的變化而引起記憶體的重新分配 c.insert(it, elem) 在it位置上插入一個elem副本並返回新元素的位置 c.insert(it, n, elem) 在it位置上插入n個elem副本,無返回值 c.insert(it, beg, end) 在it位置上插入區間[beg, end)內的所有元素副本,無返回值 c.push_back(elem) 在尾部添加一個elem副本 c.pop_back() 移除最後一個元素(但不回傳) c.erase(it) 移除it位置上的元素,返回下一個元素的位置 c.erase(beg, end) 移除[beg, end)區間內的所有元素,返回下一個元素的位置 c.resize(num) 將元素數量改為num(如果size()變大了,多出來的新元素都需以default構造函數構造完成) c.resize(num, elem) 將元素數量改為num(如果size()變大了,多出來的新元素都是elem的副本) c.clear() 將容器清空