C++ c样式数组是否被视为容器?

C++ c样式数组是否被视为容器?,c++,language-lawyer,C++,Language Lawyer,C样式的数组,例如int-holder[10]是否被视为容器?我这样问的原因是,如果它们是,但它们没有出现在这个上,这在逻辑上是有意义的。它们不是严格意义上的容器 C++std::array这是一个容器,它添加了一些本机数组缺少的东西(比如能够通过值传递和返回数组)。否,根据您提供的链接下的描述,它们不是。阅读您自己提供的链接,第一句话: 容器是一个holder对象,它存储其他容器的集合 对象(其元素)。它们被实现为类模板,这 允许作为元素支持的类型具有很大的灵活性 容器管理其元素的存储空间,并

C样式的数组,例如
int-holder[10]
是否被视为容器?我这样问的原因是,如果它们是,但它们没有出现在这个

上,这在逻辑上是有意义的。它们不是严格意义上的容器


C++
std::array
这是一个容器,它添加了一些本机数组缺少的东西(比如能够通过值传递和返回数组)。

否,根据您提供的链接下的描述,它们不是。阅读您自己提供的链接,第一句话:

容器是一个holder对象,它存储其他容器的集合 对象(其元素)。它们被实现为类模板,这 允许作为元素支持的类型具有很大的灵活性

容器管理其元素的存储空间,并提供 直接或通过迭代器访问它们的成员函数 (引用与指针具有类似属性的对象)

容器复制编程中非常常用的结构: 动态数组(向量)、队列(队列)、堆栈(堆栈)、堆 (优先级队列)、链表(列表)、树(集合)、关联数组 (地图)


不,它们不是容器,因为在ISO C++标准中,“容器”一词仅在标准库中正式用于容器类。相反,关于数组的整个部分没有使用“container”一词。请参见附录中的§11.3.4


可以将数组称为“复合类型”、“对象序列”或“聚合”,但不能称为“容器”

定义容器,链接指的是容器库——它是C++标准库的一部分,它们被实现为类模板,所以在这个意义上,“简单数组”不是“容器”。“ChristianHackl Why,这是一个语言律师的问题吗?”PassBube:因为它显然只是关于正确的术语。集装箱?我当然有。让人困惑的是,如果c风格的数组也被称为容器,那就太合乎逻辑了,因为容器是包含其他对象的对象。说明中明确指出,
管理存储空间
(即分配器),例如,
提供成员函数访问存储空间
。就这样。这不是你所希望的。这是你发送的链接中正式描述的内容;至少对大多数人来说是这样。话虽如此,SO不是一个讨论网站。@step:最好将数组作为定义几个不同变量的编译器辅助快捷方式来查看<代码>内部arr[3]实际上更类似于
intx1;int-x2;int x3而不是容器。