vector

vector

翻译为向量,可以称之为“变长数组”,在使用时需加上 vector 头文件,即 #include <vector>,并在头文件下加上 “using namespace std;”。

1. vector 的定义

vector<typename> name ;

即:vector 数据类型 名称
相当于一维变长数组,其中:
typename 可以是任何基本类型,例如 int, char, double, 结构体, STL 容器。
例如:

vector<int> vi ;
vector<vector<int> > vi ;	//注意若放入STL容器,要在> >中间加空格
vector<typename> Arrayname[arraySize] ;

即:vector 数据类型 多个vector (从Arrayname[0]~Arrayname[arraySize-1]) [vector个数]
例如:

vector<int> vi[100] ;

2.vector 容器内元素的访问

(1) 通过下标访问

vector<int> vi ;

直接访问 vi[index], index0vi.size()-1

(2) 通过迭代器访问

vector<typename>::iterator it ;
//通过 *it 访问vector里的元素

例如:

#include <cstdio>
#include <vector>
using namespace std ;
int main () {
	vector<int> vi ;
	for (int i = 1; i <= 5; i++) {
		vi.push_back (i) ;
	}
	//vi.begin () 为取vi的首元素地址,而it指向这个地址
	vector<int>::iterator it = vi.begin () ;
	for (int i = 0; i < 5; i++) {
		printf ("%d ", *(it+i)) ;
	}  
	return 0 ;
}
//可以看出:vi[i]和(vi.begin()+i)是等价的
//利用it++访问
#include <cstdio>
#include <vector>
using namespace std ;
int main () {
	vector<int> vi ;
	for (int i = 1; i <= 5; i++) {
		vi.push_back (i) ;
	}
	//vector的迭代器不支持it<vi.end()的写法, 因此循环条件只能使用it!=vi.end()
	for (vector<int>::iterator it = vi.begin(); it != vi.end(); it++) {
		printf ("%d ", *it) ;
	} 
	return 0 ;
}

3. vector 常用函数实例解析

(1). push_back()

//push_back():在 vector 后面添加一个元素 x
#include <cstdio>
#include <vector>
using namespace std ;
int main () {
	vector<int> vi ;
	for (int i = 1; i <= 3; i++) {
		vi.push_back(i) ;
	}
	for (int i = 0; i < vi.size(); i++) {	//通过下标访问 
		printf ("%d ", vi[i]) ;	 
	}
	return 0 ;
} 

(2). pop_back()

//pop_back():删除 vector 尾的元素
#include <cstdio>
#include <vector>
using namespace std ;
int main () {
	vector<int> vi ;
	for (int i = 1; i <= 3; i++) {
		vi.push_back(i) ;
	}
	vi.pop_back() ;
	for (int i = 0; i < vi.size(); i++) {
		printf ("%d ", vi[i]) ;
	}
	return 0 ;
}

(3). size()

//size():获得 vector 中元素个数
#include <cstdio>
#include <vector>
using namespace std ;
int main () {
	vector<int> vi ;
	for (int i = 1; i <= 3; i++) {
		vi.push_back(i) ;
	}
	printf ("%d", vi.size()) ;
	return 0 ;
} 

(4). clear()

//clear():清空 vector 中的所有元素
#include <cstdio>
#include <vector>
using namespace std ;
int main () {
	vector<int> vi ;
	for (int i = 1; i <= 3; i++) {
		vi.push_back(i) ;
	}
	vi.clear() ;
	printf ("%d", vi.size()) ;
	return 0 ;
} 

(5). insert()

//insert(it, x):向 vector 中任意迭代器 it 处插入元素 x
#include <cstdio>
#include <vector>
using namespace std ;
int main () {
	vector<int> vi ;
	for (int i = 1; i <= 3; i++) {
		vi.push_back(i) ;
	}
	vi.insert(vi.begin() + 2, -1) ;		//插入元素到下标为2的位置
	for (int i = 0; i < vi.size(); i++) {
		printf ("%d ", vi[i]) ;
	}
	return 0 ;
}

(6). erase()

i) 删除单个元素

//删除下标为 i 的单个元素:vi[i]
#include <cstdio>
#include <vector>
using namespace std ;
int main () {
	vector<int> vi ;
	for (int i = 1; i <= 5; i++) {
		vi.push_back(i) ;
	}
	vi.erase(vi.begin()+3) ;
	for (int i = 0; i < vi.size(); i++) {
		printf ("%d ", vi[i]) ;
	}
	return 0 ;
}

ii) 删除区间内元素

//删除区间 [a, b] 内元素:vi.erase(vi.begin()+a, vi.begin()+(b+1)) 
#include <cstdio>
#include <vector>
using namespace std ;
int main () {
	vector<int> vi ;
	for (int i = 1; i <= 9; i++) {
		vi.push_back(i) ;
	}
	vi.erase(vi.begin()+1, vi.begin()+3) ;	//删除区间[1, 2]的元素 
	for (int i = 0; i < vi.size(); i++) {
		printf ("%d ", vi[i]) ;
	}
	return 0 ;
} 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值