您的位置:首页 > 编程语言 > C语言/C++

Accelerated C++ Exercise 5-2(list版本)

2013-11-17 14:48 211 查看
#include <algorithm>
#include <list>
#include <iostream>
#include <fstream>
#include <string>
#include <ctime>

#include "Student_info.h"
#include "grade.h"

//driver program for grade partitioning examples

using std::cin;
using std::cout;
using std::endl;
using std::sort;
using std::string;
using std::list;
using std::max;
using std::ifstream;
using std::ofstream;

list<Student_info> extract_fails(list<Student_info>& students) {
list<Student_info> fail;
#ifdef _MSC_VER
std::list<Student_info>::iterator iter = students.begin();
#else
list<Student_info>::iterator iter = students.begin();
#endif

while (iter != students.end()) {
if (fgrade(*iter)) {
fail.push_back(*iter);
iter = students.erase(iter);
} else
++iter;
}
return fail;
}

int main() {
list<Student_info> vs;
Student_info s;
string::size_type maxlen = 0;
ifstream infile;
//infile.open("100.txt"); //   <vector>Elapsed:10        <list>Elapsed:3
//infile.open("1000.txt"); //  <vector>Elapsed:751      <list>Elapsed:35
infile.open("10000.txt"); //   <vector>Elapsed:69599      <list>Elapsed:326
if(!infile.is_open()){
cout<<"不可以打开文件"<<std::endl;
system("pause");
exit(1);
}
while (read(infile, s)) {
maxlen = max(maxlen, s.name.size());
vs.push_back(s);
}

vs.sort(compare);

clock_t start = clock();
list<Student_info> fails = extract_fails(vs);
//list<Student_info>::iterator i;
//for (i = fails.begin(); i != fails.end(); ++i)
//     cout << i->name << " " << grade(*i) << endl<<endl;
clock_t elapsed = clock() - start;

cout << "Elapsed: " << elapsed << endl;
//  for (int i = 0; i < fails.size(); ++i)
//  cout << fails[i].name << " " << grade(fails[i]) << endl;
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: