标准库类型基础(2)— vector

0、什么是vector(容器)

vector是同一种类型对象的集合,负责管理与存储元素相关的内存。vector不是一种数据类型,而只是一个类模板,可以用来定义任意多种数据类型。vector类型的每一种都指定了其保存元素的类型。因此,vector<string>,vector<int>都是数据类型。在使用vector之前,必须包含相应的头文件。假设下文都做了声明。

#include<vector>
using std::vector;

1、vector对象的定义和初始化

主要有一下四种格式:

vector<T> v1;	        //vector保存类型为T的对象。默认构造函数v1为空
vector<T> v2(v1);	//v2是v1的副本
vector<T> v3(n,i);	//v3包含n个值为i的元素
vector<T> v4(n);	//v4含有n个元素,元素的初始值具体为什么,取决于元素的类型,如int类型默认初始化为0(同v1初始化)

如:
vector<int> v1(10,-1);		//10 elements,each initialized to -1
vector<string> v2(10,"hi");	//10 strings,each initialized to "hi"
vector<int> v3(10);		//10 elements,each initialized to 0
vector<string> v4(10);		//10 strings,each an empty string


2、vector对象的操作

下边这段代码包含了vector对象的定义,size,添加元素和下标操作。

int main()
{
	string word;
	vector<string> text;  //定义,空的empty

	while(cin>>word){
		text.push_back(word); //添加操作
	}
	
	for(vector<string>::size_type i=0;i!=text.size();++i){   //size操作
		for(vector<string>::size_type index = 0; index != text[i].size(); ++index)
			text[i][index]=toupper(text[i][index]);
	}

	for(vector<string>::size_type i=0;i!=text.size();++i){
		cout<<text[i]<<" ";   //下标操作
		if(i%8==7)
			cout<<endl;
	}
	return 0;
}

2.1 size操作

成员函数size返回相应vector类定义的size_type的值。在使用size_type类型时,必须指出类型是在哪里定义。vector类型总是包括vector的元素类型。

vector::size_type         //error
vector<int>::size_type;   //ok

2.2 向vector添加元素

vector对象的一个重要属性就是可以在运行时高效地添加元素,因此在元素值已知的情况下,最好是动态地添加元素。

一个问题,空vector类型的v,添加操作后,第一个添加的元素是v[0]还是v[1]?下边一段代码:

	string word("value");
	vector<string> v;
	cout<<v.size()<<endl;	//output: 0
	v.push_back(word);
	cout<<v.size()<<endl;	//output: 1

空vector的大小是0。定义一个空vector是并没有分配内存。因此,对一个空vector进行添加操作,第一个添加的元素可以通过下标操作v[0]读取出来。

2.3 下标操作

注意三点:1)下标操作不能添加元素;2)必须是已经存在的元素才能使用下标进行索引;3)下标必须是常量(表达式)。

vector<int> v(10);	//vector with 10 elements
cout<<v[0]<<endl;	//ok
cout<<v[10]<<endl;	//error,v has elements 0..9



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值