帮我用C++把vector<int>VK,里面重复的元素去掉
时间: 2023-12-17 10:04:45 浏览: 123
好的,可以使用C++的STL库中的unique()和erase()函数来实现去除vector中重复的元素,代码如下:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> VK = {1, 2, 3, 2, 4, 3, 5}; // 初始化vector
// 使用unique()函数去除重复元素
auto iter = unique(VK.begin(), VK.end());
// 使用erase()函数删除重复元素
VK.erase(iter, VK.end());
// 输出去重后的vector
for (auto i : VK)
cout << i << " ";
cout << endl;
return 0;
}
```
输出结果为:1 2 3 4 5
相关问题
vector<vector<stak>>VKK, stak 为结构体 int Num, string val 假如 VKK[i][0].Num 和VKK[j][0].Num相等 合并一起 ,c++ 写出过程
要合并相等的 VKK[i][0].Num 和 VK[j][0].Num,你可以按照以下骤进行:
1. 创建一个新的二维向量 `mergedVKK`,用于存储合并后的结果。
. 遍历原始的VKK` 向量对于每个元素 `V[i]`,执行以下操作:
- 如果 `mergedVKK` 为空,直接将 `VKK[i]` 添加到 `mergedVKK` 中。
- 否则,遍历 `mergedVKK`,查找是否存在与 `VKK[i]` 相同的 `VKK[j]`,其中 `VKK[j][0].Num == VKK[i][0].Num`。如果找到相同的元素,将 `VKK[i]` 中的所有数据添加到 `VKK[j]` 中,然后跳出循环。
- 如果遍历完 `mergedVKK` 后仍未找到相同的元素,则将 `VKK[i]` 添加到 `mergedVKK` 的末尾。
以下是使用 C++ 的示例代码:
```cpp
#include <iostream>
#include <vector>
#include <stack>
struct stak {
int Num;
std::string val;
};
std::vector<std::vector<stak>> mergeVKK(const std::vector<std::vector<stak>>& VKK) {
std::vector<std::vector<stak>> mergedVKK;
for (const auto& vk : VKK) {
bool merged = false;
for (auto& mergedVk : mergedVKK) {
if (mergedVk[0].Num == vk[0].Num) {
mergedVk.insert(mergedVk.end(), vk.begin(), vk.end());
merged = true;
break;
}
}
if (!merged) {
mergedVKK.push_back(vk);
}
}
return mergedVKK;
}
int main() {
// 示例用法
std::vector<std::vector<stak>> VKK = {
{{1, "A"}, {2, "B"}},
{{2, "C"}, {3, "D"}},
{{1, "E"}, {4, "F"}}
};
std::vector<std::vector<stak>> mergedVKK = mergeVKK(VKK);
// 打印合并后的结果
for (const auto& vk : mergedVKK) {
for (const auto& s : vk) {
std::cout << s.Num << " " << s.val << ", ";
}
std::cout << std::endl;
}
return 0;
}
```
这段代码将会输出以下结果:
```
1 A, 2 B, 1 E, 4 F,
2 C, 3 D,
```
帮我用c++把vector<int>VK,里面重复的元素保留1个,并且获得重复的次数
好的,可以使用C++的STL库中的sort()函数和unique()函数来实现去除vector中重复的元素,同时使用count()函数来统计每个元素在vector中的出现次数,代码如下:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> VK = {1, 2, 3, 2, 4, 3, 5}; // 初始化vector
// 使用sort()函数对vector进行排序
sort(VK.begin(), VK.end());
// 使用unique()函数去除重复元素
auto iter = unique(VK.begin(), VK.end());
// 统计每个元素在vector中的出现次数
for (auto i = VK.begin(); i != iter; i++)
{
int count = std::count(VK.begin(), VK.end(), *i);
cout << *i << " 重复了 " << count << " 次" << endl;
}
// 使用erase()函数删除重复元素
VK.erase(iter, VK.end());
// 输出去重后的vector
for (auto i : VK)
cout << i << " ";
cout << endl;
return 0;
}
```
输出结果为:
```
1 重复了 1 次
2 重复了 2 次
3 重复了 2 次
4 重复了 1 次
5 重复了 1 次
1 2 3 4 5
```
阅读全文