C++数组的替代品

模板vector和array类是数组的替代品,下面将介绍它们的用法。

  1. 模板类vector

模板类vector类似于string类,vector包含在名称空间std中,因此您可使用using编译指令,using声明或std::vector。vector地址在堆之中。

#include<vector>
using namespace std;
vector<int>vi;
int n;
cin>>n;
vector<double>vd(n);

一般而言,vi是一个vector<int>对象,vd是一个vector<double>对象,它可存储n_elem个类型为typename的元素:

vector<typename>vt(n_elem);

2.模板类array.

vector功能强大,但是效率稍低,而数组相对不安全,因此新增了 类array,与数组一样,array也使用栈分配内存,但更安全,方便,要创建array对象,需要包含头文件array.

#include<array>
using namespace std;
array<int,5>ai;//creat array of 5 ints
array<double,4>ad={1.2,2.1,3.3,4.3};

下面声明创建一个名为arr的array对象,它包含n_elem个类型为typename的元素:

array<typename,n_elem>arr;

如下代码展示了三者之间的区别与联系:

 

#include<iostream>
#include<vector>
#include<array>
using namespace std;
int main()
{
	double a1[4] = { 1.2,2.4,3.6,4.8 };
	vector<double>a2(4);
	a2[0] = 1.0/3.0;
		a2[1] = 1.0 / 5.0;
	a2[2] = 1.0 / 7.0;
	a2[3] = 1.0 / 9.0;
	array<double, 4>a3 = { 3.14,2.72,1.62,1.41 };
	array<double, 4>a4;
	a4 = a3;
	cout << "a1[2]=" << a1[2] << " at " << &a1[2] << endl;
	cout << "a2[2]=" << a2[2] << " at " << &a2[2] << endl;
	cout << "a3[2]=" << a3[2] << " at " << &a3[2] << endl;
	cout << "a4[2]=" << a4[2] << " at " << &a4[2] << endl;
	return 0;
}

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神秘的老年人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值