向量 vector 是一種物件實體, 能夠容納許多其他型別相同的元素, 因此又被稱為容器。 與string相同, vector 同屬於stl(standard template library, 標準模板庫)中的一種自定義的資料型別, 可以廣義上認為是陣列的增強版。
在使用它時, 需要包含標頭檔案 vector,#include
vector 容器與陣列相比其優點在於它能夠根據需要隨時自動調整自身的大小以便容下所要放入的元素。此外, vector 也提供了許多的方法來對自身進行操作。
vector 型變數的宣告以及初始化的形式也有許多, 常用的有以下幾種形式:
vector<
int> a ;
//宣告乙個int型向量a
vector<
int>a(
10);//宣告乙個初始大小為10的向量
vector<
int>a(
10,1)
;//宣告乙個初始大小為10且初始值都為1的向量
vector<
int>
b(a)
;//宣告並用向量a初始化向量b
vector<
int>
b(a.
begin()
, a.
begin()
+3);
//將a向量中從第0個到第2個(共3個)作為向量b的初始值
除此之外, 還可以直接使用陣列來初始化向量:
int n=
;vector<
int>
a(n, n+5)
;//將陣列n的前5個元素作為向量a的初值
vector<
int>a(
&n[1],
&n[4])
;//將n[1] - n[4]範圍內的元素作為向量a的初值
元素的輸入和訪問可以像操作普通的陣列那樣, 用cin>>進行輸入, cout<#include
#include
using namespace std ;
intmain()
在元素的輸出上, 還可以使用遍歷器(又稱迭代器)進行輸出控制。在vectorb(a.begin(), a.begin()+3)
; 這種宣告形式中,(a.begin()、a.begin()+3)
表示向量起始元素位置到起始元素+3之間的元素位置。(a.begin(), a.end())
則表示起始元素和最後乙個元素之外的元素位置。
向量元素的位置便成為遍歷器, 同時, 向量元素的位置也是一種資料型別, 在向量中遍歷器的型別為:vector::iterator
。 遍歷器不但表示元素位置, 還可以再容器中前後移動。
在上例中講元素全部輸出部分的**就可以改寫為:
//全部輸出
vector<
int>
::iterator t ;
for(t=a.
begin()
; t!=a.
end(
); t++
) cout<<
*t<<
" ";
*t 為指標的間接訪問形式, 意思是訪問t所指向的元素值。
1>. a.size() //獲取向量中的元素個數
2>. a.empty() //判斷向量是否為空
3>. a.clear() //清空向量中的元素
4>. 複製
a = b ; //將b向量複製到a向量中
5>. 比較
保持 ==、!=、>、>=、<、<= 的慣有含義 ;
如: a == b ; //a向量與b向量比較, 相等則返回1
6>. 插入 - insert
①、 a.insert(a.begin(), 1000); //將1000插入到向量a的起始位置前
②、 a.insert(a.begin(), 3, 1000) ; //將1000分別插入到向量元素位置的0-2處(共3個元素)
③、 vectora(5, 1) ;
vectorb(10) ;
b.insert(b.begin(), a.begin(), a.end()) ; //將a.begin(), a.end()之間的全部元素插入到b.begin()前
7>. 刪除 - erase
①、 b.erase(b.begin()) ; //將起始位置的元素刪除
②、 b.erase(b.begin(), b.begin()+3) ; //將(b.begin(), b.begin()+3)之間的元素刪除
8>. 交換 - swap
b.swap(a) ; //a向量與b向量進行交換
與陣列相同, 向量也可以增加維數, 例如宣告乙個m*n大小的二維向量方式可以像如下形式:
vector< vector<
int>
>b(
10, vector<
int>(5
));//建立乙個10*5的int型二維向量
在這裡, 實際上建立的是乙個向量中元素為向量的向量。同樣可以根據一維向量的相關特性對二維向量進行操作。
#include
#include
using namespace std ;
intmain()
return0;
}
C 中vector的用法例項解析
一 概述 vector是c 標準模板庫中的部分內容,它是乙個多功能的,能夠操作多種資料結構和演算法的模板類和函式庫。vector是乙個容器,它能夠存放各種型別的物件,簡單地說,vector是乙個能夠存放任意型別的動態陣列,可以動態改變大小。例如 c語言風格 int myhouse 100 採用vec...
C 中vector的用法
c 內建的陣列支援容器的機制,但是它不支援容器抽象的語義。要解決此問題我們自己實現這樣的類。在標準c 中,用容器向量 vector 實現。容器向量也是乙個類模板。標準庫vector型別使用需要的標頭檔案 include vector 是乙個類模板。不是一種資料型別,vector是一種資料型別。vec...
C 中vector的用法
1 在使用前要包含vector對應的標頭檔案 include 2 vector是同一種型別的物件的集合,每個物件都有乙個對應的整數索引值。我們把vector稱為容器,乙個容器中的所有物件都必須是同一種型別的。3 vector是乙個類模板 class template 模板允許程式設計師編寫單個類或函...