【发布时间】:2011-01-19 17:49:27
【问题描述】:
我有一个 std::vector,我需要为某些操作按选定的算法进行排序,但在其余时间保持其原始状态(例如,在输入时排序的项目)。
显然我可以使用 std::copy 创建一个临时向量并对其进行排序,但我想知道是否有更好的方法,可能是通过为输入的项目加上时间戳。
干杯
【问题讨论】:
-
为什么?排序是
O(N log N),更不用说常数因子了;假设 POD 元素,复制直接是N * sizeof(T)内存写入。另外,您可以轻松地从基准测试中排除复制时间。 -
假设 POD 元素,复制是恒定时间(提示:想想 memcpy),而且速度相当快。
-
复制不是固定时间,@Stingray。这是 O(N)。
-
@Rob:是的,你是对的。忘了废话还是要一个字一个字地通过 CPU!
标签: c++ sorting vector temporary