//课后练习10.22 #include<iostream> #include<vector> #include<string> #include<algorithm> #include<numeric> #include<functional> using namespace std; using namespace placeholders; void elimdups(vector<string> & words) { //按字典序排序 sort(words.begin(), words.end()); auto end_unique = unique(words.begin(), words.end()); words.erase(end_unique, words.end()); } bool check_size(const string &s, string::size_type sz) { return s.size() > sz; } bool ishorter(const string &s1, const string &s2) { return s1.size() < s2.size(); } ostream & print(ostream &os, const string & s, char c) { return os << s << c; } void biggies(vector<string> & words, vector<string>::size_type sz) { elimdups(words); //将word按字典序排序,删除重复单词 stable_sort(words.begin(), words.end(), bind(ishorter,_1,_2)); //auto s1 = bind(check_size, _1, sz); auto wc = find_if(words.begin(), words.end(), bind(check_size, _1, sz)); auto count = words.end() - wc; for_each(wc, words.end(), bind(print,ref(cout), _1, ' ')); } int main(void) { vector<string> words; string word; while (cin >> word) { words.push_back(word); } biggies(words, 5); return 0; } /*********************************************************************/
//课后练习10.24 #include<iostream> #include<functional> #include<algorithm> #include<vector> #include<string> using namespace std; using namespace placeholders; bool check_size(const string & s1, string::size_type sz) { return s1.size() < sz; } int main(void) { string s1("whatthe"); vector<int> vec1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; auto wc= find_if(vec1.begin(), vec1.end(), bind(check_size, s1,_1)); int count = vec1.end() - wc; cout << "vec1中第" <<vec1.size()-count << "个第一个大于string长度" << endl;
/********************************************************************/ //练习10.24 #include<iostream> #include<vector> #include<string> #include<algorithm> #include<numeric> #include<functional> using namespace std; using namespace placeholders; void elimdups(vector<string> & words) { //按字典序排序 sort(words.begin(), words.end()); auto end_unique = unique(words.begin(), words.end()); words.erase(end_unique, words.end()); } ostream & print(ostream & os,const string & s, const char c) { return os << s << c; } bool check_size(const string & s, string::size_type sz) { return s.size()> sz; } void biggies(vector<string> & words, vector<string>::size_type sz) { elimdups(words); //将word按字典序排序,删除重复单词 for_each(words.begin(), words.end(), bind(print,ref(cout),_1,' ')); cout << endl; //stable_sort(words.begin(), words.end(),//按大小排序,相同的保存字母顺序 // [](const string& s1, const string & s2){return s1.size() < s2.size(); }); auto wc = partition(words.begin(), words.end(), bind(check_size,_1,sz)); for_each(words.begin(),wc, bind(print, ref(cout), _1, ' ')); cout << endl; } int main(void) { vector<string> words{ "the", "quick", "red", "fox", "jumps", "over", "the", "slow", "red", "turtle" }; biggies(words, 4); return 0; }
}
C++ Primer课后练习10.22,10.23,10.24,10.25
最新推荐文章于 2018-08-22 19:55:50 发布