学生表包括三个字段:编号、姓名和年龄。如下:
2016001, "Zhang", 19
2016002, "Li", 20
2016003, "wang", 21
2016004, "Liu", 22
2016005, "Zhao", 22
2016006, "Zhang", 22
2016001
2016003
2016001 Zhang 19
2016003 wang 21
#include
#include
struct Student{
int number;
char name[50];
int age;
};
int main(){
struct Student students[] ={
{2016001, "Zhang", 19},
{2016002, "Li", 20},
{2016003, "wang", 21},
{2016004, "Liu", 22},
{2016005, "Zhao", 22},
{2016006, "Zhang", 22}
};
int inputNumber;
while(scanf("%d", &inputNumber) != EOF) {
for(int i = 0; i < sizeof(students) / sizeof(students[0]); i++) {
if(students[i].number == inputNumber) {
printf("%d %s %d\n", students[i].number, students[i].name, students[i].age);
}
}
}
return 0;
}
#include
#include
#include
当你使用 find 方法在 map 中查找特定的键时,
若找到了指定的键,find 方法将返回一个指向该元素的迭代器;
若没有找到指定的键,find 方法将返回一个指向容器末尾的迭代器,即 end。
因此,it != studentTable.end() 这个条件语句的意思是:如果迭代器 it 指向的元素不是容器的末尾(即找到了指定的键),则执行接下来的语句块。
在示例代码中,这个条件语句用于检查是否找到了用户输入的学号对应的学生信息,如果找到了,则输出该学生的信息;如果没有找到,则不执行输出语句。
在C++中,map的find函数返回的是一个迭代器(iterator),而不是一个pair。因此,如果要通过迭代器获取pair中的元素,需要使用箭头运算符(->)。it->second表示迭代器指向的pair中的第二个元素,即{string, int},再使用"."运算符获取其中的string元素。所以正确的写法是it->second.first。
若使用"."运算符来访问迭代器指向的pair中的元素,编译器会报错