【发布时间】:2008-10-19 22:33:52
【问题描述】:
我有一个我想要对其进行排序的链表,例如:
std::sort(someIterator, otherIterator, predicate);
std::sort 需要随机访问迭代器,因此这种方法不起作用。有一个专门化的 std::list::sort,但它只能对整个列表进行排序。我认为我没有足够的权限访问列表成员来自己编写一些东西。
有没有办法做到这一点而不改变,比如说,矢量?
【问题讨论】:
-
您使用列表而不是向量的主要原因是什么?尽管 std::vector 必须在 avg 上执行移动。半个元素(例如删除时),由于缓存,它非常快。即使在 rand 上频繁删除和插入,std::vector 也优于 std::list。位置您必须拥有大量元素才能使用列表获利。
-
老实说我不记得了,因为自从我问起三年半以来,我很确定它以某种方式被重构了,而且我早就离开了那份工作。问题的重点不在于效率(尽管很有可能有足够的数据我不想在运行中复制它们),而更多的是好奇心;奇怪的是,我似乎无法进行这种部分排序,并且应该有某种方法来实现它。
-
哦 :D 我的错...我通过搜索而不是通过“活动问题页面”发现了这个问题,并没有意识到 :) 我实际上认为这是一个活动问题。