c++ list去重
时间: 2025-01-01 12:25:14 浏览: 7
在C++中,如果你想要从`list`容器中去除重复的元素,可以使用`std::list`的特性结合一些算法来实现。这里有一种常见的方法,你可以先将列表转换为`vector`,因为`vector`支持直接查找元素是否存在,然后再回填到`list`中,由于`list`的插入位置通常会自动调整以保持顺序,这就可以达到去重的效果。
以下是步骤:
1. 创建一个空的`list`作为结果。
2. 使用`std::copy`和`std::unique_ptr`,复制原`list`到`vector`中,并利用`vector`的`erase`和`insert`操作删除重复项。
3. 再次将`vector`的内容回填到原始的`list`中。
示例代码片段如下:
```cpp
#include <list>
#include <vector>
#include <algorithm>
// 假设你有一个std::list<int>叫做input_list
std::list<int> result;
std::vector<int> temp(input_list.begin(), input_list.end());
auto end = std::unique(temp.begin(), temp.end());
temp.erase(end, temp.end()); // 删除重复项
// 将vector内容回填到result list
for (const auto& value : temp) {
result.push_back(value);
}
// 现在result就是去重后的list
```
阅读全文