c++标准库的类模板vector介绍
下面我根据我的学习情况介绍下标准库的类模板vector,它代表一种更健壮的数据类型,提供了许多额外的功能。
C++标准类库提供了模板vector,它使得程序员能够创建一种功能强大并且不容易出错的数据类型。
下面以一个程序的实际例子为例,初识下vector。
// vector_demo.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
#include <iomanip>
using std::setw;
#include <vector>
using std::vector;
void outputVector(const vector<int>&);
void inputVector(vector<int>&);
int _tmain(intargc, _TCHAR*argv[])
{
vector<int> integers1(7); //创建个vector对象,用于保存int类型的值,其中integers1包含了个元素
vector<int> integers2(10); //integers2包含了个元素,每个vector对象的所有元素都被设置为
cout<<integers1.size()<<endl; //vector的size成员函数获得integers1的大小(元素的个数)
outputVector(integers1);
cout<<integers2.size()<<endl;
outputVector(integers2);
//输入并打印integers1和integers2
inputVector(integers1); //将integers1和integers2传递给inputVector函数,从用户处读取每个vector元素的值,
inputVector(integers2); //这个函数利用方括号形成左值,用于保存每个vector元素中的输入值
outputVector(integers1);
outputVector(integers2);
//对vector对象使用(!=)运算符
if(integers1 != integers2)
{
cout<<"integers1和integers2不相等"<<endl;
}
//创建动态数组integers3,用integers1初始化
//c++标准库的类模板vector可用来创建一个新的vector对象,并用现有的vector对象的内容初始化
vector<int> integers3(integers1); //创建一个vector对象integers3,并用integers1的副本初始化
cout<<integers3.size()<<endl;
outputVector(integers3);
//重载赋值(=)运算符
integers1=integers2;
outputVector(integers1);
outputVector(integers2);
//使用相等(==)运算符
if(integers1==integers2)
{
cout<<"integers1和integers2相等"<<endl;
}
//用方括号[]创建右值
cout<<integers1[5];
//用方括号[]创建左值
integers1[5]=1000;
outputVector(integers1);
//下标数组越界————标准类模板vector在它的成员函数at中提供了边界检查,如果它的实参是一个无效的下标,就会“抛出一个异常”
//integers1.at(15)=1000;//错误,越界
system("pause");
return0;
}
void outputVector(const vector<int> &array)
{
size_ti; //vector的size成员函数返回一个size_t类型(以免发生编译警告)
for(i=0; i<array.size(); i++)
{
cout<<setw(12)<<array[i];
if((i+1)%4==0)
{
cout<<endl;
}
}
if(i%4!=0)
{
cout<<endl;
}
}
void inputVector(vector<int>&array)
{
for(size_t i=0;i<array.size(); i++)
{
cin>>array[i];
}
}
小结:本例展示了c++标准类库的类模板vector,它是一个健壮的,可复用的类,能替换C风格基于指针的数组。