数组不被视为容器,因为它们不基于类

Are arrays not considered containers because they are not based off of a class?

本文关键字:因为 于类 数组      更新时间:2023-10-16

数组是容器吗?

数组在连续的内存位置中保存一组相同类型的元素,那么它们不符合容器的条件吗?

在标准中; 与数组相关的语言功能(即 C 样式int a[]而不是库std::array<>)与库部分 [container.requirements.general]/1 中定义的容器是分开的;

容器是存储其他对象的对象。它们通过构造函数、析构函数、插入和擦除操作控制这些对象的分配和解除分配。

对每种容器类型(或容器概念)的更严格要求将在后面的部分中提供。

因此,语言数组可能不被严格地视为"容器",在更非正式的意义上,它可能是。

它们确实共享某种程度的通用功能,并具有一些可互换性,例如利用std::begin()std::end()等的能力。一个粗略的例子是std::vector<>,它通常被称为用作"安全"数组的容器;用于以前可能使用内置数组的地方。