【发布时间】:2015-05-24 06:57:00
【问题描述】:
我有两个向量,vec 和 p,因此 p 是指向 vec 中不同位置的指针的向量。
比如:
p[0] = &vec[12]
p[1] = &vec[20]
p[3] = &vec[1]
等等。 p 的大小将始终小于或等于 vec,并且不会包含对 vec 中相同位置的重复引用。
我想要的是一些数据结构,我可以遍历这些数据结构,以按照它们在 a 中指向的索引的顺序获取 p 的取消引用值。所以对于上面的例子,结果需要按 vec[1], vec[12], vec[20] 的顺序遍历。
我知道可以在 vec 中获得 p 指向的位置,以执行类似p[i] - &vec[0] 的操作,并且可能可以使用 std::sort 和自定义比较函数来实现这一点,但我觉得有一种更有效的方法比排序函数的 O(nlogn) 做到这一点。我也可能完全错了。
感谢您的帮助!
【问题讨论】:
-
std::sort(begin(p), end(p));足够T*可比。 -
@Jarod42:“我觉得有一种比排序函数的 O(nlogn) 更有效的方法。”我将标题重命名为更清晰。
-
@MooingDuck:我的意思是对于
O(n log n)解决方案,我的意思是不需要“自定义比较功能”作为 OP。
标签: c++ sorting pointers vector