c++删除向量vec中的重复元素
时间: 2023-08-01 18:06:47 浏览: 64
可以通过以下代码删除向量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`函数将重复元素从向量中删除。
相关问题
c++中删除向量元素除了迭代器还有什么方法
除了使用迭代器以外,C++中还有几种删除向量元素的方法,包括:
1. pop_back()函数:该函数用于删除向量中的最后一个元素,不需要指定要删除的元素的位置,只需要调用该函数即可。
2. clear()函数:该函数用于清空整个向量,即删除所有元素。
3. resize()函数:该函数可以用来删除向量中的元素,具体方法是将向量的大小缩小到要删除的元素的位置,从而删除指定位置之后的所有元素。例如,假设要删除向量vec中的第3个元素,可以使用以下代码:
```
vec.resize(2); // 将向量vec的大小缩小到2,即删除第3个元素及之后的所有元素
```
需要注意的是,resize函数并不会释放向量中被删除元素所占用的内存空间,因此如果想要减小内存占用,还需要使用shrink_to_fit()函数来释放多余的内存空间。
以下是一个示例代码,演示如何使用pop_back()、clear()和resize()函数删除向量元素:
```
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> vec = {1, 2, 3, 4, 5};
// 删除最后一个元素
vec.pop_back();
// 清空整个向量
vec.clear();
// 删除第三个元素及之后的所有元素
vec.resize(2);
// 输出删除后的vector
for (int i = 0; i < vec.size(); i++) {
cout << vec[i] << " ";
}
cout << endl;
return 0;
}
```
输出结果为:
```
1 2
```
c++vector去除重复元素
你可以使用`std::vector`的`erase`和`std::unique`函数来去除重复元素。首先,使用`std::sort`函数对向量进行排序,这将使重复的元素相邻。然后,使用`std::unique`函数将重复的元素移到向量的末尾,并返回指向新的尾部的迭代器。最后,使用`erase`函数删除重复元素之后的部分。以下是一个示例代码:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
// 创建一个包含重复元素的向量
std::vector<int> vec = {1, 2, 3, 2, 4, 1, 5, 6, 3, 4};
// 对向量进行排序
std::sort(vec.begin(), vec.end());
// 使用 std::unique 函数去除重复元素
auto last = std::unique(vec.begin(), vec.end());
// 使用 erase 函数删除重复元素之后的部分
vec.erase(last, vec.end());
// 输出去除重复元素后的向量
for (const auto& element : vec) {
std::cout << element << " ";
}
std::cout << std::endl;
return 0;
}
```
运行以上代码,输出将为:1 2 3 4 5 6,即去除了重复的元素。