小编Sco*_*emp的帖子

如何将 std::vector 的某些元素移动到向量中的新索引?

我正在移植一些我编写的旧手工数组处理类,现在使用 std 库容器。我在移植时遇到问题的一种方法是我称之为“ChangeRecordOrder”的方法,因为没有更好的术语。我需要一个标准库替换。

它的定义是:

template <class T>
void ChangeRecordOrder( std::vector<T> IN OUT &inputVector, 
                        uint newInsertIndex, 
                        std::vector<uint> IN const &indexesToMoveToNewIndex );
Run Code Online (Sandbox Code Playgroud)

例如(伪代码):

MyVector<uint> = {0,10,20,30,40,50,60,70,80,90}
IndexesToMove = {2,4}
NewIndex = 6

After call to ChangeRecordOrder( MyVector, NewIndex, IndexesToMove ):

MyVector<uint> == {0,10,30,50,20,40,60,70,80,90}
Run Code Online (Sandbox Code Playgroud)

请注意,2 和 4(20 和 40)处的元素被移动到原始向量的索引 6(在 60 之前)。

当然,我想就地做这件事,而不是使用另一个临时向量。我也不介意在调用之前需要对 IndexesToMove 向量进行排序的要求。

我找不到为此的标准库算法。我之前在原始内存上工作的算法没有使用 c++ 移动语义。

谢谢!

c++ sorting algorithm standard-library

2
推荐指数
1
解决办法
3925
查看次数

标签 统计

algorithm ×1

c++ ×1

sorting ×1

standard-library ×1