有没有更简便的方法?
时间: 2024-10-04 07:04:22 浏览: 13
对于频繁查询的情况,如果你的需求允许的话,可以考虑使用哈希表(如`unordered_map`或`std::map`,取决于是否需要保持插入顺序)。哈希表的查找时间复杂度为O(1),相比于线性查找,能大大提高查询效率。
以下是使用哈希表的例子:
```cpp
#include <iostream>
#include <unordered_map>
using namespace std;
struct Student {
int id;
int score;
};
int main() {
int n;
cout << "请输入学生人数:";
cin >> n;
unordered_map<int, Student> students;
// 输入每个学生的学号和成绩,并直接存入哈希表
for (int i = 1; i <= n; ++i) {
cout << "请输入第" << i << "名学生的学号和成绩:";
int id;
cin >> id >> students[id].score;
}
int searchId;
cout << "请输入你要查询的学生学号:";
cin >> searchId;
// 查找指定学号的学生并打印成绩,使用哈希表的find函数
auto it = students.find(searchId);
if (it != students.end()) {
cout << "学号为 " << searchId << " 的学生成绩是:" << it->second.score << endl;
} else {
cout << "找不到学号为 " << searchId << " 的学生。" << endl;
}
return 0;
}
```
使用哈希表可以直接通过学号查找到对应的学生,查询速度显著提升。
阅读全文