Accelerated C++ Exercise 5-6
来源:互联网 发布:佳能mp258清零软件 编辑:程序博客网 时间:2024/06/05 19:00
#include "extract_fails.h"#include "grade.h"using std::list;using std::vector;// version 4: use `list' instead of `vector' list<Student_info> extract_fails(list<Student_info>& students) { list<Student_info> fail; list<Student_info>::iterator iter = students.begin(); while (iter != students.end()) { if (fgrade(*iter)) { fail.push_back(*iter); iter = students.erase(iter); } else ++iter; } return fail; }/*vector<Student_info> extract_fails(vector<Student_info>& students) { vector<Student_info> pass, fail; for (vector<Student_info>::size_type i = 0; i != students.size(); ++i) if (fgrade(students[i])) fail.push_back(students[i]); else pass.push_back(students[i]); students = pass; return fail; } */ vector<Student_info> extract_fails(vector<Student_info>& students) { vector<Student_info> pass, fail; #ifdef _MSC_VERstd::vector<Student_info>::size_type i = 0;#elsevector<Student_info>::size_type i = 0;#endif// invariant: elements `[0,' `i)' of `students' represent passing gradeswhile (i != students.size()) {if (fgrade(students[i])) {fail.push_back(students[i]);students.insert(students.begin(), students[i]);++i; } ++i;} students.resize(students.size() - fail.size());return fail;}
#include <algorithm> #include <vector >#include <string> #include <fstream>#include <ctime> #include "grade.h" #include "Student_info.h" #include "extract_fails.h" using std::max; using std::cin; using std::cout; using std::endl; using std::vector; using std::string; using std::ofstream;using std::ifstream;using std::sort; int main() { vector<Student_info> vs; Student_info s; string::size_type maxlen = 0;ifstream infile; //infile.open("100.txt"); //Elapsed:6 对比:27infile.open("1000.txt"); //Elapsed:58 对比:1844//infile.open("10000.txt"); //Elapsed:571 对比:没有耐心等下去!!!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); } sort(vs.begin(), vs.end(), compare); clock_t start=clock();vector<Student_info> fails = extract_fails(vs); clock_t elapsed=clock()-start;cout<<" ELAPSED: "<<elapsed<<endl<<endl;vector<Student_info>::iterator i; /*for (i = fails.begin(); i != fails.end(); ++i) cout << i->name << " " << grade(*i) << endl<<endl; vector<Student_info>::iterator j; for (j = vs.begin(); j != vs.end(); ++j) cout << j->name << " " << grade(*j) << endl; */system("pause"); return 0; }
这种方法和以前相比效率低很多!!!
- Accelerated C++ Exercise 5-6
- Accelerated C++ Exercise 5-5
- Accelerated C++ Exercise 6-1
- Accelerated C++ Exercise 6-2
- Accelerated C++ Exercise 4-5
- Accelerated C++ Exercise 5-9
- Accelerated C++ Exercise 7-5
- Accelerated C++ Exercise 6-0 (查找URL)
- Accelerated C++ Exercise 6-0 (分析成绩)
- Accelerated C++ Exercise 6-0 (回文数)
- Accelerated C++ Exercise 4-5(2)
- Accelerated C++ Exercise 5-0(split)
- Accelerated C++ Exercise 5-0(frame)
- Accelerated C++ Exercise 5-1(0)
- Accelerated C++ Exercise 5-10(回文数)
- Accelerated C++<4-6>
- Accelerated C++<4-5>
- Accelerated C++ Exercise 5-3(5-4)
- Java程序员的推荐阅读书籍之七《敏捷软件开发 原则、模式与实践》
- Java程序员的推荐阅读书籍之八《Expert One-on-One J2EE Design and Development》
- 110602 How Many Pieces of Land
- java程序员推荐书籍资源
- Java程序员的推荐阅读书籍之九《测试驱动开发》
- Accelerated C++ Exercise 5-6
- Java程序员的推荐阅读书籍之十《Agile Java》
- ubuntu 10.04 中安装mysql5.1.4
- NSOperationQueue串行操作
- c函数调用过程原理及函数栈帧分析
- 今天发现的两个有价值的东东
- 显示器终于修好了
- ubuntu10.04中安装使用IE6
- oracle分页查询数据重复问题的解决