帮我用C++给vector<> vkk, 结构体作为元素,分组排序,合并成map,同时写出案例,给出完整代码
时间: 2024-02-12 10:02:34 浏览: 175
好的,我可以帮您完成这个任务。下面是我写的代码:
```
#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;
struct MyStruct {
int id;
string name;
int age;
};
bool cmp(MyStruct a, MyStruct b) {
return a.id < b.id;
}
int main() {
vector<MyStruct> vkk = {
{1, "Alice", 20},
{2, "Bob", 25},
{3, "Charlie", 30},
{4, "David", 35},
{5, "Eva", 40},
{6, "Frank", 45},
{7, "George", 50},
{8, "Henry", 55},
{9, "Iris", 60},
{10, "Jack", 65}
};
// 按照 id 排序
sort(vkk.begin(), vkk.end(), cmp);
// 分组
map<int, vector<MyStruct>> groups;
int group_id = 0;
for (int i = 0; i < vkk.size(); i++) {
if (i % 3 == 0) {
group_id++;
}
groups[group_id].push_back(vkk[i]);
}
// 输出分组结果
for (auto it = groups.begin(); it != groups.end(); it++) {
cout << "Group " << it->first << ":" << endl;
for (int i = 0; i < it->second.size(); i++) {
cout << " " << it->second[i].name << endl;
}
}
return 0;
}
```
这个代码的功能是:给定一个结构体 `MyStruct` 的向量 `vkk`,按照结构体中的 `id` 字段排序,然后将其分成若干个大小相等的组,并将每个组转换为一个向量,最终将这些向量存储在一个 `map` 中,其中 `map` 的键为组的编号,值为该组的向量。我们可以根据需要修改分组的大小。
这个代码的输出结果是:
```
Group 1:
Alice
Bob
Charlie
Group 2:
David
Eva
Frank
Group 3:
George
Henry
Iris
Group 4:
Jack
```
希望我的回答能够帮到您!
阅读全文