小编Vus*_*sak的帖子

C++ 0x lambda包装器与用于传递成员函数的bind

这基本上是关于创建/传递一个从类构造函数/方法中指向成员方法的仿函数的两种不同方法的可读性,样式和性能的问题.

方法1:

using namespace std::placeholders;
std::bind( &MyClass::some_method, this, _1, _2, _3 )
Run Code Online (Sandbox Code Playgroud)

方法2:

[ this ](const arg1& a, arg2 b, arg3& c) -> blah { some_method( a, b, c ); }
Run Code Online (Sandbox Code Playgroud)

我想知道在这种情况下使用lambda是否是无偿的,在某些方面它更容易看到发生了什么,但是你必须明确地提供arg类型.此外,我更喜欢不使用"使用命名空间;" 但是它使得绑定表达式不必要地冗长(例如._1变成std :: placeholders :: _ 1),而lambda避免了这个问题.

最后我应该注意到,出于这个问题的目的,some_method是一个很大的功能,可以做很多事情,并且直接复制到lambda体内会很痛苦.

如果这个问题看起来太模糊,那么我们可以专注于性能差异的答案,如果有的话.

编辑:一个非平凡的用例.

MyClass::MyClass()
:    some_member_( CALLBACK_FUNCTOR )
{}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,初始化列表中使用的CALLBACK_FUNCTOR(使用方法1或2定义)使得使用声明(afaik)的范围变得很困难,显然我们不打算包装我们打算立即调用的成员方法.

lambda bind member-function-pointers c++11

11
推荐指数
1
解决办法
3741
查看次数

Pango + Cairo; 是否有现成的方法来处理文本中的<img>样式标签?

Pango语法支持一些仅文本标记.据我所知,这并没有延伸到嵌入图像.

环顾四周,我找不到现有实施的方式,但我之前没有做过pango + cairo工作,所以我可能会错过明显的社区.

据我所知,合理的方法是分析字符串,拉出任何标签,创建cairo图像,然后相应地修改它们周围的pango布局.

它似乎也是某人之前可能做过的事情.

我特意在这些问题上寻找答案:

  1. pango + cairo已经解决了这个问题,我误解了文档吗?
  2. 以前做过这样的事情,参考在哪里?
  3. 这是一种合理的方法,还是我应该尝试别的什么,什么?

(另请注意我使用红宝石,这可能会影响我的选择)

ruby pango cairo

6
推荐指数
1
解决办法
575
查看次数

标签 统计

bind ×1

c++11 ×1

cairo ×1

lambda ×1

member-function-pointers ×1

pango ×1

ruby ×1