vector<stk>vDK,结构体 stk 成员 int Num ,string val, 假如vDK[i].Num 一样 存入vector<stk>vTem, 最终 返回vector<vector<stk>>vvSTK, 用C++ 写出完整过程
时间: 2023-09-23 19:04:50 浏览: 55
以下是用C++编写的完整过程:
```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;
std::vector<stk> vTem;
for (const auto& dk : vDK) {
bool found = false;
for (auto& tem : vTem) {
if (tem.Num == dk.Num) {
tem.val += dk.val;
found = true;
break;
}
}
if (!found) {
vTem.push_back(dk);
}
}
vvSTK.push_back(vTem);
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;
}
```
这段代码首先定义了一个名为`stk`的结构体,其中包含了一个整型成员`Num`和一个字符串成员`val`。然后,编写了一个名为`processVector`的函数,用于处理输入的`vDK`向量。
在`processVector`函数中,首先定义了两个向量`vTem`和`vvSTK`,用于存储临时结果和最终结果。然后,遍历输入的`vDK`向量,对于每个元素,检查是否存在具有相同`Num`值的元素。如果存在,则将当前元素的`val`值追加到已存在的元素的`val`中;如果不存在,则将当前元素添加到`vTem`中。
最后,将`vTem`向量添加到`vvSTK`中,并将其作为函数的返回值。
在主函数中,定义了一个示例的`vDK`向量,并调用`processVector`函数进行处理。然后,遍历最终结果`vvSTK`,并输出每个结构体的`Num`和`val`值。
运行这段代码,将会得到如下输出:
```
1: abcxyz
2: defjkl
3: ghi
```
这是根据输入的`vDK`向量进行处理后得到的最终结果。每个元素的`Num`值相同的结构体被合并,并将它们的`val`值连接在一起。