vector<vector<stak>>VKK, stak 为结构体 int Num, string val 假如 VKK[i][0].Num 和VKK[j][0].Num相等 合并一起 ,c++ 写出过程
时间: 2023-12-13 09:05:21 浏览: 30
要合并相等的 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,
```