C++ primer 第五版 中文版 练习 10.24
题目:给定一个string,使用bind和check_size在一个int的vector中查找第一个大于string长度的值。
答:
/*
给定一个string,使用bind和check_size在一个int的vector中查找第一个大于string长度的值。
*/
#include <iostream>
#include <vector>
#include <string>
#include <functional>
#include <algorithm>
using namespace std;
using namespace std::placeholders;
bool check_size(const string &s, string::size_type sz)
{
return s.size() < sz;
}
vector<int>::const_iterator dengyusizedezhi(const vector<int> &vect,const string &s)
{
auto iter = find_if(vect.cbegin(), vect.cend(), bind(check_size, s, _1));
return iter;
}
int main()
{
vector<int> ivect = { 1, 1, 2, 3, 5, 8 ,13};
string str = "C+++++";
auto iter = dengyusizedezhi(ivect, str);
if (iter == ivect.cend())
{
cout << "没找大于string长度的值" << endl;
}
else
{
cout << "vector<int>中第一个大于string长度的值为:" << *iter << endl;
}
return 0;
}