📜  C++ STL-algorithm.unique()函数(1)

📅  最后修改于: 2023-12-03 15:29:50.101000             🧑  作者: Mango

C++ STLunique()函数介绍

总体描述

unique()函数是C++ STL中的一个算法函数,其主要的作用是去除相邻区间中重复元素。

函数定义
template< class ForwardIt >
ForwardIt unique( ForwardIt first, ForwardIt last );

其中,参数firstlast分别是待处理区间的起始位置和结束位置。

函数示例
#include <iostream>
#include <algorithm>
#include <vector>

int main() {
    std::vector<int> nums = {1, 2, 2, 3, 3, 3, 4, 4, 4, 4};
    nums.erase(std::unique(nums.begin(), nums.end()), nums.end());
    for (int num : nums) {
        std::cout << num << " ";
    }
    return 0;
}

输出结果:

1 2 3 4 

代码解析:我们先来构造一个包含重复元素的向量nums,然后使用std::unique()函数和std::vector<>::erase()函数,将重复元素删除,最后输出结果。

函数运行原理

std::unique()函数遍历输入的区间,将重复元素"压缩"到区间的前部分,并返回第一个未被压缩的元素的迭代器,这些未被压缩的元素构成了输入区间中的所有不同元素,而输入区间的后部分都是被压缩掉的重复元素。需要注意的是,unique()函数只能处理有序区间,对于无序区间,需要先进行排序操作。

总结

总体来说,std::unique()函数是一种非常实用的STL算法,使用起来非常方便,可以快速地去除一些相邻区间中的重复元素。但是需要注意,该函数只能处理有序区间,对于无序区间,必须先进行排序操作。