1.array
有了前面一章的基础,我们就可以正式来学习使用各个容器了,首先是序列式容器。
注意这些容器会用到最基础的数据结构,如果你对此还不慎了解,那么可以先看看这篇文章:数据结构与算法。
这个容器可能我们平时用的较少,它是一种定长的容器,看名字就知道,基本和我们平时使用的数组没有什么区别。
声明的方式为:
#include<array>
#include<iostream>
using namespace std;
int main() {
array<int, 100> arr;
}
其模板参数, 第一个为要存储的类型,第二个为大小。
其特点是一旦声明了,这个数组的大小就不可更改了。
你可以像普通数组那样赋值与获取值:
array<int, 100> arr;
arr[0] = 1;
cout << arr[0]<<endl;
但通过下标获取值容易出现访问越界,比如这里为100
个元素,范围为0-99
,你却访问下标为100
的元素,就超界了,有时就会出现获取的值不对,或者程序直接崩溃。
为了解决这个问题,我们可以通过它提供的函数来获取值:
array<int, 100> arr;
try
{
cout<<arr.at(100);
}
catch (const std::exception& e)
{
cout << e.what();
}
然后我们在最外层套一个异常处理,如果越界了,它就会抛出异常,然后我们这个try catch
块就会捕获到。
不熟悉异常用法的可以参考文章:异常处理。