c++中组数的替代方案

在这里插入图片描述

向量 vector

vector可以看作一个动态数组,用于存储一组数据类型相同的数据,对数据元素的个数没有限制,即可以把 vector看作一个存放任意数据类型的“容器”。使用 vector需要包含头
文件< vector>。声明 vector对象的方法有多种,例如:
vector〈类型说明符〉对象名;
vector〈类型说明符〉对象名(元素个数);
vector〈类型说明符〉对象名{元素初始列表};
其中,类型说明符说明了 vector容器中存储的数据类型,可以是基本数据类型,也可以
是构造数据类型。对象名是任意合法的标识符。第一种形式声明的对象长度是0,第二种形式指定了对象的元素个数,第三种形式可以为对象赋初始值。例如:

vector<int>nV1;
vector<int>fV2(10);
vector<int>nV3{1,2,3,4,5};

nV1的初始长度为0,并不意味着该向量没有任何用处,不能存储任何数据。同样,fV2的初始长度是10,也并不意味着只能存储10个foat型数据,因为 vector类型的对象长度是自动变化的。例如,若fV2中存储的元素超过10个,编译器会自动为fV2分配相应数量的内存空间。
vector 向量中元素的访问方法有两种:下标法和使用成员函数()。例如,访间nv3的第三个元素(下标为2的元素):

nV1[2];
//或者
nV1.at(2);

其中,at()nV1的成员函数,通过成员运算符","进行调用
在这里插入图片描述

类模板 array

aray与普通数组一样,也实现为一个定长的数组。使用aray需要包含头文件
声明array类型对象的基本格式如下:
array<类型说明符,组数长度>组数名;
例如:

array<int,10>array1{1,2,3,4,5};
array<float,10>array2;

类模板array提供了丰富的层面,函数可以实现特定的功能,下面介绍几个常用的成员函数。

1.元素访问

1.[]
基本格式:
组数名[下标]
例如:

cout<<arr2[2];
arr2[2]=0;

2.at()
基本格式:
组数名.at(下标)
例如:

cout<<arr2.at(2);
arr2.at(2)=0;

3.front()
基本格式:
组数名.front()
函数功能:返回第1个元素,相当于at(0)。例如:

cout<<arr2.front();
arr2.front()=0;

4.back()
基本格式:
组数名.back()
函数功能:返回最后一个元素。
5.date()
基本格式:
组数名.date()
函数功能:返回指向第1个元素的指针。例如

array<int,10>arr2{1,2,3,4,5};
cout<<*arr2.data();
*arr2.data()=0;

迭代器运算函数

迭代器( Iterator)即指向array容器的元素的指针,它具有指针的一般性质,如解引用运
”、指针移动(如自增“++”、自减“—”)等。相关的成员函数包括 begin()、end0)、 begin()、rend()。

(1)begin(),end()
基本格式:
数组名.begin()

数组名.end()
分别返回第1个元素的迭代器和最后一个元素后面位置的迭代器。
(2)rbegin(),rend()
分别返回最后一个元素的迭代器和第1个元素前面位置的迭代器
这种迭代器可以看做反向迭代器,如果需要逆序访问数组元素的话,可以使用这种迭代器。
在这里插入图片描述
综合代码:

#include <iostream>
#include <cstring>
#include <array>
using namespace std;

int main() {
	const int max = 10;
	array<int, max>a;
	for (int i = 0; i < max; i++)
		cin >> a.at(i);
	cout << a[0] << endl;
	cout << a.at(0);
	cout << endl << a.front() << " " << a.back() << endl;
	cout << *a.data() << endl;
	cout << *a.begin() << endl << "b" << *(a.end() - 1) << endl;
}

希望对大家有帮助呀。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

落春只在无意间

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

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

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

打赏作者

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

抵扣说明:

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

余额充值