[头歌]第1关:动态学生信息管理

编程入门 行业动态 更新时间:2024-10-28 06:34:24

[头歌]第1关:动态学生<a href=https://www.elefans.com/category/jswz/34/1766446.html style=信息管理"/>

[头歌]第1关:动态学生信息管理

题目: 

C++ 面向对象 _ STL 的应用 (educoder)

 

 考点:

1.自定义排序 bool cmp

2.如何使用find和erase来找到学生类里面的指定姓名的人并将其从动态数组中删除。

3.find要找的是学生类里面的成员变量而非单纯的直接找值,应如何实现 (与自定义排序有相似之处)。

查找学生类中姓名的实现:

find_if实现:

 auto it = find_if(stu.begin(), stu.end(), [na](const student& s) {return s.name == na; })。

其中[targetName](const Student& s) { return s.name == targetName; });是什么作用?

 

这是一个lambda表达式,用于作为`std::find_if`函数的第三个参数,即谓词(Predicate)。谓词是一个可调用对象,它接受一个参数并返回一个bool值,用于指示该参数是否满足某个条件。`std::find_if`函数会在指定的范围内查找第一个使谓词返回true的元素,并返回指向该元素的迭代器。如果没有找到,则返回`last`迭代器。

在这个示例中,我们的lambda表达式接受一个`const Student&`类型的参数`s`,并返回`s.name == targetName`的比较结果,即判断该学生的姓名是否等于目标姓名`targetName`。这个lambda表达式的作用是用于在`stu`容器中查找名字为`targetName`的学生。

如果找到了符合条件的学生,则将其从容器中删除;如果未找到,则输出未找到的消息。最后,我们打印出剩余的学生信息。

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;/********* Begin *********/
//自定义的类和者其他内容
class student
{public:string name;int score;
};vector<student>stu;void print(vector<student>&stu)
{if(stu.empty()){cout<<"[空]"<<endl;return;}for(vector<student>::iterator it=stu.begin();it!=stu.end();it++)cout<<it->name<<" "<<it->score<<endl;
}bool cmp(student stu1,student stu2){return stu1.score>stu2.score;}void Sort(vector<student>&stu){sort(stu.begin(),stu.end(),cmp);}
/********* End *********/int main()
{/********* Begin *********///读取输入数据,执行动作char c;string na;int sc;while(cin>>c){if(c=='A'){ student t;cin>>na>>sc;auto it=find_if(stu.begin(),stu.end(),[na](const student&s){return s.name==na;});if(it==stu.end()) {t.name=na;t.score=sc;stu.push_back(t);}else it->score=sc;}if(c=='R'){cin>>na;auto it=find_if(stu.begin(),stu.end(),[na](const student& s){return s.name==na;});if(it!=stu.end())stu.erase(it);}if(c=='P'){print(stu);}if(c=='S'){Sort(stu);}}/********* End *********/
}

更多推荐

[头歌]第1关:动态学生信息管理

本文发布于:2023-11-15 06:51:01,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1595508.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:信息管理   动态   学生

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!