我有一个向量,它定义了项目的顺序(0..N-1),例如:{5, 0, 4, 3, 2, 1, 7, 6}
。
我需要对该向量的子集进行排序。因此,对于{0,1,2,5}
,我应该得到{5,0,2,1}
。
我尝试了以下解决方案:
- 在子集中创建项目集,然后清除子集,在排序向量中遍历,仅添加集合中的项目。
- 通过在排序向量中遍历,仅添加通过
std::lower_bound
找到的子集中的项目,从而创建新的已排序向量。
第二种解决方案似乎更快,尽管它需要对子集进行排序。是否有更好的解决方案?我使用C++ / STL / Qt,但问题可能与语言无关。