【发布时间】:2010-07-25 18:03:28
【问题描述】:
假设我有一些数据存储在unique_ptrs 的容器中:
struct MyData {
int id; // a unique id for this particular instance
data some_data; // arbitrary additional data
};
// ...
std::vector<std::unique_ptr<MyData>> my_data_vec;
my_data_vec 的顺序很重要。假设现在我有另一个 MyDatas 的 ID 向量:
std::vector<int> my_data_ids;
我现在想重新排列my_data_vec,使元素按照my_data_ids 指定的顺序排列。 (不要忘记移动 unique_ptr 需要使用 std::move() 移动语义。)
实现这一点的算法效率最高的方法是什么,是否有任何 STL 算法能够很好地实现这一点?我看不出std::sort 有什么帮助。
编辑:我可以使用 O(n) 内存空间(不太担心内存),但 ID 是任意的(在我的具体情况下,它们实际上是随机生成的)。
【问题讨论】:
-
ids 是任意的,还是恰好是 0...n-1? -
编辑了问题以回答这些问题。
标签: c++ stl c++11 containers