📜  c++ 向量将元素移到前面 - C++ (1)

📅  最后修改于: 2023-12-03 14:59:48.798000             🧑  作者: Mango

C++ 向量将元素移到前面

在C++中,向量是一种动态数组,可以随时添加、删除元素。有时候我们需要将某些元素移到向量的前面,这个过程可以通过以下方法完成。

方法一:使用循环和插入
#include <vector>
using namespace std;

void moveElements(vector<int>& v) {
    for (int i = 0; i < v.size(); i++) {
        if (v[i] % 2 == 0) {
            v.insert(v.begin(), v[i]);
            v.erase(v.begin() + i + 1);
        }
    }
}

上述代码首先循环遍历向量中的元素,如果当前元素是偶数,则将其插入到向量的开头,并在原位置删除。

方法二:使用STL算法
#include <vector>
#include <algorithm>
using namespace std;

void moveElements(vector<int>& v) {
    stable_partition(v.begin(), v.end(), [](int i) { return (i % 2 == 0); });
}

上述代码使用STL算法stable_partition,将偶数元素移到向量的前面。它通过一个lambda函数判断元素是否是偶数,并返回一个布尔值,算法据此将元素分为两个区间:偶数区间和奇数区间,其中偶数区间在前。算法的时间复杂度为O(NlogN)。

总结

向量是C++中常用的容器之一,有很多方便的方法可以处理其中的元素。我们可以使用循环和插入的方式将某些元素移动到向量前面,也可以使用STL算法进行分区操作。使用STL算法可以减少代码量、提高代码可读性,同时还可以大大提高程序执行效率。