11.4 编写单词计数程序,忽略大小写和标点。例如,“example.”,“example,"和”Example“应该递增相同的计算器。
#include<iostream> #include<map> #include<string> #include<algorithm> using namespace std; int main() { map<string,size_t> word_count; string word; while(cin>>word) { word[0]=tolower(word[0]); auto f=find(word.begin(),word.end(),','); if(f!=word.end()) word.erase(f); auto ff=find(word.begin(),word.end(),'.'); if(ff!=word.end()) word.erase(ff); ++word_count[word]; } for(auto w:word_count) cout<<w.first<<" occurs "<<w.second<<endl; return 0; }
11.7定义一个map,关键字是家庭的姓,值是一个vector,保存家中孩子们的名。编写代码,实现添加新的家庭以及向已有家庭中添加新的孩子。
#include<iostream> #include<map> #include<string> #include<vector> #include<utility> using namespace std; int main() { vector<string> student; map<string,vector<string>> family; string firstname; string lastname; /*while(cin>>lastname&&lastname!="0") { family.insert(make_pair(lastname,student)); }*/ while(cin>>lastname) { while(cin>>firstname&&firstname!=" ) family[lastname].push_back(firstname); } for(auto s:family) { cout<<s.first<<" firstname "; for(auto r:s.second) cout<<r<<" "; cout<<endl; } return 0; }