vector详解

关于数组,vector和array三者的用法和区别


首先:首先模板类vectorhearray是数组的替代品

《1》模板类vector

     模板类是一种动态数组,可以在运行阶段设置vector对象的长度,基本上,它是使用new创建动态数组的替代品。实际上,vector类确实是利用new和delete关键字来管理内存的,但是这种操作是自动完成。

         使用vector类的注意事项:

          1:必须包含头文件vector:即包含#include<vector>

   2:模板使用不同的语法来指出它存储的数据类型

   3:不能在声明vector类对象的时候,直接对其初始化

    通常,下面的声明创建一个名称为vt的vector对象,它可以存储n_elem个类型为typeName的元素

vector<typeName>vt(n_elem);            //n_elem可以是变量


《2》模板类array

vector类的功能比数组强大,但是效率低。如果需要长度固定的数组,使用数组是最佳选择,但是操作不是那么的方便和安全。鉴于此,C++11新增了模板类array,它也位于名称空间std中,与数组一样,array对象的的长度也是固定,也使用桟(属于静态内存分配)而不是自由存储区。因此效率与数组一样,但是更加方便安全。

   使用array类的注意事项:

          1:必须包含头文件array:即包含#include<array>

2:可以在声明array对象时直接对其初始化

一般情况,下面的声明创建一个名称为arr的array对象,它可以存储n_elem个类型为typeName的元素

vector<typeName,n_elem>arr;            //n_elem可以是变量


《3》简单的示例程序:

/*
  【1】 程序功能:详细讲解了------数组,vector,array三者的区别
  【2】作者:李先生
  【3】时间:2016,11,18
  【4】地点:陕西师范大学
*/
#include<iostream>
#include<vector>
#include<array>
#include<Windows.h>
using namespace std;
int main()
{
int a1[4]={1,2,3,4};//【1】定义一个数组a1,初始化大小为4,并且赋初值
vector<int>a2(4);//【2】定义一个数组a2,存放整型数据,大小为4;利用Vector关键字定义的数组,不能直接初始化
a2[0]=5; //对数组a2各元素赋值            
a2[1]=6;
a2[2]=7;
a2[3]=8;
array<int ,4>a3={9,10,11,12};//【3】用关键字array定义一个大小为4的整型数组a3,并初始化
array<int,4>a4;
a4=a3;
//无论是数组,vector对象还是array对象,都可以用标准数组表示法来访问每一个元素
cout<<"a1[1]=  "<<a1[1]<<"  的内存地址"<<&a1[1]<<endl<<endl;
cout<<"a2[1]=  "<<a2[1]<<"  的内存地址"<<&a2[1]<<endl<<endl;
cout<<"a3[1]=  "<<a3[1]<<"  的内存地址"<<&a3[1]<<endl<<endl;
cout<<"a4[1]=  "<<a4[1]<<"  的内存地址"<<&a4[1]<<endl<<endl;
//misdeed
a1[-1]=100;
cout<<"a1[-1]=  "<<a1[-1]<<"  的内存地址"<<&a1[-1]<<endl<<endl;
cout<<"a3[1]=  "<<a3[1]<<"  的内存地址"<<&a3[1]<<endl<<endl;
cout<<"a4[1]=  "<<a4[1]<<"  的内存地址"<<&a4[1]<<endl<<endl;


system("pause");
return 0;



}


运行结果: 注:不同的编译器和编译时间显示的地址可能不同

a1[1]=  2  的内存地址010FFDC4


a2[1]=  6  的内存地址017C4B8C


a3[1]=  10  的内存地址010FFD90


a4[1]=  10  的内存地址010FFD78


a1[-1]=  100  的内存地址010FFDBC


a3[1]=  10  的内存地址010FFD90


a4[1]=  10  的内存地址010FFD78


请按任意键继续. . .






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值