vector
vector也叫變長陣列,即「長度根據需要而自動改變的陣列」。
在編寫c++程式時使用vector,需要加上以下標頭檔案和語句:
#include
using
namespace std;
1.vector的定義
vector<
typename
> name;
其中typename指的是型別,name則指變長陣列名。在使用時,typename可以是int,double,char等任意的基本型別,也可以是結構體型別,除此之外,還可以是stl標準容器,如vector、set、queue等。舉例如下:
vector<
int> name1;
//定義乙個int型別的變長陣列
vector<
double
> name2;
//定義乙個double型別的變長陣列
vetctor<
char
> name3;
//定義乙個char型別的變長陣列
vector name4;
//定義乙個結構體型別的變長陣列
vectorint>
> name3;
//類似於定義乙個二維陣列,每乙個維度都是可變的;為避免編譯器將》識別為移位操作,寫為》 >.
定義固定長度的vector陣列
vector<
typename
> name[size]
;
舉例如下:
vector<
int> array[
100]
;//相當於定義了具有100個變長陣列的陣列,每乙個arr[0]~arr[99]都是乙個vector
2.訪問vector容器內的元素
(1)可以通過下標訪問
例:
#include
#include
using
namespace std;
intmain()
return0;
}
(2)通過迭代器訪問
之前看到迭代器兩個字就不想往下看了,聽這個名字就感覺很複雜,其實是寫的方式比較複雜,道理很簡單,將迭代器變數理解為乙個指標,每次指向變長陣列中的乙個元素的位址,要想取出該元素與指標取元素值的方式相同。
定義迭代器的方式為:
vector<
typename
>
::iterator it;
舉例:
vector<
int>
::itarator it;
//變長陣列定義的是什麼型別,前面就寫什麼
#include
#include
using
namespace std;
intmain()
for(vector<
int>
::iterator it=name.
begin()
;itend(
);it++
)//因為迭代器和指標的用法相同,也可用下面方法獲取name陣列的值
vector<
int>
::iterator it=name.
begin()
;for
(int i=
0;i<
3;i++
)return0;
}
name.begin()指向的是name陣列的第乙個元素的位址,name.end指向的是name陣列最後乙個元素的下乙個位址,*(name.begin()+i)等價於name[i]。
3.vector相關函式
(1)push_back(x)
表示向vector陣列中新增乙個元素x,時間複雜度為o(1)。
用法:
vector<
int> arr;
arr.
push_back(10
);
(2)pop_back()
表示刪除vector陣列的最後乙個元素,時間複雜度o(1)。
用法:
vector<
int> arr;
arr.
push_back(10
);arr.
pop_back()
;
(3)size()
用來獲取vector容器中的元素,返回的數是無符號型別,用%d接收也可以,時間複雜度o(1)。
#include
#include
using
namespace std;
intmain()
printf
("%d"
,name.
size()
);return0;
}
(4)clear()
用來清空vector容器中的所有元素,時間複雜度o(n),n為容器中的元素個數。
(5)insert()
insert(it,x)表示向迭代器it指向的位置插入元素x,時間複雜度o(n)
(6)erase()
erase()可以用來刪除單個元素和乙個區間內的所有元素。時間複雜度o(n);
erase
(it)
;//it為迭代器,即刪除迭代器為it處的元素
#include
#include
using
namespace std;
intmain()
name.
erase
(name.
begin()
,name.begin+1)
;//刪除name[0]
for(vector<
int>
::iterator it=name.
begin()
;itend(
);it++
)return0;
} ``
C 標準模板庫(STL)之vector
vector即長度可變的陣列 標頭檔案宣告 include using namespace std 1.定義 vector int v vectorint age 兩個 之間需加空格,不然會被誤以為是移位操作 vector int vi 100 vector陣列,vi 0 vi 99 每乙個都是乙個...
C 標準模板庫(STL)之 string
在c語言中,一般使用字元陣列char str來存放字串,但是使用字元陣列有時會顯得麻煩,c 在stl中加入了string型別,對字串常用的需求功能進行了封裝,使得操作起來更方便,且不易出錯。如果需要使用string 需要新增string標頭檔案,即 include 注 string.h和string...
C 標準模板庫(STL)之 vector
一 vector的常見用法詳解 1.vector的定義 標頭檔案 include 單獨定義乙個vector vectorname 注 如果typename也是乙個stl容器,定義的時候要記得在 符號之間加上空格,因為一些使用c 11之前標準的編譯器會把它視為移位操作,導致編譯錯誤。如果typenam...