10.24
#include<iostream>
#include<vector>
#include<list>
#include<string>
#include<iterator>
#include<algorithm>
#include<functional>
using namespace std;
using namespace std::placeholders;
bool check_size(int n, string::size_type sz)
{
return n >= sz;
}
int main(int argc, char* argv[])
{
string s = "test";
string::size_type sz = s.size();
vector<int> v = { 2,3,5,6,8,9, };
auto val1 = find_if(v.begin(), v.end(), bind(check_size, _1, sz));
cout << *val1 << endl;
auto g = bind(check_size, _1, sz);
auto val2 = find_if(v.begin(), v.end(), g);
cout << *val2 << endl;
return 0;
}
10.25
#include<iostream>
#include<vector>
#include<list>
#include<string>
#include<iterator>
#include<algorithm>
#include<functional>
using namespace std;
using namespace std::placeholders;
bool check_size(const string& s, vector<string>::size_type sz) {
return s.size() >= sz;
}
int main(int argc, char* argv[])
{
vector<string> v = { "It","is","a","words","test", };
vector<string>::size_type sz = 2;
auto g = bind(check_size, _1, sz);
partition(v.begin(), v.end(), g);
for (auto s : v)
cout << s << " ";
return 0;
}
10.33
#include<iostream>
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
ifstream inf("1.txt");
ofstream outf1("2.txt"), outf2("3.txt");
istream_iterator<int> in(inf), eof;
ostream_iterator<int> out1(outf1, " "), out2(outf2, "\n");
vector<int> vec(in, eof);
copy_if(vec.begin(), vec.end(), out1, [](int n) { return n % 2; });
copy_if(vec.begin(), vec.end(), out2, [](int n) { return !(n % 2); });
return 0;
}