c++11
文章平均质量分 59
A 壹零贰肆
长风破浪会有时,直挂云帆济沧海。
展开
-
C++11新特性:参数绑定——std::bind
概述 std::bind函数定义在头文件functional中,是一个函数模板,它就像一个函数适配器,接受一个可调用对象(callable object),生成一个新的可调用对象来“适应”原对象的参数列表。一般而言,我们用它可以把一个原本接收N个参数的函数fn,通过绑定一些参数,返回一个接收M个(M可以大于N,但这么做没什么意义)参数的新函数。同时,使用std::bind函数还可以实现参数顺序调整等操作。 函数原型 std::bind函数有两种函数原型,定义如下: template< cla..转载 2021-09-14 23:00:40 · 828 阅读 · 0 评论 -
std::function实现原理简述
实际上,每个function实例都根据函数类型的中返回值和参数类型推演出一个特例化,然后用类的成员变量去保留用这个函数类型的产生的函数指针,使用的时候实际上调用该类的小括号运算符重载operator() int sum(int a,int b){ return a+b; } template <typename R> class MyFunction{}; /* 部分特例化 R:operator()的返回值,Arg1,Arg1为operator()的形参类型 */ template转载 2021-09-14 22:57:08 · 364 阅读 · 0 评论 -
std::function详解
std::function简介 • 类模板声明 // MS C++ 2013 template<class _Fty> class function; template<class _Fty> class function : public _Get_function_impl<_Fty>::type { ... } // GCC 4.8.2 template<typename _Signature> class fu转载 2021-09-14 22:54:38 · 1467 阅读 · 2 评论 -
C++ std::function介绍和使用
std::function简介 std::function是C++11中新引入的模板类。 类模板std::function是一种通用的多态函数包装器。std::function可以存储,复制和调用任何Callable 目标的实例,例如函数,lambda表达式,绑定表达式或其他函数对象,以及指向成员函数和指向数据成员的指针。 所存储的可调用对象被称为目标的std::function。如果一个std::function实例不包含目标,则将其称为空。调用空的std::function对象会导致抛出异常std:转载 2021-09-14 22:45:59 · 768 阅读 · 0 评论 -
C++11中的std::tuple
std::tuple是类似pair的模板。每个pair的成员类型都不相同,但每个pair都恰好有两个成员。不同std::tuple类型的成员类型也不相同,但一个std::tuple可以有任意数量的成员。每个确定的std::tuple类型的成员数目是固定的,但一个std::tuple类型的成员数目可以与另一个std::tuple类型不同。 但我们希望将一些数据组合成单一对象,但又不想麻烦地定义一个新数据结构来表示这些数据时,std::tuple是非常有用的。我们可以将std::tuple看作一个”快速而随意转载 2021-09-14 22:32:54 · 222 阅读 · 0 评论 -
C++之Lambda表达式
1. 概述 C++ 11 中的 Lambda 表达式用于定义并创建匿名的函数对象,以简化编程工作。 Lambda 的语法形式如下: [函数对象参数] (操作符重载函数参数) mutable 或 exception 声明 -> 返回值类型 {函数体} 可以看到,Lambda 主要分为五个部分:[函数对象参数]、(操作符重载函数参数)、mutable 或 exception 声明、-> 返回值类型、{函数体}. 2. Lambda 语法分析 2.1 [函数对象参数] 标识一个 Lam转载 2020-09-12 20:42:39 · 313 阅读 · 0 评论