這是我第一次寫部落格,請多指教!
vector是一種向量容器,說白了就是可以改變大小的陣列。
vector是乙個模板類,如果直接這樣會報錯:
1 vector a; //
報錯,因為要指定模板。
需要像這樣:
vectora;^/*這裡可以改成別的型別,float,long等等……
*/
那麼,什麼是模板呢?具體的請看------------------------------------>點我點我!模板是c++支援引數化多型的工具,使用模板可以使使用者為類或者函式宣告一種一般模式,使得類中的某些資料成員或者成員函式的引數、返回值取得任意型別。
模板是一種對型別進行引數化的工具;
通常有兩種形式:函式模板和類模板;
函式模板針對僅引數型別不同的函式;
類模板針對僅資料成員和成員函式型別不同的類。
使用模板的目的就是能夠讓程式設計師編寫與型別無關的**。比如編寫了乙個交換兩個整型int 型別的swap函式,這個函式就只能實現int型,對double,字元這些型別無法實現,要實現這些型別的交換就要重新編寫另乙個swap函式。使用模板的目的就是要讓這程式的實現與型別無關,比如乙個swap模板函式,即可以實現int型,又可以實現double型的交換。模板可以應用於函式和類。下面分別介紹。
注意:模板的宣告或定義只能在全域性,命名空間或類範圍內進行。即不能在區域性範圍,函式內進行,比如不能在main函式中宣告或定義乙個模板。
在此就不多講了。
c++vector函式:
int size():
作用:獲取vector大小。
resize(int x)
作用:變長為x。
clear()
作用:清空vector。
push_back(),pop_back():
棧操作。
vector // 建立乙個空的vector。
vector c1(c2) // 複製乙個vector
vector c(n) // 建立乙個vector,含有n個資料,資料均已預設構造產生
vector c(n, elem) // 建立乙個含有n個elem拷貝的vector
vector c(beg,end) // 建立乙個含有n個elem拷貝的vector
1. 析構函式
c.~vector () // 銷毀所有資料,釋放記憶體
2. 成員函式
c.assign(beg,end)c.assign(n,elem)
將[beg; end)區間中的資料賦值給c。將n個elem的拷貝賦值給c。
c.at(idx)
傳回索引idx所指的資料,如果idx越界,丟擲out_of_range。
c.back() // 傳回最後乙個資料,不檢查這個資料是否存在。
c.begin() // 傳回迭代器中的第乙個資料位址。
c.capacity() // 返回容器中資料個數。
c.clear() // 移除容器中所有資料。
c.empty() // 判斷容器是否為空。
c.end() // 指向迭代器中末端元素的下乙個,指向乙個不存在元素。
c.erase(pos) // 刪除pos位置的資料,傳回下乙個資料的位置。
c.erase(beg,end) //刪除[beg,end)區間的資料,傳回下乙個資料的位置。
c.front() // 傳回第乙個資料。
get_allocator // 使用建構函式返回乙個拷貝。
c.insert(pos,elem) // 在pos位置插入乙個elem拷貝,傳回新資料位置。
c.insert(pos,n,elem) // 在pos位置插入n個elem資料。無返回值。
c.insert(pos,beg,end) // 在pos位置插入在[beg,end)區間的資料。無返回值。
c.max_size() // 返回容器中最大資料的數量。
c.pop_back() // 刪除最後乙個資料。
c.push_back(elem) // 在尾部加入乙個資料。
c.rbegin() // 傳回乙個逆向佇列的第乙個資料。
c.rend() // 傳回乙個逆向佇列的最後乙個資料的下乙個位置。
c.resize(num) // 重新指定佇列的長度。
c.reserve() // 保留適當的容量。
c.size() // 返回容器中實際資料的個數。
c1.swap(c2)
swap(c1,c2) // 將c1和c2元素互換。同上操作。
operator // 返回容器中指定位置的乙個引用。
舉個例子吧!
1 #include 2 #include 3執行截圖:using
namespace
std;45
6int
main()
7
C STL之vector的使用
1.vector是表示可變大小陣列的序列容器。2.就像陣列一樣,vector也採用的連續儲存空間來儲存元素。也就是意味著可以採用下標對vector的元素進行訪問,和陣列一樣高效。但是又不像陣列,它的大小是可以動態改變的,而且它的大小會被容器自動處理。3.本質講,vector使用動態分配陣列來儲存它的...
C STL之vector的拷貝構造
拿到這道題可能很多人都已經暗自裡慶幸,對於學習過過資料結構的人,對於vector這個結構體一定不會陌生,但是如果在面試的過程中面試官考到了這道題我們要該如何來系統的答出令面試官滿意的答案。下面我們按照一定的條理從下面幾個步驟來回答這個問題 1 第一點應該清楚vector使用的是深拷貝 2 選擇合適的...
C STL之vector用法總結
vector是表示可變大小陣列的序列容器。就像陣列一樣,vector也採用的連續儲存空間來儲存元素。也就是意味著可以採用下標對vector的元素進行訪問,和陣列一樣高效。但是又不像陣列,它的大小是可以動態改變的,而且它的大小會被容器自動處理。本質講,vector使用動態分配陣列來儲存它的元素。當新元...