作为C语言的一部分的C++标准模板库STL++标准库提供了一个框架,用于处理不同类型的容器。然而,普通数组没有提供STL容器的接口(尽管它们提供STL容器的迭代器接口)。
作为普通阵列的替代品,STL提供了类标准::矢量
然而,标准::矢量<>
提供动态数组的语义。因此,它可以管理数据更改元素数。这会导致一些开销只需要静态大小的case数组。
在他的书中,泛型编程和STL公司,Matthew H.Austern介绍了一种有用的包装具有静态大小的普通数组的类,称为块
。它比普通数组。在C++编程语言第3版,Bjarne Stroustrup介绍了类似类,称为数组(_A)
,其中我(尼古拉·约瑟提斯)存在在我的书中稍作修改C++标准库-教程和参考,已调用卡雷
这就是这些方法的本质加入了来自促进.
考虑了不同的名称后,我们决定将其命名为简单地分类阵列
.
请注意,建议将此类作为下一个类的一部分技术报告,它将扩展C++标准(参见http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1548.htm).
更新:std::数组
是(从C++11开始)C++标准的一部分。两者之间的差异boost::数组
和std::数组
是最小的。如果您使用的是C++11,您应该考虑使用std::数组
而不是boost::数组
.
等级阵列
最能实现但并非“可逆容器”的所有要求(参见C第23.1节[lib.container.requirements]++标准)。数组不是可逆STL容器的原因是因为:
- 没有提供构造函数。
- 元素可能具有未确定的初始值(请参见“设计原理”一节).
-
互换
()没有恒定的复杂性。
-
大小
()始终是常量,基于类型的第二个模板参数。
- 容器不提供分配器支持。
它不满足“序列”的要求(参见C++标准的第23.1.1节[lib.sequence.reqmts]),除了: