vector容器

这里仅仅对vector做简要的总结。后续会对该容器进行详细介绍。如下图,将以三个方面对vector容器进行简要介绍。


1.vector容器的特点。

1)vector是一个类模板,不是一个数据类型。因此可以用vector(类模板)定义多种数据类型。

2)vector是一个顺序容器,且容器内的元素类型必须一致。因此很多情况下可以使用vector代替数组。

3)vector容器长度支持动态增长。数组不可以。

4)可以以下标索引的方式访问vector容器内的元素。


2.vector容器的声明、定义以及初始化。

1)声明。

vector容器的声明必须包含其头文件和命名空间。即# include <vector> using std::vector;

2)定义及初始化

vector定义及初始化有四种方式。

# include <iostream>
# include <string>
# include <vector>
using std::vector;
using std::string;
using std::cout;
using std::endl;
using std::cin;
int main()
{
	vector<string> v1;//调用默认构造函数,
	vector<string> v2(v1);//调用拷贝构造函数
	vector<string> v3(5,"China");//v3包含5个string类对象,对象的值为China
	vector<string> v4(5);//v4包含5个的string类对象,对象的值为空
	return 0;
}

最好的方式为第一种,后面介绍其初始化方式。

3)vector对象的操作

第一种:vector支持算术操作运算符。==、!= 、<、 > 、<= 、>= 。与string类型所支持的这些操作符是一样的。

第二种:支持push_back、empty和size三种操作。push_back:向容器里末尾添加元素。

第三种:支持下标索引操作。下标索引操作不用于添加元素,并且下标的索引的元素必须存在。

vector添加元素和输出元素。

# include <iostream>
# include <string>
# include <vector>
using std::vector;
using std::string;
using std::cout;
using std::endl;
using std::cin;
int main()
{
	string s;
	vector<string> v1;//调用默认构造函数
	vector<string> v2(10);//vector容器里含有10个空的string类对象。
	v2.push_back("fas");//push_back将元素放在容器尾。
	cout<<v2.size()<<endl;
	v2[0] = "china";//由于vector容器内元素都是string类型,因此支持string的操作。
	cout<<v2[0]<<endl;
	//向容器里添加元素.
	int n;
	cout<<"输入添加至容器v1元素的个数:";
	cin>>n;
	for(vector<string>::size_type i = 0;i != n;++ i) 
	{
		cin>>s;
		v1.push_back(s);//向容器尾添加元素。
	}
	//遍历容器里的元素。用迭代器遍历容器。
	cout<<"容器v1的元素为:";
	for(vector<string>::iterator iter = v1.begin();iter != v1.end();++ iter)
	{
		cout<<*iter<<" ";
	}
	cout<<endl;
	cout<<"容器的大小为:"<<v1.size()<<endl;
	//下标索引遍历容器。这里需要注意ix!=v1.size();因为vector容器支持长度动态增长,因此这里遍历时
	//养成好的习惯写成v1.size();
	cout<<"容器v1的元素为:";
	for(vector<string>::size_type ix = 0;ix != v1.size();++ ix)
	{
		cout<<v1[ix]<<" ";
	}
	cout<<endl;
	cout<<"容器的大小为:"<<v1.size()<<endl;
	return 0;
}
 

注意下标索引的情况,不能索引不存在的容器元素。特别这种情况:
vector<int> v;
v[0] = 12;无论v[0]作为左值还是右值,均不可以。


用几种方法定义vector对象,给定10个整型元素,每个元素的值为10。

# include <iostream>
# include <string>
# include <vector>
using std::vector;
using std::string;
using std::cout;
using std::endl;
using std::cin;
int main()
{
	//第一种
	vector<int> v1(10,42);
	vector<int> v2;
	vector<int> v3(10);
	vector<int> v4;
	//第二种
	for(vector<int>::size_type ix = 0;ix != 10;++ ix)
	{
		v2.push_back(42);
	}
	//第三种
	for(vector<int>::iterator iter = v3.begin();iter != v3.end();++ iter)
	{
		*iter = 42;
	}
	//第三种
	for(int i = 0;i < 10;++ i)
	{
		v4.push_back(42);
	}
	return 0;
}












  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值