c++数组sort+unique
时间: 2025-06-26 13:12:52 浏览: 2
### C++ 中对数组进行排序和去重的方法
在 C++ 中,可以利用 STL 提供的标准算法 `std::sort` 和 `std::unique` 来实现数组的排序和去重功能。以下是详细的说明以及完整的代码示例。
#### 排序操作
为了使数组有序排列,需调用 `<algorithm>` 头文件中的 `std::sort` 函数[^2]。该函数接受两个迭代器参数,分别表示要排序范围的起始位置和结束位置(不包括)。例如:
```cpp
std::sort(array, array + size);
```
上述语句会对数组 `array` 的前 `size` 个元素按升序排序。
#### 去重操作
完成排序之后,可使用 `std::unique` 对相邻重复项进行移除处理[^3]。需要注意的是,`std::unique` 并不会真正删除数据,而是将唯一值移动到序列前端并返回指向新序列末尾的迭代器。因此,在实际应用中通常会配合容器的擦除方法来彻底清除多余的数据[^4]。
对于原始数组而言,由于其固定大小特性无法动态调整长度,所以仅能通过计算有效区域的方式管理结果集。下面展示了一个综合运用这两个步骤的例子:
```cpp
#include <iostream>
#include <algorithm>
int main() {
int a[8] = {2, 2, 2, 4, 4, 6, 7, 8};
// Step 1: Sort the array.
std::sort(a, a + 8);
// Step 2: Remove duplicates by moving them to end and get new length.
int newSize = static_cast<int>(std::unique(a, a + 8) - a);
// Output results.
std::cout << "After sorting and removing duplicates:\n";
for(int i=0;i<newSize;++i){
std::cout<<a[i]<<" ";
}
std::cout<<"\n";
return 0;
}
```
以上程序首先定义了一个含有重复整数的静态数组,接着执行了排序与去重两步操作,并最终输出整理后的数值列表。
如果目标对象是一个支持随机访问迭代器且允许修改尺寸的容器比如 `std::vector` ,那么可以直接采用更简洁的形式达成同样目的:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
int main(){
std::vector<int> v{2,2,2,4,4,6,7,8};
// Sorting vector elements.
std::sort(v.begin(),v.end());
// Erasing duplicate entries from sorted sequence.
v.erase(std::unique(v.begin(),v.end()),v.end());
// Displaying contents of modified vector.
for(auto elem:v){
std::cout<<elem<<" ";
}
return 0;
}
```
这段代码片段展示了当面对更加灵活的数据结构时如何优雅地实施相同逻辑流程。
阅读全文
相关推荐


















