C++Primer(第十一章课后习题程序题源代码)
来源:互联网 发布:常用排序算法 编辑:程序博客网 时间:2024/05/21 08:46
11.3
#include<iostream>#include<fstream>#include<map>#include<string>#include<algorithm>using namespace std;int main(int argc, char *argv[]){ ifstream in(argv[1]); if (!in) { cout << "打开输入文件失败" << endl; exit(1); } map<string, size_t>word_count; string word; while (in >> word) ++word_count[word]; for (const auto &w : word_count) cout << w.first << "出现了" << w.second << "次" << endl; return 0;}
11.4
#include<iostream>#include<fstream>#include<map>#include<string>#include<algorithm>using namespace std;string &trans(string &s){ for (decltype(s.size()) p = 0; p < s.size(); p++) { if (s[p] >= 'A'&&s[p] <= 'Z') s[p] -= ('A' - 'a'); else if (s[p] == ',' || s[p] == '.') s.erase(p, 1); } return s;}int main(int argc, char *argv[]){ ifstream in(argv[1]); if (!in) { cout << "打开输入文件失败" << endl; exit(1); } map<string, size_t>word_count; string word; while (in >> word) ++word_count[trans(word)]; for (const auto &w : word_count) cout << w.first << "出现了" << w.second << "次" << endl; return 0;}
11.7
#include<iostream>#include<fstream>#include<map>#include<string>#include<algorithm>#include<vector>using namespace std;void add_family(map<string, vector<string>>&families, const string &family){ if (families.find(family) == families.end()) families[family] = vector<string>();}void add_child(map<string, vector<string>>&families, const string &family, const string &child){ families[family].push_back(child);}int main(){ map<string, vector<string>>families; add_family(families, "张"); add_child(families, "张", "强"); add_child(families, "张", "刚"); add_child(families, "王", "五"); add_family(families, "王"); for (auto f : families) { cout << f.first << "家的孩子:"; for (auto c : f.second) cout << c << " "; cout << endl; } return 0;}
11.8
#include<iostream>#include<fstream>#include<map>#include<string>#include<algorithm>#include<set>using namespace std;string &trans(string &s){ for (decltype(s.size()) p = 0; p < s.size(); p++) { if (s[p] >= 'A'&&s[p] <= 'Z') s[p] -= ('A' - 'a'); else if (s[p] == ',' || s[p] == '.') s.erase(p, 1); } return s;}int main(int argc, char *argv[]){ ifstream in(argv[1]); if (!in) { cout << "打开输入文件失败" << endl; exit(1); } set<string> unique_word; string word; while(in >> word) { trans(word); unique_word.insert(word); } for (const auto &w : unique_word) cout << w << endl; cout << endl; return 0;}
#include<iostream>#include<fstream>#include<map>#include<string>#include<algorithm>#include<set>#include<vector>using namespace std;string &trans(string &s){ for (decltype(s.size()) p = 0; p < s.size(); p++) { if (s[p] >= 'A'&&s[p] <= 'Z') s[p] -= ('A' - 'a'); else if (s[p] == ',' || s[p] == '.') s.erase(p, 1); } return s;}int main(int argc, char *argv[]){ ifstream in(argv[1]); if (!in) { cout << "打开输入文件失败" << endl; exit(1); } vector<string> unique_word; string word; while (in >> word) { trans(word); if (find(unique_word.begin(), unique_word.end(), word) == unique_word.end()) unique_word.push_back(word); } for (const auto &w : unique_word) cout << w << endl; cout << endl; return 0;}
11.9
#include<iostream>#include<fstream>#include<map>#include<string>#include<algorithm>#include<set>#include<vector>#include<list>#include <sstream>using namespace std;string &trans(string &s){ for (decltype(s.size()) p = 0; p < s.size(); p++) { if (s[p] >= 'A'&&s[p] <= 'Z') s[p] -= ('A' - 'a'); else if (s[p] == ',' || s[p] == '.') s.erase(p, 1); } return s;}int main(int argc, char *argv[]){ ifstream in(argv[1]); if (!in) { cout << "打开输入文件失败" << endl; exit(1); } map<string, list<int>>word_lineno; string line; string word; int lineno = 0; while (getline(in, line)) { lineno++; istringstream l_in(line); while (l_in >> word) { trans(word); word_lineno[word].push_back(lineno); } } for (const auto &w : word_lineno) { cout << w.first << "所在行:"; for (const auto &i : w.second) cout << i << " "; cout << endl; } return 0;}
11.12
#include<iostream>#include<fstream>#include<utility>#include<vector>#include<string>#include<algorithm>using namespace std;int main(int argc, char *argv[]){ ifstream in(argv[1]); if (!in) { cout << "打开输入文件失败!" << endl; exit(1); } vector<pair<string, int>>data; string s; int v; while (in >> s&&in >> v) //data.push_back(pair<string, int>(s, v)); //data.push_back({ s, v }); data.push_back(make_pair(s, v)); for (const auto &d : data) { cout << d.first << " " << d.second << endl; } return 0;}
11.14
#include<iostream>#include<map>#include<utility>#include<string>#include<algorithm>#include<vector>using namespace std;void add_family(map<string, vector<pair<string, string>>>&families, const string &family){ families[family];}void add_child(map<string, vector<pair<string, string>>>&families, const string &family, const string &child, const string &birthday){ families[family].push_back({ child, birthday });}int main(int argc, char *argv[]){ map<string, vector<pair<string, string>>>families; add_family(families, "张"); add_child(families, "张", "强", "1970-1-1"); add_child(families, "张", "刚", "1980-1-1"); add_child(families, "王", "五","1990-1-1"); add_family(families, "王"); for (auto f : families) { cout << f.first << "家的孩子:"; for (auto c : f.second) cout << c.first << "(生日" << c.second << "), "; cout << endl; } return 0;}
11.20
#include<iostream>#include<map>#include<utility>#include<string>#include<algorithm>#include<vector>#include<fstream>using namespace std;int main(int argc, char *argv[]){ ifstream in(argv[1]); if (!in) { cout << "打开文件失败" << endl; exit(1); } map<string, size_t> word_count; string word; while (in >> word) { auto ret = word_count.insert({ word, 1 }); if (!ret.second) ++ret.first->second; } /*while (in >> word) { auto ret = word_count.insert({ word, 0 }).first->second; }*/ for (const auto&w : word_count) cout << w.first << "出现了" << w.second << "次" << endl; return 0;}
11.23
#include<iostream>#include<map>#include<utility>#include<string>#include<algorithm>#include<vector>#include<fstream>using namespace std;void add_child(multimap<string, string> &families, const string &family, const string &child){ families.insert({ family, child });}int main(int argc, char *argv[]){ multimap<string, string>families; add_child(families, "张", "强"); add_child(families, "张", "刚"); add_child(families, "王", "五"); for (auto f : families) cout << f.first << "家的孩子:" << f.second << endl; return 0;}
11.31
#include<iostream>#include<map>#include<utility>#include<string>#include<algorithm>#include<vector>#include<fstream>using namespace std;void remove_author(multimap<string, string> &books, const string &author){ auto pos = books.equal_range(author); if (pos.first == pos.second) cout << "没有" << author << "这个作者" << endl << endl; else books.erase(pos.first, pos.second);}void print_books(multimap<string, string>&books){ cout << "当目前书包括:" << endl; for (auto &book : books) cout << book.first << ",《" << book.second << "》" << endl; cout << endl;}int main(int argc, int *argv[]){ multimap<string, string> books; books.insert({ "Barth,John", "Sot-Weed Factor" }); books.insert({ "Barth,John", "Lost in the Funhouse" }); books.insert({ "金庸", "射雕英雄传" }); books.insert({ "金庸", "天龙八部" }); print_books(books); remove_author(books, "张三"); remove_author(books, "Barth,John"); print_books(books); return 0;}
11.38
#include<iostream>#include<fstream>#include<unordered_map>#include<string>#include<algorithm>using namespace std;int main(int argc, char *argv[]){ ifstream in(argv[1]); if (!in) { cout << "打开输入文件失败" << endl; exit(1); } unordered_map<string, size_t>word_count; string word; while (in >> word) ++word_count[word]; for (const auto &w : word_count) cout << w.first << "出现了" << w.second << "次" << endl; return 0;}
打不开
#include<unordered_map>#include<vector>#include<iostream>#include<fstream>#include<string>#include<stdexcept>#include<sstream>using std::unordered_map;using std::string;using std::vector;using std::ifstream;using std::cout;using std::endl;using std::getline;using std::runtime_error;using std::istringstream;unordered_map<string, string> buildMap(ifstream &map_file){ unordered_map<string, string> trans_map; string key; string value; while (map_file >> key&&getline(map_file, value)) if (value.size() > 1) trans_map[key] = value.substr(1); else throw runtime_error("no rule for " + key); return trans_map;}const string & transform(const string &s, const unordered_map<string, string>&m){ auto map_it = m.find(s); if (map_it != m.cend()) return map_it->second; else return s;}void word_transform(ifstream &map_file, ifstream &input){ auto trans_map = buildMap(map_file); cout << "Here is our transformation map: \n\n"; for (auto entry : trans_map) cout << "key: " << entry.first << "\tvalue: " << entry.second << endl; cout << "\n\n"; string text; while (getline(input, text)) { istringstream stream(text); string word; bool firstword = true; while (stream >> word) { if (firstword) firstword = false; else cout << " "; cout << transform(word, trans_map); } cout << endl; }}int main(int argc, char*argv[]){ if (argc != 3) throw runtime_error("wrong number of arguments"); ifstream map_file(argv[1]); if (!map_file) throw runtime_error("no transformation file"); ifstream input(argv[2]); if (!input) throw runtime_error("no input file"); word_transform(map_file, input); system("pause"); return 0;}
0 0
- C++Primer(第十一章课后习题程序题源代码)
- C++Primer(第八章课后习题程序题源代码)
- C++Primer(第七章课后习题程序题源代码)
- C++Primer第十二章课后习题程序题源代码
- c primer plus第十一章课后习题
- C++Primer(第四章课后习题)(程序题源代码)
- C++Primer(第六章课后习题)(程序题源代码)
- C++Primer第三章(第五版) 课后习题 程序题 源代码
- C++Primer(第10章课后程序题源代码)
- C++Primer第九章课后习题程序题源程序
- C++Primer习题第十一章
- C++Pirmer(第五章课后习题)(程序题源代码)
- c primer plus 第八章 课后习题程序
- c++primer第六章课后习题
- C++Primer Chapter3课后习题
- 《C Primer Plus》第二章 C语言概述 课后习题
- 【C Primer Plus】【课后习题】第二章C语言概述
- c程序课后习题219页15题(职工)
- HPUX上的MQ安装
- Android MVP 模式应用实例
- 【tyvj】1030 乳草的入侵 bfs
- LUCENE中的文件操作都是通过这Directory来实现的
- 生成树字符串
- C++Primer(第十一章课后习题程序题源代码)
- 【NOIP1997】骑士游历
- HTTP协议详解
- https原理和tcp握手机制
- 左连接、右连接、内连接、外连接、交叉连接
- qt写的在ok6410上的密码锁
- gdi+(1) 画直线
- NoSQL vs SQL
- gdi+(2) 画矩形