摘要:C++ algorithm库中的unique函数可以通过数组的初始地址和结束地址对已经排序好的数组元素进行相邻去重。
1.函数导入
在cpp文件中,头部写入#include<algorithm>以包含algorithm库
2.参数说明
函数声明:
iterator unique(iterator it_1,iterator it_2);
it_1:数组的起始地址。it_2:数组结束地址。- 返回值是一个迭代器(类似指针,
int数组直接返回int指针),它指向的是去重后容器中不重复序列的最后一个元素的下一个元素。
去重实例:
原始数组
1 2 2 3 3 4 4 5
去重后数组:
1 2 3 4 5 4 4 5
删除去重:
int类型的数组,可以使用返回的指针实现删除去重操作。
vector类型的数组,可以使用erase方法实现删除去重操作。
3.应用实例
- int数组相邻去重
#include<iostream>
#include<algorithm>
using namespace std;
int main() {
int nums[] = { 1,2,2,3,3,4,4,4,5 };
unique(nums, nums+9); // 去重
for (int num : nums) {
cout << num << ' ';
}
cout << endl;
}
输出结果:
1 2 3 4 5 4 4 4 5
- int数组删除去重
#include<iostream>
#include<algorithm>
using namespace std;
int main() {
int nums[] = { 1,2,2,3,3,4,4,4,5 };
int* end = unique(nums, nums + 9); // 去重
int* p= nums;
while(p!=end) {
cout << *p << ' ';
p++;
}
cout << endl;
}
输出结果:
1 2 3 4 5
- vector数组删除去重
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main() {
vector<int> nums = { 1,2,2,3,3,4,4,4,5 };
vector<int>::iterator end = unique(nums.begin(), nums.end()); // 去重
nums.erase(end, nums.end()); // 删除多余的元素
for (int num : nums) {
cout << num << ' ';
}
cout << endl;
}
输出结果:
1 2 3 4 5
2021.10.7 第一次编辑
本文介绍了C++标准库中的去重函数`unique`,讲解了如何通过该函数对已排序的数组进行相邻元素去重,并提供了不同类型的数组(包括int数组和vector数组)在去重后的删除操作示例,展示了如何利用返回的迭代器高效地完成去重任务。
1004

被折叠的 条评论
为什么被折叠?



