假设我有一些数据存储在
我现在想重新排列
最有效的算法是什么?STL算法中有哪些适合实现此目的?我认为
编辑:我可以使用O(n)内存空间(内存不太重要),但ID是任意的(在我的特定情况下,它们实际上是随机生成的)。
unique_ptr
容器中: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是任意的(在我的特定情况下,它们实际上是随机生成的)。
id
是任意的还是恰好是0...n-1? - Thomas