大家好!这里是一个分享知识的小同学 ,希望能和大家一起探讨,学习!
今天我们将来初步的认识list容器的使用;
我查看了一下网上的资料,普遍显得较难理解,因此本人整理了以下代码供大家初学者学习。
问题如下:用list容器来管理一个班级学生的成绩,要求能够实现下列功能:
1)、增加学生成绩;
2)、查找学生成绩;
3)、对学生成绩进行排序;
我们用观察代码的形式来更快的促进记忆和运用。
#include<iostream>
#include<list>
#include<iterator>
#include<functional>
#include<numeric>
#include<algorithm>
using namespace std;
void _print(list<double> <)
{
list<double>::iterator it;
for(it = lt.begin();it!=lt.end();it++)
{
cout<<*it<<" ";
}
cout<<endl;
}
int main()
{
list<double>lt;
cout<<"请输入学生的成绩,(-1)结束输入:"<<endl;
double score;
while(1)
{
cin>>score;
if(score==-1)break;
else if (score<0||score>100){cout<<"请输入正确的成绩"<<endl;
continue;}
lt.push_back(score);
}
lt.sort();
cout<<"学生成绩由小到大排序:"<<endl;
_print(lt);
double cnum;
cout<<"请输入要插入的成绩"<<endl;
cin>>cnum;
for(list<double>::iterator it=lt.begin();it!=lt.end();it++)
{
if(*it>=cnum){
lt.insert(it,cnum);break;
}
}
cout<<"插入元素后:"<<endl;
_print(lt);
int count=0;
double num;
cout<<"请输入要查找的成绩"<<endl;
cin>>num;
list<double>::iterator itf=find(lt.begin(),lt.end(),num);
if(itf==lt.end())
cout<<num<<"分的成绩不存在"<<endl;
else
{
cout<<num<<"分的成绩存在"<<endl;
for(list<double>::iterator it=lt.begin();it!=lt.end();it++)
{
if(*it==num)
count++;
}
cout<<"且共有"<<count<<"个成绩为"<<num<<"的学生"<<endl;
}
double tnum;
cout<<"如果要删除低于某一分数的成绩,请输入删除标准:"<<endl;
cin>>tnum;
list<double>::iterator it;
for(it =lt.begin();it!=lt.end();it++)
{
if(*it>=tnum)
{
lt.erase(lt.begin(),it);
cout<<"删除低于"<<tnum<<"的分数后"<<endl;
_print(lt);
break;
}
if(tnum>*(--lt.end()))
{
lt.clear();
cout<<"删除低于"<<tnum<<"的分数后,容器为空"<<endl;
break;
}
}
}
通过上述的代码我们可以非常清除的了解到关于容器以及迭代器的使用,相信大家对容器也就有了更深的了解。
看到这的读者朋友给孩子点个赞吧-_-。