数组不被视为容器,因为它们不基于类
Are arrays not considered containers because they are not based off of a class?
数组是容器吗?
数组在连续的内存位置中保存一组相同类型的元素,那么它们不符合容器的条件吗?
在标准中; 与数组相关的语言功能(即 C 样式int a[]
而不是库std::array<>
)与库部分 [container.requirements.general]/1 中定义的容器是分开的;
容器是存储其他对象的对象。它们通过构造函数、析构函数、插入和擦除操作控制这些对象的分配和解除分配。
对每种容器类型(或容器概念)的更严格要求将在后面的部分中提供。
因此,语言数组可能不被严格地视为"容器",在更非正式的意义上,它可能是。
它们确实共享某种程度的通用功能,并具有一些可互换性,例如利用std::begin()
和std::end()
等的能力。一个粗略的例子是std::vector<>
,它通常被称为用作"安全"数组的容器;用于以前可能使用内置数组的地方。
相关文章:
- 如何添加依赖于类本身的模板成员变量
- 为什么同时覆盖全局新运算符和特定于类的运算符不是模棱两可的行为?
- 依赖于类成员属性的类实例成员
- 为什么 std::vector 适用于类定义中的不完整类型?
- 如何让成员函数实现依赖于类的模板参数?
- 仅将方法应用于类的一个对象
- 我如何使用explicit模板实例化用于类定义中定义的模板成员函数
- 超载操作员 仅适用于类的特定情况
- 如何在未评估的上下文中将成员函数的结果类型应用于类成员
- 我该如何文档文档以使文档适用于类成员而不是匿名类型
- 类似于类中的 std::map 或 std::vector 的构造函数
- 请澄清术语类静态对象(相对于类静态成员)
- 类名()是否等效于类对象
- 编写专用于类及其子类的函数模板
- 是否存在非POD结构优先于类的有效用例
- "inline"隐式于类定义中定义的C++成员函数中
- 特定于类的new/delete
- 使用依赖于类的类型和函数,在类的所有实例中具有相同值的c++变量
- 如何专门化依赖于类的静态数据成员的模板?
- 返回特定于类的enum