c++ - 移动指定索引处的数组元素

标签 c++ arrays sorting stdvector indices

将指定索引处的数组元素左右移动一个位置的最有效算法是什么?

例如,将 [a,b,c,d,e,f] 的索引 [1,3,5] 向左移动以获得 [b,a,d,c,f,e]

如果新索引超出范围,我不希望它旋转,如果这有意义的话。

我正在使用 C++ std::vector 进行数组存储。

最佳答案

我将您的问题解释为根据索引交换数组的两个相邻条目。如果这是错误的,那么请用一个不正确的例子来澄清你的问题。

void swapElements(const std::vector<int>& indexes, std::vector<int>& array){
    for(auto i : indexes){
        if (i < 1 || i >= array.size()){
            continue;
        }
        std::swap(array[i-1], array[i]):
    }
}

关于c++ - 移动指定索引处的数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24539374/

相关文章:

c++ - 无法在 C++ 中的 for 循环条件语句中使用 vector.size()

php - 使用 array_udiff 比较两个对象数组

performance - 寻找最长的非负子数组

PHP - 从数组中删除空值

java - 如何按字母顺序对列表进行排序?

android - 在 android 日期和其他字符串中排序 arraylist

c++ - 在 OpenGL 中每帧绘制新的全屏图像的最快方法是什么?

c++ - 在构造变量之前引用变量是否定义明确

c++ - 将 char 指针初始化为字符串 vs 其他类型指针初始化为数组

javascript - 使用嵌套文档 lodash 对文档数组进行排序