vector<stk>vDK,结构体 stk 成员 int Num ,string val, 假如vDK[i].Num 一样 存入vector<stk>vTem,vvSTK[j]加入vTem, 最终 返回vector<vector<stk>>vvSTK, 用C++ 写出完整过程
时间: 2024-04-08 21:35:40 浏览: 106
有关VTK源码,是用c++写的
5星 · 资源好评率100%
以下是修正后的代码:
```cpp
#include <iostream>
#include <vector>
struct stk {
int Num;
std::string val;
};
std::vector<std::vector<stk>> processVector(const std::vector<stk>& vDK) {
std::vector<std::vector<stk>> vvSTK;
for (const auto& dk : vDK) {
bool found = false;
for (auto& vTem : vvSTK) {
if (!vTem.empty() && vTem[0].Num == dk.Num) {
vTem.push_back(dk);
found = true;
break;
}
}
if (!found) {
vvSTK.push_back({dk});
}
}
return vvSTK;
}
int main() {
std::vector<stk> vDK = { {1, "abc"}, {2, "def"}, {1, "xyz"}, {3, "ghi"}, {2, "jkl"} };
std::vector<std::vector<stk>> vvSTK = processVector(vDK);
for (const auto& v : vvSTK) {
for (const auto& s : v) {
std::cout << s.Num << ": " << s.val << std::endl;
}
}
return 0;
}
```
在修正后的代码中,根据新的要求,我们将每个相同`Num`值的元素存入`vTem`,并将`vTem`添加到`vvSTK`中。
在`processVector`函数中,遍历输入的`vDK`向量,对于每个元素,检查是否存在具有相同`Num`值的结构体向量`vTem`。如果找到了相同`Num`值的结构体向量,将当前元素添加到该向量中;如果没有找到,则创建一个新的结构体向量,并将当前元素添加至其中。最后,将`vTem`添加到`vvSTK`中。
在主函数中,定义了一个示例的`vDK`向量,并调用`processVector`函数进行处理。然后,遍历最终结果`vvSTK`,并输出每个结构体的`Num`和`val`值。
运行这段代码,将会得到如下输出:
```
1: abc
1: xyz
2: def
2: jkl
3: ghi
```
这是根据输入的`vDK`向量进行处理后得到的最终结果。相同`Num`值的结构体被存入了相应的子向量中,最终返回了一个二维向量`vvSTK`。
阅读全文