C/C++——vector的基本操作總結
阿新 • • 發佈:2022-05-04
標準庫vector型別是C++中使用較多的一種類模板,vector型別相當於一種動態的容器,在vector中主要有一些基本的操作,接下來分別從以下的幾個方面總結:
- vector物件的定義和初始化
- vector物件的基本操作,主要包括新增元素,遍歷等
1、vector物件的定義和初始化
在vector中主要有四種定義和初始化的方法:
1.1、定義空的vector
定義的方法為:
vector<T> v;
1.2、定義一個vector的副本
定義的方法為:
vector<T> v1(v);
1.3、定義並初始化
定義的方法為:
vector<T> v2(n, i);
定義了長度為n的vector v2,並且每個元素都是i。
1.4、定義並指定初始長度
定義的方法為:
vector<T> v3(n);
採用的初始化方法為預設初始化。
1.5、例子
對於上述的四種定義方法如下圖所示:
#include <stdio.h> #include <vector> using namespace std; int main(){ //第一種定義方法 vector<int> v; for (int i = 0; i < 10; i++){ v.push_back(i); } //第二種定義方法 vector<int> v1(v); //第三種定義方法 vector<int> v2(10, 1); //第四種定義方法 vector<int> v3(10); printf("first: "); for (vector<int>::size_type ix = 0; ix != v.size(); ix ++){ printf("%dt", v[ix]); } printf("n"); printf("second: "); for (vector<int>::size_type ix1 = 0; ix1 != v1.size(); ix1 ++){ printf("%dt", v1[ix1]); } printf("n"); printf("third: "); for (vector<int>::size_type ix2 = 0; ix2 != v2.size(); ix2 ++){ printf("%dt", v2[ix2]); } printf("n"); printf("forth: "); for (vector<int>::size_type ix3 = 0; ix3 != v3.size(); ix3 ++){ printf("%dt", v3[ix3]); } printf("n"); return 0; }
注:上述程式碼是在C中使用vector。
2、vector中的基本操作
在vector中的基本操作包括插入,刪除,遍歷等。
2.1、插入操作
在vector中插入元素包括兩種,一種是在尾部新增元素,使用的函式是push_back()
函式,另一種是在指定位置插入元素,使用到的函式是insert()
函式。
其中,insert()
函式的具體形式為:
insert(p, t)
指的是在迭代器p之前插入值為t的元素。具體應用如下面的例子:
#include <stdio.h> #include <vector> using namespace std; int main(){ vector<int> v; for (int i = 0; i < 10; i++){ v.push_back(i); } for (vector<int>::size_type ix = 0; ix != v.size(); ix ++){ printf("%dt", v[ix]); } printf("n"); //在開始插入10 v.insert(v.begin(), 10); for (vector<int>::size_type ix = 0; ix != v.size(); ix ++){ printf("%dt", v[ix]); } printf("n"); //在10和0之間新增11 vector<int>::iterator it; for (it = v.begin(); it != v.end(); it++){ if (*it == 0){ v.insert(it, 11); break; } } for (vector<int>::size_type ix = 0; ix != v.size(); ix ++){ printf("%dt", v[ix]); } printf("n"); return 0; }
2.2、刪除操作
使用erase()
方法刪除指定的元素。
erase(p)
刪除迭代器p所指向的元素。
#include <stdio.h>
#include <vector>
using namespace std;
int main(){
vector<int> v;
for (int i = 0; i < 10; i++){
v.push_back(i);
}
for (vector<int>::size_type ix = 0; ix != v.size(); ix ++){
printf("%dt", v[ix]);
}
printf("n");
//在開始插入10,10,10
v.insert(v.begin(), 3, 10);
for (vector<int>::size_type ix = 0; ix != v.size(); ix ++){
printf("%dt", v[ix]);
}
printf("n");
//刪除第二個10
int i = 0;
vector<int>::iterator it;
for (it = v.begin(); it != v.end(); it++){
i++ ;
if (i == 2){
v.erase(it);
break;
}
}
for (vector<int>::size_type ix = 0; ix != v.size(); ix ++){
printf("%dt", v[ix]);
}
printf("n");
return 0;
}
除此之外,還有clear()
方法,清空vector中的所有元素,pop_back()
方法,刪除末尾的元素。
#include <stdio.h>
#include <vector>
using namespace std;
int main(){
vector<int> v;
for (int i = 0; i < 10; i++){
v.push_back(i);
}
for (vector<int>::size_type ix = 0; ix != v.size(); ix ++){
printf("%dt", v[ix]);
}
printf("n");
//刪除末尾元素
v.pop_back();
for (vector<int>::size_type ix = 0; ix != v.size(); ix ++){
printf("%dt", v[ix]);
}
printf("n");
return 0;
}
2.3、遍歷
遍歷通常有兩種方式:
- 通過下標
- 利用迭代器
如下:
#include <stdio.h>
#include <vector>
using namespace std;
int main(){
vector<int> v;
for (int i = 0; i < 10; i++){
v.push_back(i);
}
//利用下標
for (vector<int>::size_type ix = 0; ix != v.size(); ix ++){
printf("%dt", v[ix]);
}
printf("n");
//利用迭代器
vector<int>::iterator it;
for (it = v.begin(); it != v.end(); it ++){
printf("%dt", *it);
}
printf("n");
return 0;
}
2.4、其他
在上面的操作中,還有一些操作,如:
- size(),返回的是vector的大小