数组去重 cpp函数
时间: 2024-04-09 21:26:15 浏览: 11
在C++中,可以使用以下函数来对数组进行去重操作:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
std::vector<int> removeDuplicates(std::vector<int>& nums) {
std::sort(nums.begin(), nums.end()); // 先对数组进行排序
nums.erase(std::unique(nums.begin(), nums.end()), nums.end()); // 使用unique函数去除重复元素
return nums;
}
int main() {
std::vector<int> nums = {1, 2, 3, 4, 2, 3, 5};
std::vector<int> result = removeDuplicates(nums);
for (int num : result) {
std::cout << num << " ";
}
return 0;
}
```
上述代码中,`removeDuplicates`函数接受一个整数类型的向量作为参数,并返回去重后的向量。函数内部首先对数组进行排序,然后使用`std::unique`函数去除重复元素,最后使用`erase`函数将重复元素后面的部分删除。在`main`函数中,我们定义了一个测试用例,并输出去重后的结果。
相关问题
unique函数c++
C++中有多种实现方式可以实现一个去重的函数,其中一种常见的方式是使用标准库中的`std::unique`函数。这个函数可以用于去除容器中相邻的重复元素。
以下是`std::unique`函数的基本用法:
```cpp
#include <algorithm>
#include <vector>
int main() {
std::vector<int> numbers = {1, 2, 2, 3, 4, 4, 5};
// 使用 std::unique 函数去重
auto it = std::unique(numbers.begin(), numbers.end());
// 使用 erase 函数擦除重复元素后的部分
numbers.erase(it, numbers.end());
// 输出去重后的结果
for (int number : numbers) {
std::cout << number << " ";
}
return 0;
}
```
上述代码将输出:`1 2 3 4 5`,即去除了容器中相邻的重复元素。
注意,`std::unique`函数并不实际删除重复元素,而是将重复元素移动到容器尾部,并返回指向不重复元素范围末尾的迭代器。因此,我们还需要使用`erase`函数擦除这些重复元素。
此外,如果要去重的容器是数组而不是容器,我们可以使用类似的`std::unique`算法来实现。
请使用C++编写函数 fun ,函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。 注意:请勿改动主函数 main 和其它函数中的任何内容,仅在函数 fun 中填入你编写的若干语句。 输入格式 一维数组。 输出格式 去重之后的数组。 输入输出样例 输入1 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10 10 输出1 2 3 4 5 6 7 8 9 10
以下是 `fun` 函数的 C++ 实现代码:
```cpp
int fun(int a[], int n) {
if (n == 0) return 0;
int j = 0;
for (int i = 1; i < n; i++) {
if (a[j] != a[i]) {
a[++j] = a[i];
}
}
return j + 1;
}
```
主函数 `main` 如下:
```cpp
#include <iostream>
using namespace std;
const int N = 10010;
int fun(int a[], int n);
int main() {
int n, a[N];
cin >> n;
for (int i = 0; i < n; i++) cin >> a[i];
n = fun(a, n);
for (int i = 0; i < n; i++) cout << a[i] << ' ';
cout << endl;
return 0;
}
```
函数 `fun` 的输入参数包括一个一维数组 `a` 和数组长度 `n`,返回删除重复元素后的数组长度。
主函数 `main` 中先读入数组,调用 `fun` 函数得到新的数组长度,最后输出删除重复元素后的数组。