您的位置:首页 > 编程语言 > C语言/C++

C/C++基础——vector的基本操作总结

2016-08-11 10:38 387 查看
http://blog.csdn.net/google19890102/article/details/51701144

标准库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("%d\t", v[ix]);
}
printf("\n");
printf("second: ");
for (vector<int>::size_type ix1 = 0; ix1 != v1.size(); ix1 ++){
printf("%d\t", v1[ix1]);
}
printf("\n");
printf("third: ");
for (vector<int>::size_type ix2 = 0; ix2 != v2.size(); ix2 ++){
printf("%d\t", v2[ix2]);
}
printf("\n");
printf("forth: ");
for (vector<int>::size_type ix3 = 0; ix3 != v3.size(); ix3 ++){
printf("%d\t", 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("%d\t", v[ix]);
}
printf("\n");

//在开始插入10
v.insert(v.begin(), 10);
for (vector<int>::size_type ix = 0; ix != v.size(); ix ++){
printf("%d\t", 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("%d\t", 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("%d\t", 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("%d\t", 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("%d\t", 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("%d\t", v[ix]);
}
printf("\n");

//删除末尾元素
v.pop_back();

for (vector<int>::size_type ix = 0; ix != v.size(); ix ++){
printf("%d\t", 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("%d\t", v[ix]);
}
printf("\n");

//利用迭代器
vector<int>::iterator it;
for (it = v.begin(); it != v.end(); it ++){
printf("%d\t", *it);
}
printf("\n");

return 0;
}


2.4、其他

在上面的操作中,还有一些操作,如:
size(),返回的是vector的大小
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: