C 裡的vector用法,比陣列方便很

2021-09-30 16:19:43 字數 3719 閱讀 6774

在c++中,通常使用陣列來存放一組具有相同資料型別的資料,但是陣列在使用前必須先確定其大小。

stl中提供了vector類,即動態陣列。既然是陣列,vector自然具有陣列的一些特徵,比如下標從零開始、

可以通過下標來訪問陣列中的資料元素等,不同的是:vector具有容量動態增長的能力,而不像普通陣列

一樣其容量一旦確定就不能修改。

下面我們來學習一下vector的基本用法。

vector類為使用者提供了許多函式,比較常用的有以下:

1、建構函式

[cpp]

view plain

copy

print?

vector() 

//建立乙個空的vector物件, t為vector存放的元素型別(下同)

vector(int

size) 

//建立乙個大小為size的vector物件

vector(int

size, t t) 

//建立乙個大小為size, 各元素值均為t的vector物件

2、往vector中新增元素

[cpp]

view plain

copy

print?

void

push_back(t t) 

//在vector的尾部增加乙個元素

iterator insert(iterator iter, t t) 

//在vector中某一元素前插入乙個元素t,iterator為迭代器

void

insert(iterator iter, 

intn, t t) 

//在vector中某一元素錢插入n個相同的元素t

void

insert(iterator iter, iterator first, iterator last) 

//在vector中某一元素錢插入另乙個相同型別vector中[first, last)間的資料

3、刪除元素

[cpp]

view plain

copy

print?

iterator erase(iterator iter) 

//刪除vector中某乙個元素

iterator erase(iterator first, iterator last) 

//刪除vector中[first, last)中的元素

void

clear() 

//刪除vector中的所有元素

4、遍歷vector

[cpp]

view plain

copy

print?

t at(

inti)

//返回下標為i位置的元素

t front()//返回首元素

t back()//返回尾元素

iterator begin()//返回vector的頭指標,指向第乙個元素

iterator end()//返回vector的尾指標,指向最後乙個元素的下乙個位置

reverse_iterator rbegin()//反向迭代器,返回最後乙個元素的迭代指標

reverse_iterator rend()//反向迭代器, 返回第乙個元素錢乙個位置的迭代指標

5、其他

[cpp]

view plain

copy

print?

bool

empty()

//判斷vector是否為空

intsize()

//返回vector中元素個數

intcapacity()

//返回當前vector的最大容量

void

assign(

intn, t t)

//將vector中第n個元素設定為t

接下來通過乙個具體的例子來看看上述函式的簡單用法

[cpp]

view plain

copy

print?

#include

#include

using

namespace

std; 

intmain(

void

)  printf("\n通過引用方式輸出\n"

); for

(int

i = 0; i 

< size; i++)  

printf("\n通過迭代器輸出\n"

); vector>::iterator iter1 = int_vec.begin(); 

while

(iter1 != int_vec.end())  

printf("\n通過反向迭代器輸出\n"

); vector>::reverse_iterator iter2 = int_vec.rbegin(); 

while

(iter2 != int_vec.rend())  

printf("\n下面測試修改元素\n"

); printf("通過陣列下標方式修改第乙個元素。"

); int_vec[0] = 5; 

printf("修改後第乙個元素為:%d\n"

, int_vec[0]); 

printf("通過引用方式修改第二個元素。"

); int

&p = int_vec.at(1); 

p = 6; 

printf("修改後的第二個元素為:%d\n"

, p); 

printf("通過迭代器修改第三個元素。"

); vector>::iterator iter3 = int_vec.begin()+2; 

*iter3 = 7; 

printf("修改後第三個元素為:%d\n"

, *iter3); 

printf("\n下面測試刪除元素\n"

); printf("刪除第乙個元素後,剩餘元素為: 

"); 

int_vec.erase(int_vec.begin()); 

for(

inti = 0; i 

< int_vec.size(); i++)  

printf("\n刪除第1~3個元素後,剩餘元素為: 

"); 

int_vec.erase(int_vec.begin(), int_vec.begin()+2); 

for(

inti = 0; i 

< int_vec.size(); i++)  

return

0; } 

輸出:下面測試輸出

通過陣列方式輸出

1  2  3  4  5

通過引用方式輸出

1  2  3  4  5

通過迭代器輸出

1  2  3  4  5

通過反向迭代器輸出

5  4  3  2  1

下面測試修改元素

通過陣列下標方式修改第乙個元素。修改後第乙個元素為: 5

通過引用方式修改第二個元素。修改後的第二個元素為: 6

通過迭代器修改第三個元素。修改後第三個元素為: 7

下面測試刪除元素

刪除第乙個元素後,剩餘元素為: 6  7  4  5

刪除第1~3個元素後,剩餘元素為:  4  5

vector的 陣列 用法陷阱

vector類為內建陣列提供了一種替代表示,與string類一樣 vector 類是隨標準 c 引入的標準庫的一部分 為了使用vector 我們必須包含相關的標頭檔案 include 使用vector有兩種不同的形式,即所謂的陣列習慣和 stl習慣。1.定義乙個已知長度的 vector vector...

C 之 Vector陣列基礎用法介紹

目錄前言 一 vector陣列簡介 1 引入 2 vector陣列概念 二 vector陣列用法 1 陣列的初始化 1.建構函式 2.常用初始化方式 示例 3.通過insert初始化 2 vector的用法 3 vector的演算法 在寫c 的時候,經常會遇到vector陣列,特別是在學習openc...

C 中vector的用法

c 內建的陣列支援容器的機制,但是它不支援容器抽象的語義。要解決此問題我們自己實現這樣的類。在標準c 中,用容器向量 vector 實現。容器向量也是乙個類模板。標準庫vector型別使用需要的標頭檔案 include vector 是乙個類模板。不是一種資料型別,vector是一種資料型別。vec...