C++矢量操作技巧:擦除重复项、排序轻松搞定,让你的代码更高效!

作者:微信公众号:【架构师老卢】
1-9 8:24
497

概述:在C++中,通过使用std::unique和std::sort算法,可以高效擦除矢量中的重复项并进行排序。先使用std::sort排序,再利用std::unique擦除相邻的重复元素,是处理矢量操作的常用方法。

在C++中,擦除重复项和对矢量进行排序的有效方法分别是使用std::uniquestd::sort算法。std::unique用于在序列中移除相邻的重复元素,而std::sort用于对序列进行排序。

方法

  1. 擦除重复项
    • 使用std::sort对矢量排序。
    • 使用std::unique擦除相邻的重复项。
  2. 对矢量进行排序
    • 使用std::sort对矢量进行排序。

步骤

  1. 擦除重复项
    • 使用std::sort对矢量排序。
    • 使用std::unique擦除相邻的重复项。
  2. 对矢量进行排序
    • 使用std::sort对矢量进行排序。

实例源代码

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    // 示例矢量
    std::vector<int> myVector = {3, 1, 2, 2, 4, 3, 5, 4, 6, 6};

    // 擦除重复项
    std::sort(myVector.begin(), myVector.end()); // 先排序
    myVector.erase(std::unique(myVector.begin(), myVector.end()), myVector.end());

    // 打印擦除重复项后的矢量
    std::cout << "擦除重复项后的矢量: ";
    for (int num : myVector) {
        std::cout << num << " ";
    }

    // 对矢量进行排序
    std::sort(myVector.begin(), myVector.end());

    // 打印排序后的矢量
    std::cout << "\n排序后的矢量: ";
    for (int num : myVector) {
        std::cout << num << " ";
    }

    return 0;
}

注意事项

  1. 擦除重复项顺序:在使用std::unique前需要先对矢量进行排序。
  2. 排序算法选择std::sort使用快速排序,对于小型矢量可以考虑使用std::sort,对于大型矢量可考虑其他排序算法。
  3. 擦除重复项后的容量std::unique擦除重复项后,矢量的容量不会改变,可以使用std::vector<int>(myVector.begin(), it)构造一个新矢量来释放多余内存。

在C++中,使用std::uniquestd::sort是擦除重复项和对矢量进行排序的有效方法。确保在使用std::unique前对矢量进行排序,根据需求选择合适的排序算法,同时注意擦除重复项后的矢量容量。

阅读排行