我想知道为什么 c++ 标准要求这样做std::sort
应该只采用随机访问迭代器?我没有看到优势,因为两者标准::排序 http://www.cplusplus.com/reference/algorithm/sort/ and std::列表::排序 http://www.cplusplus.com/reference/list/list/sort/复杂度为N*log(N)
。限制std::sort
随机访问迭代器(RAI)似乎需要为具有相同复杂性的列表编写单独的函数。
这同样适用于partial_sort
,其中列表的非 RAI 对应项只是失踪了 https://stackoverflow.com/questions/217073/partial-sort-of-stdlist到今天。
这种设计是因为人们使用了变体吗quick_sort
实施std::sort
历史上?
如果在 RAI 容器上编写排序算法有优势,那么最好是std::sort
更通用,让 RAI 容器喜欢std::vector
提供专门的v.sort
?
O(N*log(N))
复杂性并不意味着容器按顺序迭代,也不意味着仅按扫描顺序对其进行更改。使用顺序迭代器会导致O(N)
存储所有这些迭代器的内存成本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)