首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于stl:地图

2012-11-17 
关于stl::map现需要存放一组学生信息包括,学号,姓名,性别,3课成绩。#pragma warning (disable : 4786)#incl

关于stl::map
现需要存放一组学生信息包括,学号,姓名,性别,3课成绩。

#pragma warning (disable : 4786)
#include <map>
#include <iostream>
#include <string>
using namespace std;
template<typename T>
void show(T it,T ib)
{
while(it!=ib)
cout<<it++ ->first<<" "<<it->second<<endl;
}
int main()
{
map<unsigned,string> mapstudent;
unsigned ID;
 cout<<"Please enter the student id,name,sex,age:";
for (int i=0;i<3;i++)
{
 cin>>ID;
cin>>mapstudent[ID];
}
//map<int,string>::iterator it;
show(mapstudent.begin(),mapstudent.end());
return 0;
}
因为才学,上面有很多不足的地方,比如ID以后的信息必须一次输入完而且不能有空格,能不能说实现name,sex,age输入前单独出现提示呢?然后输出的时候能够对号入座呢,eg:输入请输入ID :354556请输入ID: 张山 等等,然后输出是
ID:354556
NAME:张山
SEX: 男
请大侠们指点

[解决办法]
当然可以了,std::map::find
[解决办法]

C/C++ code
// linker.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>#include <map>#include <string>using namespace std;struct Lesson{    double dbChinese;    double dbMath;    double dbEnglish;};struct StudentInfo {    string strStudentID;    string strStudentName;    bool   bSex;    Lesson lesson;};typedef map<string,StudentInfo> MapStudentInfo;MapStudentInfo mapStudentInfo;void AddStudent(StudentInfo* pInfo);void DelStudent(string strStudentID);void ShowInfo(MapStudentInfo& info);StudentInfo* FindStudent(string strStudentID);int _tmain(int argc, _TCHAR* argv[]){    StudentInfo info;    //cin    AddStudent(&info);    DelStudent("12345");    StudentInfo* pInfo=FindStudent("12345");    if (pInfo!=NULL)    {        //do something    }    return 0;}void AddStudent( StudentInfo* pInfo ){    if (pInfo)    {        mapStudentInfo.insert(MapStudentInfo::value_type(pInfo->strStudentName,*pInfo));    }}void DelStudent( string strStudentID ){    MapStudentInfo::iterator it=mapStudentInfo.find(strStudentID);    if (it!=mapStudentInfo.end())    {        mapStudentInfo.erase(it);    }}void ShowInfo( MapStudentInfo& info ){    for (MapStudentInfo::iterator it=info.begin();it!=info.end();it++)    {        cout<<"学号:"<<it->first<<endl;        cout<<"姓名:"<<it->second.strStudentName;        cout<<"性别:"<<(it->second.bSex?"男":"女")<<endl;        cout<<"数学:"<<it->second.lesson.dbMath<<"\t语文:"<<it->second.lesson.dbChinese<<"\t英语:"<<it->second.lesson.dbEnglish<<endl<<endl;    }}StudentInfo* FindStudent( string strStudentID ){    MapStudentInfo::iterator it=mapStudentInfo.find(strStudentID);    if (it!=mapStudentInfo.end())    {        return &(it->second);    }    return NULL;} 

热点排行