class Time
{
int month,day,hour,minute;
public:
Time(int mo,int d,int h,int mi)
{
month = mo,day = d,hour = h,minute = mi;
}
Time()
{
month = 1,day = 1,hour = 0,minute = 0;
}
friend bool operator<(Time t1,Time t2)
{
if(t1.getMonth()==t2.getMonth())
{
if(t1.getDay()<=t2.getDay())
return 1;
}
else if(t1.getMonth()<=t2.getMonth())
{
return 1;
}
return 0;
} 这是对时间的比较。 |
下面用一个代码介绍multimap
#include <iostream> #include <map> #include <algorithm> using namespace std; int main(){ multimap<string, int> mm1; multimap<string, int>::iterator mm1i, p1, p2; //定义指针一定不能少 mm1.insert(make_pair("b", 3)); // 用make_pair()来添加。 mm1.insert(make_pair("a", 0)); mm1.insert(make_pair("b", 5)); mm1.insert(make_pair("c", 4)); mm1.insert(make_pair("b", 2)); cout << "Size: " << mm1.size() << endl; for(mm1i = mm1.begin(); mm1i != mm1.end(); mm1i++){ cout << mm1i->first << ": " << mm1i->second << endl; } cout << "COUNT: " << mm1.count("b") << endl; cout << "Bound: " << endl; p1 = mm1.lower_bound("b"); p2 = mm1.upper_bound("b"); for(mm1i = p1; mm1i != p2; mm1i++){ cout << mm1i->first << ": " << mm1i->second << endl; } return 0; }
|
#include<iostream>
#include<string>
#include<map>
#include<vector>
#include<fstream>
#include<algorithm>
using namespace std;
class Time
{
int month,day,hour,minute;
public:
Time(int mo,int d,int h,int mi)
{
month = mo,day = d,hour = h,minute = mi;
}
Time()
{
month = 1,day = 1,hour = 0,minute = 0;
}
friend bool operator<(Time t1,Time t2)
{
if(t1.getMonth()==t2.getMonth())
{
if(t1.getDay()<=t2.getDay())
return 1;
}
else if(t1.getMonth()<=t2.getMonth())
{
return 1;
}
return 0;
}
friend istream&operator>>(istream&is,Time&);
friend ostream&operator<<(ostream&out,Time&);
int getMonth()
{
return month;
}
int getDay()
{
return day;
}
int getHour()
{
return hour;
}
int getMinute()
{
return minute;
}
void setMonth(int d){month=d;}
void setDay(int h){day=h;}
void setHour(int g){hour=g;}
void setMinute(int j){minute=j;}
};
istream&operator>>(istream&is,Time&date)
{
is>>date.month>>date.day>>date.hour>>date.minute;
return is;
}
ostream&operator<<(ostream&out,Time&date)
{
out<<date.month<<" "<<date.day<<" "<<date.hour<<" "<<date.minute<<" ";
return out;
}
class Book // 用于添加图书馆的书
{
Time chuban;
string shuming;
string shuhao;
string zuozhe;
int ceshu;
public:
Book(string ming,string shuh,string zuozh,Time chuba,int cesh):chuban(chuba)
{
shuming=ming;
zuozhe=zuozh;
shuhao=shuh;
ceshu=cesh;
}
Book()
{
zuozhe="0000";
shuhao="0000";
Time chu(0,0,0,0);
chuban=chu;
ceshu=0;
}
friend istream&operator>>(istream&is,Book&);
friend ostream&operator<<(ostream&out,Book&);
string getShuming(){return shuming;}
string getZuozhe(){return zuozhe;}
string getShuhao(){return shuhao;}
Time getChuban(){return chuban;}
int getCeshu(){return ceshu;}
};
istream&operator>>(istream&is,Book&R)
{
is>>R.shuming;
if(R.shuming=="end")return is;
is>>R.shuhao>>R.zuozhe>>R.chuban>>R.ceshu;
return is;
}
ostream&operator<<(ostream&out,Book&R)
{
out<<R.shuming<<R.shuhao<<" "<<R.zuozhe<<" "<<R.chuban<<R.ceshu<<endl;
return out;
}
class Record //借书记录
{
string zhuanye;
int banji;
string shuming;
string zuozhe;
string shuhao;
string xuehao;
Time start,end,chuban;
public:
Record(string xh,string zhuany,int banj,string shu,string shumin,string zuozh,Time chuba,Time st,Time jie):chuban(chuba),start(st),end(jie)
{
zhuanye=zhuany;
banji=banj;
shuming=shumin;
zuozhe=zuozh;
xuehao=xh;
shuhao=shu;
}
Record()
{
xuehao="000";
}
friend istream&operator>>(istream&is,Record&);
friend ostream&operator<<(ostream&out,Record&);
string getShuming(){return shuming;}
string getZuozhe(){return zuozhe;}
string getShuhao(){return shuhao;}
string getXuehao(){return xuehao;}
Time getChuban(){return chuban;}
Time getStart(){return start;}
Time getEnd(){return end;}
};
istream&operator>>(istream&is,Record&R)
{ is>>R.xuehao;
if(R.xuehao=="end")return is;
is>>R.xuehao>>R.shuhao>>R.zuozhe>>R.chuban>>R.start>>R.end;
return is;
}
ostream&operator<<(ostream&out,Record&R)
{
out<<R.xuehao<<" "<<R.shuhao<<" "<<R.zuozhe<<" "<<R.chuban<<R.start<<R.end<<endl;
return out;
}
struct cmp1
{
string tpe;
cmp1(string s)
{
tpe=s;
}
bool operator()(Record &a)
{
return (a.getShuming().find(tpe)!=string::npos);
}
};
class UserOp
{ public:
vector<Book> b;
vector<Book>::iterator it;
multimap<string,int>b1;//书名
multimap<string,int>::iterator mit;
vector<Record> r;
vector<Record>::iterator itt;
multimap<string,int >m1;//书名
multimap<string,int>::iterator mit1;
multimap<string,int> m2;//书号
multimap<string,int>::iterator mit2;
string manager;
public:
UserOp(string manage):manager(manage)
{
}
UserOp()
{
manager="0000";
}
friend istream&operator>>(istream&is,UserOp&u)
{
is>>u.manager;
}
friend ostream&operator<<(ostream&out,UserOp&u)
{
if(u.r.size()==0)
{out<<u.manager<<" ";}
if(u.r.size()!=0)
{ out<<u.manager<<endl;
for(u.itt=u.r.begin();u.itt!=u.r.end();u.itt++)
{
out<<*(u.itt);
}
for(u.it=u.b.begin();u.it!=u.b.end();u.it++)
{
out<<*(u.it);
}
}
return out;
}
int serchbook(string s);
void addbook();
void addrecord();
void serchbyshuming(string s);
void serchbyshuhao(string s);
void shangjia(Book h);
void xiajia(string s);
};
void UserOp::addbook()
{
Book s;
int i;
while(1)
{
cin>>s;
if(s.getShuming()=="end")break;
b.push_back(s);
i=b.size();
b1.insert(make_pair(s.getShuming(),i-1));
}
}
void UserOp::addrecord()
{
Record p;
int i;
while(1)
{
cin>>p;
if(p.getXuehao()=="end")break;
r.push_back(p);
for(it=b.begin();it!=b.end();it++)
{
if((*it).getShuming()==p.getShuming())
{
(*it).getCeshu()==(*it).getCeshu()-1;
}
}
i=r.size();
m1.insert(make_pair(p.getShuming(),i-1));
m2.insert(make_pair(p.getShuhao(),i-1));
}
}
void UserOp::shangjia(Book h)
{
int i;
b.push_back(h);
i=b.size();
b1.insert(make_pair(h.getShuming(),i-1));
}
int UserOp::serchbook(string s)
{
mit=b1.find(s);
if(mit!=b1.end())
{
return mit->second;
}
}
void UserOp::xiajia(string s)
{
int i;
i=serchbook(s);
it=b.begin()+i;
b.erase(it);
b1.erase(b1.find(s));
}
void UserOp::serchbyshuming(string s)
{
itt=find_if(r.begin(),r.end(),cmp1(s));
while(itt!=r.end())
{
// it=v.begin()+mit1->second;
cout<<*itt;
itt=find_if(itt+1,r.end(),cmp1(s));
}
}
int main()
{ /*vector<Book> b;
vector<Book>::iterator it;
multimap<string,int>b1;//书名
multimap<string,int>::iterator mit;
vector<Record> r;
vector<Record>::iterator itt;
multimap<string,int >m1;//书名
multimap<string,int>::iterator mit1;
multimap<string,int> m2;//书号
multimap<string,int>::iterator mit2;*/
UserOp u;
cin>>u;
u.addbook();
u.addrecord();
cout<<u;
}
|