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

C++ Primer课后练习10.22,10.23,10.24,10.25

2016-12-23 20:11 369 查看
//课后练习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;
}
}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: