首页 >后端开发 >C++ >为什么 C 标准容器通常禁止不完整的类型?

为什么 C 标准容器通常禁止不完整的类型?

Susan Sarandon
Susan Sarandon原创
2024-12-21 18:26:11909浏览

Why Do C   Standard Containers Typically Forbid Incomplete Types?

C 容器禁止不完整类型的基本原理

在 C 编程世界中,容器是组织和操作数据的基本数据结构。然而,C 容器的一个独特特征是它们厌恶不完整的类型。为什么会这样?

答案在于 C 的历史演变。早期,标准模板库 (STL) 实现很难处理类型不完整的容器。为了保持稳定性和向后兼容性,标准化委员会决定在 C 标准中彻底禁止此类容器。

这种限制对于防止递归数据结构特别有效。它还确保现有的 STL 实现可以继续按预期运行,而不会引入任何不可预见的问题。

但是,对不完整类型的禁止也引起了一些批评。它限制了某些高级数据结构的实现,并将受益于 C 标准未来修订版的重新审视。

虽然标准容器仍然不完整的类型厌恶,但像 boost::container 背后的库设计者已经采取了主动创建自己的容器,不施加此限制。这一决定允许 C 编程具有更大的多功能性和灵活性。

更新:

随着 C 17 的出现,标准 C 库中的某些容器已修改为允许不完整的类型。然而,这并不是一个普遍的变化,标准中的大多数容器的一般禁令仍然存在。

以上是为什么 C 标准容器通常禁止不完整的类型?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn