gpt4 book ai didi

c++ - 为什么 std::sort 和 partial_sort 需要随机访问迭代器?

转载 作者:可可西里 更新时间:2023-11-01 15:24:53 25 4
gpt4 key购买 nike

我想知道为什么 c++ 标准要求 std::sort 应该只采用随机访问迭代器?我没有看到优势,因为 std::sortstd::list::sort复杂度为 N*log(N)。将 std::sort 限制为随机访问迭代器 (RAI) 似乎使得有必要为具有相同复杂性的列表编写单独的函数。

这同样适用于 partial_sort,其中列表的非 RAI 对应部分 is simply missing直到今天。

这种设计是因为人们使用quick_sort的变体来实现std::sort吗?

如果在 RAI 容器上编写排序算法有优势,是否最好使 std::sort 更通用,并让 RAI 容器像 std::vector提供专门的v.sort?

最佳答案

O(N*log(N)) 复杂性并不意味着容器按顺序迭代,也不意味着对其的更改仅按扫描顺序进行。使用顺序迭代器需要 O(N) 内存成本来存储所有这些迭代器。

关于c++ - 为什么 std::sort 和 partial_sort 需要随机访问迭代器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24817274/

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