C++ Primer第五版練習 14.42
阿新 • • 發佈:2021-01-26
練習 14.42: 使用標準庫函式物件及介面卡定義一條表示式,令其:
(a) 統計大於1024的值有多少個。
#include <iostream>
#include <vector>
#include <functional>
#include <algorithm>
using namespace std;
using std::placeholders::_1;
int main() {
vector<int> vec{
1, 2, 3, 4, 1088 , 42, 2096, 1024
};
auto cmp = bind(greater<int>(), _1, 1024);
cout<< count_if(vec.begin(), vec.end(), cmp) << endl;
return 0;
}
(b) 找到第一個不等於pooh的字串
#include <iostream>
#include <vector>
#include <functional>
#include <algorithm>
using namespace std;
using std::placeholders::_1;
int main() {
vector<string> vec{
"pooh", "pony", "pis",
};
auto sln = bind(not_equal_to<string>(), "pooh", _1);
vector<string>::iterator iter = find_if(vec.begin(), vec.end(), sln);
if(iter != vec.end()) {
cout<< *iter<<endl;
}
return 0;
}
(c) 將所有的值乘以2
#include <iostream>
#include <functional>
#include <vector>
#include <algorithm>
using namespace std;
using std::placeholders::_1;
int main() {
vector<int> vec{
1, 0, -1,
};
auto multi = bind(multiplies<int>(), 2, _1);
transform(vec.begin(), vec.end(), vec.begin(), multi);
for(int i : vec) {
cout<<i<<' ';
}
return 0;
}