vector数组的声明

vector类似于向量数组,是一个集成了很多函数在内的一种模板结构,又称为vector容器,属于STL(Standard Template Library)标准模板库的一部分。通常认为, STL是由容器、算法、迭代器、函数对象、适配器、内存分配器这 6 部分构成,其中后面 4 部分是为前 2 部分服务的。适配器和函数分配器比较复杂,我们一般掌握前面4个就已经完全能够满足我们的要求了。

适配器 可以使一个类的接口(模板的参数)适配成用户指定的形式,从而让原本不能在一起工作的两个类工作在一起。值得一提的是,容器、迭代器和函数都有适配器。
内存分配器 为容器类模板提供自定义的内存申请和释放功能,由于往往只有高级用户才有改变内存分配策略的需求,因此内存分配器对于一般用户来说,并不常用。

但是最近我在做项目的时候遇到了一个问题。

vector[ ][ ]是什么?

我自开始就很自然的认为应该是vector>>,也就是类似三维数组,于是我就这样子干了一下。

 我发现报错了。

所以说这个是vector(*)[4],我又看不懂了,这个vector(*)[4]是啥啊,在C++中,int (*)[]类似一个数组指针,就是指向数组的指针,类似一个二维数组的声明。话不多说,我只好先用auto将它封存起来,我想先试一下,这个结构的实现。

但是我是用auto的时候去查看数据结构,却发现结构就是我最先声明的结构,确实有点奇怪。vector数组的声明_第1张图片

然后我就进行了如下操作


    vector(*q)[4] = new vector[4][4];

    q[0][0].push_back(1);

    cout<

 发现并不报错,说明这个确实是一个三维数组。

你可能感兴趣的:(C++,c++)