gpt4 book ai didi

c++ - C++11 STL 中的所有内容都是用户可实现的吗?

转载 作者:IT老高 更新时间:2023-10-28 12:41:18 25 4
gpt4 key购买 nike

我知道像 <map> 这样的库, <vector><algorithm>即使标准库中不存在它们也可以由用户实现。

但是 C++11 STL 中的某些类或函数是否只是“编译器魔法”,无法手动实现?


编辑STL 是指标准模板库,它不需要额外的链接。

最佳答案

如果您指的是源自 Alexander Stepanov 的标准模板库的标准库的一部分,那么您可以在没有任何编译器“魔法”的情况下实现所有这些(即,您只需要普通功能即可)其他 C++ 标准所要求的)。

算法在迭代器上运行。他们需要的迭代器操作由他们操作的迭代器类定义(见下文)。该算法简单地执行正常的操作,例如分配给元素和交换元素。

所有迭代器都提供一些操作,例如递增和取消引用。双向迭代器也提供减法,随机访问迭代器提供加法/减法。这些都不是使用标准编译器功能实现的特别复杂。

容器类似于算法,因为它们主要通过迭代器对数据进行操作。他们还使用分配器类来分配内存、在该内存中创建对象等等。尽管编写分配器过去相当复杂(而且需求文档很少),但 C++11 大大简化了任务(而且它从来不需要任何非标准的东西)。

如果您将“STL”泛指标准库,那么是的,有相当多的部分需要各种编译器魔法。

其中一些是根据较低级别的组件定义的,因此(例如)iostream 是根据 C 的 getchar/puthchar1 定义的,以从/向外部世界获取数据。其他部分(例如,类型特征、std::uncaught_exception)为编译器生成的数据提供接口(interface),但不能通过其他方式用于可移植代码。


<支持>1. 但是请注意,尽管 iostreams 是根据通过 C 函数读取和写入来定义的,但它们并不需要实际使用这些 C 函数,只需执行与它们相同的操作即可。

关于c++ - C++11 STL 中的所有内容都是用户可实现的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29578131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com