删除列表中的重复元素c++
时间: 2023-10-16 20:31:11 浏览: 95
在 C++ 中,可以使用 STL 中的 set 容器来删除列表中的重复元素。set 容器是一个自动排序的容器,它只存储唯一的元素。以下是一个示例代码:
```c++
#include <iostream>
#include <list>
#include <set>
using namespace std;
int main()
{
list<int> lst = {1, 2, 3, 2, 4, 5, 3, 6, 7, 1, 8};
set<int> s(lst.begin(), lst.end()); // 将列表中的元素插入到 set 中
lst.assign(s.begin(), s.end()); // 将 set 中的元素赋值给列表
for (auto i : lst) {
cout << i << " ";
}
cout << endl;
return 0;
}
```
输出:
```
1 2 3 4 5 6 7 8
```
在上面的代码中,我们首先创建了一个列表 lst,其中包含一些重复的元素。然后,我们使用 set 容器将列表中的元素插入到 set 中,这将自动删除重复元素。最后,我们将 set 中的元素复制回原始列表 lst。最终,lst 中不再存在重复元素。
相关问题
c++删除数组中重复元素
在C++中删除数组中的重复元素可以使用双重循环来实现。具体步骤如下:
1. 定义一个数组和数组长度len。
2. 使用双重循环,外层循环从0到len-1,内层循环从i+1到len-1,依次判断是否num[i]和num[j]相等,如果相等则进入第三层循环。
3. 第三层循环从j+1到len-1,将重复点j后面的所有元素都往前移动1,并将数组长度len-1,j也-1(判断向前移动的元素们的第一位,也就是移动后在j位上的这个元素,是否还相等。因为循环已经到了j,如果j不减1,则会跳过刚刚向前移动的元素,可能导致忽略的元素仍然重复)。
4. 最后输出删除重复元素后的数组。
下面是一个示例代码:
```
#include <iostream>
using namespace std;
int main() {
int len = 10;
int num[len] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 1};
cout << "before: ";
for(int i=0; i<len; i++) {
cout << num[i] << " ";
}
cout << endl;
for(int i=0; i<len; i++) {
for(int j=i+1; j<len; j++) {
if(num[j] == num[i]) {
for(int k=j+1; k<len; k++) {
num[k-1] = num[k];
}
len--;
j--;
}
}
}
cout << "after: ";
for(int i=0; i<len; i++) {
cout << num[i] << " ";
}
cout << endl;
return 0;
}
```
c++删除向量vec中的重复元素
可以通过以下代码删除向量vec中的重复元素:
```c++
#include <algorithm>
#include <vector>
std::vector<int> vec = {1, 2, 3, 2, 4, 1};
// 先对向量进行排序
std::sort(vec.begin(), vec.end());
// 使用unique函数删除重复元素
auto iter = std::unique(vec.begin(), vec.end());
vec.erase(iter, vec.end());
```
这段代码中,`std::sort`函数用于对向量进行排序,然后使用`std::unique`函数删除重复元素,并返回一个指向重复元素末尾的迭代器,最后使用`vector`的`erase`函数将重复元素从向量中删除。