如何在C++中遍历所有用户并找到名字相同的两个人?
本问题旨在询问如何在C++程序中实现遍历用户列表,并找到具有相同名字的两个用户。这里假设用户列表是一个包含用户对象的容器,用户对象中包含姓名(name)属性。
ANSWER & EXPLANATION
解答与说明
在C++中,我们可以使用标准模板库(STL)中的std::map或std::unordered_map来存储用户信息,并遍历这些数据结构以找到名字相同的两个人。以下是一个示例代码:
#include <iostream>
#include <vector>
#include <map>
#include <string>
struct User {
std::string name;
int age;
};
int main() {
// 创建一个包含用户的向量
std::vector<User> users = {
{"Alice", 30},
{"Bob", 25},
{"Charlie", 22},
{"Alice", 28},
{"David", 35}
};
// 使用map来存储每个名字出现的次数
std::map<std::string, int> nameCount;
// 遍历用户列表并统计每个名字的出现次数
for (const auto& user : users) {
nameCount[user.name]++;
}
// 遍历map并打印出所有出现超过一次的名字
for (const auto& entry : nameCount) {
if (entry.second > 1) {
std::cout << "Name: " << entry.first << " appears " << entry.second << " times." << std::endl;
}
}
return 0;
}
在这个示例中,我们首先定义了一个User结构体,用于存储用户的名字和年龄。然后,我们创建了一个包含多个用户的向量。接下来,我们使用一个std::map来统计每个名字出现的次数。最后,我们遍历这个map,打印出所有出现超过一次的名字及其出现次数。
在C++中,我们可以使用标准模板库(STL)中的std::map或std::unordered_map来存储用户信息,并遍历这些数据结构以找到名字相同的两个人。以下是一个示例代码:
#include <iostream>
#include <vector>
#include <map>
#include <string>
struct User {
std::string name;
int age;
};
int main() {
// 创建一个包含用户的向量
std::vector<User> users = {
{"Alice", 30},
{"Bob", 25},
{"Charlie", 22},
{"Alice", 28},
{"David", 35}
};
// 使用map来存储每个名字出现的次数
std::map<std::string, int> nameCount;
// 遍历用户列表并统计每个名字的出现次数
for (const auto& user : users) {
nameCount[user.name]++;
}
// 遍历map并打印出所有出现超过一次的名字
for (const auto& entry : nameCount) {
if (entry.second > 1) {
std::cout << "Name: " << entry.first << " appears " << entry.second << " times." << std::endl;
}
}
return 0;
}
在这个示例中,我们首先定义了一个User结构体,用于存储用户的名字和年龄。然后,我们创建了一个包含多个用户的向量。接下来,我们使用一个std::map来统计每个名字出现的次数。最后,我们遍历这个map,打印出所有出现超过一次的名字及其出现次数。
内容由 AI 辅助整理,仅供参考;涉及具体版本、时效或个人情况时,请结合适用条件核实。