用c++写一下查找人员信息,当名字重复时,按照编号的顺序输出
时间: 2024-03-01 12:51:49 浏览: 75
好的,以下是使用 C++ 实现的代码:
```c++
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
struct Person {
string name;
int id;
int age;
};
bool compareByName(const Person& a, const Person& b) {
return a.name < b.name;
}
bool compareById(const Person& a, const Person& b) {
return a.id < b.id;
}
int main() {
vector<Person> people;
int n;
cin >> n;
for (int i = 0; i < n; i++) {
Person person;
cin >> person.name >> person.id >> person.age;
people.push_back(person);
}
sort(people.begin(), people.end(), compareByName);
for (auto it = people.begin(); it != people.end(); ) {
auto end = find_if(it + 1, people.end(), [&](const Person& p) {
return p.name != it->name;
});
sort(it, end, compareById);
for (auto it2 = it; it2 != end; it2++) {
cout << it2->name << " " << it2->id << " " << it2->age << endl;
}
it = end;
}
return 0;
}
```
这个程序首先读入人员信息,然后按照姓名字典序排序,然后对于每个相同姓名的人员,按照编号排序输出。注意在输出时,要使用迭代器遍历相同姓名的人员。
阅读全文