1 Star 0 Fork 3

uss-enterprise/深入应用C++11:代码优化与工程级应用 的实践代码

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
1-22.cpp 1.39 KB
一键复制 编辑 原始数据 按行查看 历史
四月是你的谎言 提交于 2021-07-08 09:45 . 添加注释和代码格式
#include <iostream>
#include <functional>
#include <list>
#include <algorithm>
class A
{
public:
int i_ = 0;
void output(int x, int y)
{
std::cout << x << " " << y << std::endl;
}
};
int main(void)
{
A a;
std::function<void(int, int)> fr = std::bind(&A::output, &a,
std::placeholders::_1, std::placeholders::_2);
fr(1, 2);
std::function<int &(void)> fr_i = std::bind(&A::i_, &a);
fr_i() = 123;
std::cout << a.i_ << std::endl;
std::list<int> coll = {1, 2, 9, 4};
using std::placeholders::_1;
//int count = std::count_if(coll.begin(), coll.end(), std::bind(std::less<int>(), 2, _1));
//使用组合 bind 函数
//目标找出集合中大于 5 小于10 的元素个数
std::bind(std::greater<int>(), std::placeholders::_1, 5);
std::bind(std::less_equal<int>(), std::placeholders::_1, 10);
//using std::placeholders::_1;
auto f = std::bind(std::logical_and<bool>(),
std::bind(std::greater<int>(), _1, 5),
std::bind(std::less_equal<int>(), _1, 10));
int count = std::count_if(coll.begin(), coll.end(), f);
std::cout << count << std::endl;
return 0;
}
//fr 的类型是 std::function<void(int, int)>。 我们通过使用 std::bind ,将 A 的成员函数 output 的指针和 a 绑定,并转换为一个仿函数放入 fr 中存储
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/uss-enterprise/c11_book_learned_code.git
[email protected]:uss-enterprise/c11_book_learned_code.git
uss-enterprise
c11_book_learned_code
深入应用C++11:代码优化与工程级应用 的实践代码
master

搜索帮助