C++模板类函数的使用以及如何使用时间作为文件名保存文件

转载自:http://blog.csdn.net/isbnhao/article/details/8730231

这里使用的是《C++ Primer 3rd版》中练习2.23的解答,首先附上题目:

       已知下面函数声明,请实现出  min()  函数,找出并返回  vec  的最小元素值。请使用两种做法来查访  vec  元素,一是使用  for  循环,整数索引至  vec;二是使用  for  循环和一个 iterator:

                  template <class elemType> 
                  elemType 
                            min( const vector<elemType> &vec ); 

       下面附上程序,首先要说的是这题的答案参考的是答案书上的代码,但是在这程序里面我加入了文件操作。

      

[cpp]  view plain  copy
  1. /*使用for循环和整数索引访问vec元素*/  
  2. template<class elemType>elemType  min1(const  vector<elemType>  &vec)  
  3. {  
  4.     elemType    minimum;  
  5.     if (vec.size()>=1)  
  6.     {  
  7.         minimum = vec[0];  
  8.     }   
  9.     else  
  10.     {  
  11.         throw   "向量是空向量";  
  12.     }  
  13.     for (int i = 1;i != vec.size();i++)  
  14.     {  
  15.         if (vec[i] < minimum)  
  16.         {  
  17.             minimum = vec[i];  
  18.         }  
  19.     }  
  20.     return  minimum;  
  21. }  

[cpp]  view plain  copy
  1. /*使用for循环和iterator访问vec元素*/  
  2. template<class elemType>elemType  min2(const  vector<elemType>  &vec)  
  3. {  
  4.     elemType    minimum;  
  5.     vector<elemType>::const_iterator  iter = vec.begin();  
  6.     if (iter < vec.end())  
  7.     {  
  8.         minimum = *iter;  
  9.     }   
  10.     else  
  11.     {  
  12.         throw   "向量是空向量";  
  13.     }  
  14.     for (iter = vec.begin();iter<vec.end();++iter)  
  15.     {  
  16.         if (*iter < minimum)  
  17.         {  
  18.             minimum = *iter;  
  19.         }  
  20.     }  
  21.     return  minimum;  
  22. }  

    主函数代码

[cpp]  view plain  copy
  1. #include <iostream>  
  2. #include <vector>  
  3. #include <iterator>  
  4. #include <string>  
  5. #include <algorithm>  
  6. #include <time.h>  
  7. #include <fstream>  
  8.   
  9. using namespace std;  
  10. int main()  
  11. {  
  12.     int array[] = {0,2,1,3,4,5,-6,7,3,-5};  
  13.     //std::vector<int>    a(array,array+10);  
  14.     std::vector<string>   a(10);  // 字符串向量初始化?  
  15.     a[0] = "hello world";  
  16.     a[1] = "AAAAA(按首字母排序)";  
  17.     a[2] = "试一试";  
  18.     a[3] = "你好";  
  19.     a[4] = "C++ Primer";  
  20.     a[5] = "字符串比较";  
  21.     a[6] = "こにちは";  
  22.     a[7] = "吉野家";  
  23.     a[8] = "てぷら";  
  24.     a[9] = "みんなの日本語";  
  25.   
  26.     std::cout<<"a第一种方法最小值:"<<min1(a)<<std::endl;  
  27.     std::cout<<"a第二种方法最小值:"<<min2(a)<<std::endl;  
  28.   
  29.     std::vector<int>  b(array,array+9);  
  30.     std::cout<<"b第一种方法最小值:"<<min1(b)<<std::endl;  
  31.     std::cout<<"b第二种方法最小值:"<<min2(b)<<std::endl;  
  32.   
  33.     std::vector<int>  c;  
  34.     try  
  35.     {  
  36.         std::cout<<"c第一种方法最小值:"<<min1(c)<<std::endl;  
  37.         std::cout<<"c第二种方法最小值:"<<min2(c)<<std::endl;  
  38.     }  
  39.     catch (char *s)  
  40.     {  
  41.         std::cerr<<s<<std::endl;  
  42.     }  
  43.     /*泛型算法的数组排序算法*/  
  44.     sort(a.begin(),a.end());  
  45.     cout<<"/******************************************************/"<<endl;  
  46.     cout<<"排序结果"<<endl;  
  47.     for (vector<string>::iterator i = a.begin();i != a.end();i++)  
  48.     {  
  49.         cout<<*i<<endl;  
  50.     }  
  51.     cout<<"/******************************************************/"<<endl;  
  52.     string search_value;  
  53.     cout<<"请输入要搜索字符串"<<endl;  
  54.     cin>>search_value;  
  55.     vector<string>::iterator  result;  
  56.     result = find(a.begin(),a.end(),search_value);  
  57.     if (result != a.end())  
  58.     {  
  59.         cout<<"'"<<search_value<<"'"<<"元素存在"<<endl;  
  60.     }  
  61.     else  
  62.     {  
  63.         cout<<"'"<<search_value<<"'"<<"未发现"<<endl;  
  64.     }  
  65.   
  66.     /*以时间保存文件名*/  
  67.     time_t  nowtime = time(NULL);  
  68.     struct  tm  *p;  
  69.     p = gmtime(&nowtime);  
  70.     char    filename[256] = {0};  
  71.     char    timeinfo[256] = {0};  
  72.     sprintf(filename,"%d-%d-%d.txt",1900+p->tm_year,1+p->tm_mon,p->tm_mday);  
  73.     //UTC时,中国是东八区,因此要+8  
  74.     sprintf(timeinfo,"%d/%d/%d %d:%02d",1900+p->tm_year,1+p->tm_mon,p->tm_mday,8+p->tm_hour,p->tm_min);  
  75.     ofstream    fw(filename);  
  76.     fw<<timeinfo<<"最小值是"<<min1(b)<<endl;  
  77. }  
     运行结果如下图示:

保存文件名称可以看到2013-3-28,是以当前日期命名

查看文件内容,可以看到如下结果

这与我们平时使用软件时,里面一些记录的文本文件内容格式相似,这种方法对平时我们的软件仿真,记录调试信息,相信都会有一定的帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值