- 博客(7)
- 收藏
- 关注
原创 std::function 的性能陷进
前言std::function 的作用很强大,他让vector等保存不同类型函数的对象: function, functor, lambda…成为了可能。但他有一个潜在的性能风险:在保存lambda/bind时,如果对象的大小 大于两个指针的大小,他就需要分配动态空间。这是大部分人写C++的人不期望看到的。function什么分配内存先看function实现的几段代码:6.1.0a-2/in...
2019-08-24 17:31:35
2742
1
原创 C++ Range:view all - 1
view::allinclude\range\v3\view\all.hpp struct all_fn : pipeable<all_fn> { private: /// If it's a view already, pass it though. template<typena...
2019-08-14 21:47:27
397
原创 C++ Range - for_each5:回答for_each2中的问题
问题解答第一个for_each函数 template<typename I, typename S, typename F, typename P = identity> auto operator()(I begin, S end, F fun, P proj = P{}) const -> CPP_ret(for_each_res...
2019-08-13 22:55:02
217
原创 C++ Range - for_each4:invoke
invoke在for_each2节中讲到for_each的调用函数invoke,在第for_each3节中,分析了一个关键宏CPP_auto_fun的实现,发现原来的代码中,Eric的例子返回值应该需要auto,给他提了patch. 这节回到invoke的分析。operator () template<class F, class T, class T1, class... Args...
2019-08-13 21:45:45
204
原创 C++ Range - for_each3: CPP_auto_fun的实现
CPP_auto_funCPP_auto_fun是通过一系列宏定义实现的。先看它的调用的几个宏定义。CPP_PP_CHECK#define CPP_PP_CHECK(...) CPP_PP_CHECK_N(__VA_ARGS__, 0,)#define CPP_PP_CHECK_N(x, n, ...) nCHECK扩展成0或者第二个参数。代码 CPP_PP_CHECK(); ...
2019-08-12 20:11:32
239
原创 C++ Range - for_each2: for_each的代码
for_each的实现分析file: include\range\v3\algorithm\for_each.hpp 66 RANGES_INLINE_VARIABLE(for_each_fn, for_each)承接上一篇的的分析,RANGES_INLINE_VARIABLE的作用是根据类型定义一个inline的变量,所以这句话的作用是定义了一个for_each是类型for_eac...
2019-08-10 22:55:43
216
原创 C++ Range - for_each1: RANGES_INLINE_VARIABLE
C++ range分析 - 1前言ranges::for_each前言追求simpler,cleaner,more expressive的C++在range表达被引入标准库之后,肯定会被大规模被使用。这里先来体验一下range的优美。这边分析的代码都来之:https://github.com/ericniebler/range-v3.ranges::for_each#include &l...
2019-08-08 22:59:07
317
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人