c 11 – 基于范围的算法是否可以完全独立于(并针对任何容器类型进行优化)容器类型?

我想知道boost :: range或range_v3是否会以类似于std :: begin协调STL容器和C类数组的方式重新协调自由函数和成员函数(就编码通用性而言)?

更具体地说,我可以方便地在列表上调用std :: sort,该列表自动调用std :: list :: sort给出的最佳实现.

最后,成员函数可以被视为其泛型的接口
仅对应(std :: list :: sort从未在客户端代码中调用)?

最佳答案 AFAIK,你提到的图书馆都没有直接处理.在C 17中更普遍地处理这种事情,包括使f(x)和xf()等效的
proposal,但正如我在上面的评论中所提到的,我不清楚它是否可以用于range-v3的算法.

我确实注意到range-v3的sort.hpp:// TODO转发迭代器,如EoP?中有趣的注释.所以,也许Niebler确实有想法支持更通用的类型. (“EoP”是Alex Stepanov的编程元素.)

一个复杂因素:泛型排序使用迭代器重新排序值,而list :: sort()重新排序链接本身.如果您关心排序后迭代器指向的内容,那么区别很重要,因此您仍然需要一种方法来选择所需的排序.有人甚至认为sort()永远不应该调用list :: sort(),因为它们具有不同的语义.

点赞