gpt4 book ai didi

c++ - 为什么 STL 中没有针对每个集合类型的 for_each 成员函数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:05:43 27 4
gpt4 key购买 nike

例如:

v.for_each([](int i) { printf("%d\n", i); }); 

如果比常用的更优雅和可读:

std::for_each(v.begin(), v.end(), [](int i) { printf("%d\n", i); });

标准中缺少这样的成员函数是否有正当理由?

最佳答案

这是整个库的标准设计原理:将容器与算法分开。

如果按照自己的方式进行,则必须为每个容器 Y 实现每个功能 X,如果您有 M 个功能和 N 个容器,则需要 M * N 个实现。

通过使用迭代器并使算法在迭代器而不是容器上运行,您只需实现 M 个算法和 N 个迭代器接口(interface)。

这种分离还意味着您拥有无限广阔的应用范围:算法不能仅用于每个库容器,而是用于任何容器,无论是现在还是将来,任何人决定编写并配备迭代器。有限重用与无限重用是一个很有说服力的论据!通过通用的免费接口(interface)调用算法不会增加任何成本。

关于c++ - 为什么 STL 中没有针对每个集合类型的 for_each 成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7292826/

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