c++ 用map实现二度人脉的代码
时间: 2023-12-18 15:54:30 浏览: 74
以下是使用 `map` 实现二度人脉的 C++ 代码示例:
```c++
#include <iostream>
#include <map>
#include <vector>
using namespace std;
int main() {
// 假设以下是一些人的关系数据
vector<pair<string, string>> relationships = {
{"Alice", "Bob"},
{"Bob", "Cindy"},
{"Cindy", "David"},
{"David", "Emily"},
{"Frank", "Grace"},
{"Grace", "Alice"}
};
// 构建一个关系图,用map来表示
map<string, vector<string>> relationMap;
for (const auto& r : relationships) {
relationMap[r.first].push_back(r.second);
}
// 计算二度人脉
map<string, vector<string>> secondDegreeMap;
for (const auto& r : relationMap) {
const auto& person = r.first;
for (const auto& friend1 : r.second) {
// 统计这个人的朋友的朋友
for (const auto& friend2 : relationMap[friend1]) {
// 排除自己和已经是朋友的人
if (friend2 != person && find(r.second.begin(), r.second.end(), friend2) == r.second.end()) {
secondDegreeMap[person].push_back(friend2);
}
}
}
}
// 输出二度人脉
for (const auto& s : secondDegreeMap) {
cout << s.first << " 的二度人脉有:";
for (const auto& friend2 : s.second) {
cout << friend2 << " ";
}
cout << endl;
}
return 0;
}
```
这段代码将输入的人际关系数据构建成一个关系图,然后遍历每个人,对于每个人的每个朋友,再遍历这个朋友的所有朋友,找出排除自己和已经是朋友的人之外的其它人,添加到二度人脉列表中。最后输出每个人的二度人脉。
阅读全文