转载自: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 );
下面附上程序,首先要说的是这题的答案参考的是答案书上的代码,但是在这程序里面我加入了文件操作。
- /*使用for循环和整数索引访问vec元素*/
- template<class elemType>elemType min1(const vector<elemType> &vec)
- {
- elemType minimum;
- if (vec.size()>=1)
- {
- minimum = vec[0];
- }
- else
- {
- throw "向量是空向量";
- }
- for (int i = 1;i != vec.size();i++)
- {
- if (vec[i] < minimum)
- {
- minimum = vec[i];
- }
- }
- return minimum;
- }
- /*使用for循环和iterator访问vec元素*/
- template<class elemType>elemType min2(const vector<elemType> &vec)
- {
- elemType minimum;
- vector<elemType>::const_iterator iter = vec.begin();
- if (iter < vec.end())
- {
- minimum = *iter;
- }
- else
- {
- throw "向量是空向量";
- }
- for (iter = vec.begin();iter<vec.end();++iter)
- {
- if (*iter < minimum)
- {
- minimum = *iter;
- }
- }
- return minimum;
- }
主函数代码
- #include <iostream>
- #include <vector>
- #include <iterator>
- #include <string>
- #include <algorithm>
- #include <time.h>
- #include <fstream>
- using namespace std;
- int main()
- {
- int array[] = {0,2,1,3,4,5,-6,7,3,-5};
- //std::vector<int> a(array,array+10);
- std::vector<string> a(10); // 字符串向量初始化?
- a[0] = "hello world";
- a[1] = "AAAAA(按首字母排序)";
- a[2] = "试一试";
- a[3] = "你好";
- a[4] = "C++ Primer";
- a[5] = "字符串比较";
- a[6] = "こにちは";
- a[7] = "吉野家";
- a[8] = "てぷら";
- a[9] = "みんなの日本語";
- std::cout<<"a第一种方法最小值:"<<min1(a)<<std::endl;
- std::cout<<"a第二种方法最小值:"<<min2(a)<<std::endl;
- std::vector<int> b(array,array+9);
- std::cout<<"b第一种方法最小值:"<<min1(b)<<std::endl;
- std::cout<<"b第二种方法最小值:"<<min2(b)<<std::endl;
- std::vector<int> c;
- try
- {
- std::cout<<"c第一种方法最小值:"<<min1(c)<<std::endl;
- std::cout<<"c第二种方法最小值:"<<min2(c)<<std::endl;
- }
- catch (char *s)
- {
- std::cerr<<s<<std::endl;
- }
- /*泛型算法的数组排序算法*/
- sort(a.begin(),a.end());
- cout<<"/******************************************************/"<<endl;
- cout<<"排序结果"<<endl;
- for (vector<string>::iterator i = a.begin();i != a.end();i++)
- {
- cout<<*i<<endl;
- }
- cout<<"/******************************************************/"<<endl;
- string search_value;
- cout<<"请输入要搜索字符串"<<endl;
- cin>>search_value;
- vector<string>::iterator result;
- result = find(a.begin(),a.end(),search_value);
- if (result != a.end())
- {
- cout<<"'"<<search_value<<"'"<<"元素存在"<<endl;
- }
- else
- {
- cout<<"'"<<search_value<<"'"<<"未发现"<<endl;
- }
- /*以时间保存文件名*/
- time_t nowtime = time(NULL);
- struct tm *p;
- p = gmtime(&nowtime);
- char filename[256] = {0};
- char timeinfo[256] = {0};
- sprintf(filename,"%d-%d-%d.txt",1900+p->tm_year,1+p->tm_mon,p->tm_mday);
- //UTC时,中国是东八区,因此要+8
- 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);
- ofstream fw(filename);
- fw<<timeinfo<<"最小值是"<<min1(b)<<endl;
- }
保存文件名称可以看到2013-3-28,是以当前日期命名
查看文件内容,可以看到如下结果
这与我们平时使用软件时,里面一些记录的文本文件内容格式相似,这种方法对平时我们的软件仿真,记录调试信息,相信都会有一定的帮助。