我应该怎么做?

五号智能 2008-06-03 01:54:55
我在写练习的时候遇到这么样的一个问题

///////////////////////////////读取文件/////////////////////////////////////////////
inline int loadfile(list<Hotel> &list_hot)
{
ifstream infile("hot.dat");
int num=1;
if (!infile)
{
cout <<"第一次运行程序吗?如果不是您的数据文件可能丢失!"<<endl;
}
else
{
Hotel temp;

while (infile >> temp)
{
temp.num(num);
list_hot.push_back(temp);
num++;
}

infile.close();
infile.clear();
}
return num-1;
}
///////////////////////////////读取文件///////////////////////////////////////
inline int loadfile(list<Yuding> &list_hot)
{
ifstream infile("yud.dat");
int num=1;
if (!infile)
{
cout <<"第一次运行程序吗?如果不是您的数据文件可能丢失!"<<endl;
}
else
{
Yuding temp;

while (infile >> temp)
{
temp.num(num);
list_hot.push_back(temp);
num++;
}

infile.close();
infile.clear();
}
return num-1;
}
/////////////////////////////写入文件////////////////////////////////////////////

inline void savefile(list<Hotel> &list_hot)
{
ofstream outfile("hot.dat");

for(list<Hotel>::iterator li_hot=list_hot.begin();li_hot!=list_hot.end();li_hot++)
{
outfile<<*li_hot;
}
outfile.close();
outfile.clear();
}

/////////////////////////////写入文件///////////////////////////////////////////

inline void savefile(list<Yuding> &list_hot)
{
ofstream outfile("yud.dat");

for(list<Yuding>::iterator li_hot=list_hot.begin();li_hot!=list_hot.end();li_hot++)
{
outfile<<*li_hot;
}
outfile.close();
outfile.clear();
}


这两个读文件和写文件,只有一点不同,那就是写入的文件名称
本来我想把文件名设成一个string变量,然后就能把这两个load 和save变成template.
但是我发现这样做之后,还要在使用这个template的地方把这个变量赋值。使用的地方有很多,也就是说我想简化代码
可是我却发现我得不偿失,我应该怎么做呢?
...全文
80 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
五号智能 2008-06-03
  • 打赏
  • 举报
回复



string a="hot.dat";
string b="yud.dat";




savefile(hot,a)
savefile(yud,b)




template <class T>
inline savefile(T,a)
{
ofstream outfile(a.c_scr());

<Hotel>
for(list <Yuding>::iterator li_hot=list_hot.begin();li_hot!=list_hot.end();li_hot++)
{
outfile<<*li_hot;
}
outfile.close();
outfile.clear();
}


可能是这个问题提错了,这是我本想达到的效果,可以我没想,循环里面处理的数据也是不一样的。

这是对两个类进行操作的。

我的本意是达到这个效果之后,如果不把string a,b变成全局变量,我每个想调用这个这个template的函数都得写上一句
string a="hot.dat";
string b="yud.dat";
如果调用这个template的函数有数十个之多;
写这个赋值句的量就超过了template本身很多;
这是一件很得不偿失的事情;
我想问的就是还有没 有其它的解决方法。

taodm 2008-06-03
  • 打赏
  • 举报
回复
函数参数是干嘛吃的呢?
李V四 2008-06-03
  • 打赏
  • 举报
回复
你可以定义宏 如
#define SAVEFILE(A,B) \
inline void savefile(list<Yuding> &A) \
{\
ofstream outfile(B);\
\
for(list<Yuding>::iterator li_hot=list_hot.begin();li_hot!=list_hot.end();li_hot++)\
{\
outfile<<*li_hot;\
}\
outfile.close();\
outfile.clear();\
}

  大家好,我是录制课程的老师,课程已经上线课堂,欢迎大家试听,感谢同学们的支持。在你们的学习中我会全力助你提升MySQL技能,助你冲击更高年薪。支持课程答疑,支持一对一答疑服务,由课程老师直接回答。    MySQL凭借着它不错的性能、不错的稳定性、数据的安全性常年稳居行业老二宝座。    越来越多的DBA和后端同学在工作中少不了和MySQL打交道,也经常会产生这样的疑问:    为什么我写的sql语句性能这么低?  为什么明明我建了索引却没有用到索引?  为什么突然我的数据就成了乱码?  为什么我备份的文件在主库恢复,数据无法同步到从库?  为什么我的数据库数据不多,却占了很多的空间?  生产中我应该选择哪种隔离级别?  生产中都在使用innodb存储引擎,我却对它一无所知?  我应该怎么规划缓冲池才能让数据库性能更高?  为什么我表数据迁移这么慢?  为什么我写的sql会造成那么多的锁冲突、死锁?  为什么我不能将数据恢复到任意时间点?  为什么我不能解决公司主从复制架构中的故障?  吧啦吧啦一大堆问题……    在面试中MySQL的一些知识更成为躲不过的问题,比如b+tree索引、MVCC、隔离级别的实现、锁的使用,主从复制,MySQL性能优化、事务两阶段提交等等都成为了面试考题重灾区。    我的课程就是从实际工作来,从问题出发,带着问题来学习MySQL,想解决问题就要学习新的知识,大家跟紧老司机,MySQL的面纱就会慢慢摘下。
课程简介:本系列课程主要讲三个内容:1)讲解项目规律,解决项目延期和加班严重问题。2)讲解事物或问题的背后逻辑,打造项目经理的方法论; 3)主动提升项目组成员能力,打造高效的学习型团队。课程分为三个部分:第一部分:项目管理的道法术,讲项目规律,讲如何打造高效的学习团队。第二部分:混合式开发讲解,讲项目管理的方法论。第三部分:通过对一个完整项目进行全流程的剖析,复习每个阶段的主要工作内容,学习课程上讲的技巧如何在实际项目中落地。第一部分:项目管理之道,我讲的是控盘式项目管理,掌握项目规律,根据产品定义、成员及能力和时间,灵活打造适合当下项目的管理方法。针对项目管理之道,我提出了“灵活变通的流程管理”和“学习型团队建设”两个项目管理之法。灵活变通的流程管理,我通过时代背景,对敏捷开发宣言和原则进行分析,讲解项目有时能成,有时不成,它们的原因所在。结合迭代开发和瀑布型开发的优点,我提出了混合式开发。学习型团队建设,我讲了团伙与团队,让你对自己的团队定位;分享了小企业的人才结构,让你知道员工修养低、能力差的前因后果;讲解用人之道和团队建设原理,让你知道怎么用人;通过案例来讲解如何运用生命力四要素,打造学习型团队。第二部分,混合式开发流程节点讲解。每个阶段,我从什么、怎么、谁来的结果,几个部分详细讲解项目每个阶段要怎么来。除这四个部分,我还会讲解在每个阶段遇到的问题,如何提升效率的技巧,原则性的内容等。理解上的错误,方法上的错误,我会重点讲解。某些节点中,有需要讲项目成员的行为模式和思维模式,会拿出来讲解。第三部分,完整项目全流程剖析我把这个系列课程为一个项目,从概念阶段开始到项目上线、总结复盘,我是如何的,中间遇到问题是如何解决的,应用到哪些技巧等,进行完整的分享。

64,691

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧