使用lambda函数进行向量排序,如果不在同一范围内,如何传递变量以捕获组?

汤姆

本质上,我有一个很大的lambda函数,用于对自定义对象的向量进行排序。唯一的问题是lambda函数依赖于通过捕获组传递给它的对象。这已经工作了一段时间,但是现在我想在程序的不同部分中重用相同的功能。这是我的代码:

void fun(int i) {
...

BarMovement movement(i);

auto sortByBarMovement = [movement](OrderLogic::OpenOrder const& order1, OrderLogic::OpenOrder const& order2) -> bool
{
    ...
};

std::sort(std::begin(same_bar_order_fill), std::end(same_bar_order_fill), sortByBarMovement);

...
}

我想将sortByBarMovementlambda移到它自己的函数中,以便我可以重用它。但是,它取决于movement捕获组中的项目

movement如果移到sortByBarMovement其他作用域,如何在C ++中将该对象传递给lambda函数

maximum_prime_is_463035818

Lambda只是函子的语法糖。最大的好处是,您可以在同一范围内直接在使用Lambda的地方直接编写它。另一方面,如果要在其他地方重用它,则与普通函数对象相比,lambda没有太大优势。也许更清楚是否跳过糖:

struct sortByBarMovement_type {
    BarMovement movement;
    sortByBarMovement_type(const BarMovement& movement) : movement(movement) {}
    bool operator()(OrderLogic::OpenOrder const& order1, OrderLogic::OpenOrder const& order2) const {
        ...
    }
};

基本上就是您所需要的。fun现在看起来像这样:

void fun(int i) {
...

BarMovement movement(i);

sortByBarMovement_type sortByBarMovement{movement};

std::sort(std::begin(same_bar_order_fill), std::end(same_bar_order_fill), sortByBarMovement);

...
}

PS:我试图尽可能接近您的代码。这就是为什么我要复制的原因movement也许保持引用就足够了。而且您的lambdaoperator()constsortByBarMovement_type::operator()不一定必须是const

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在环视范围内使用捕获组

来自分类Dev

如何使用Python从函数传递变量

来自分类Dev

类变量不在类函数的范围内

来自分类Dev

如果我不在范围内,如何添加 wifi 连接

来自分类Dev

如何解决“变量不在范围内”错误?

来自分类Dev

如果不在范围内,则放置“ nil”

来自分类Dev

如果TouchLocation不在范围内

来自分类Dev

如何在函数中引用模块变量而不在Elixir 1.0.3中引用模块变量?在其父范围内?

来自分类Dev

在同一范围内释放函数中的内存

来自分类Dev

Haskell变量不在范围内

来自分类Dev

Haskell:变量不在范围内吗?

来自分类Dev

Haskell变量不在范围内

来自分类Dev

AngularJS变量不在视野范围内

来自分类Dev

为什么“变量不在范围内”

来自分类Dev

如果使用-syntax,如何传递变量以供选择?

来自分类Dev

数据构造函数不在范围内

来自分类Dev

Firebase,如何在日期范围内对键进行排序

来自分类Dev

在C ++中对向量进行向量排序

来自分类Dev

使用“ groupby”而不在组内进行聚合和排序

来自分类Dev

如何在相同范围内的函数之间传递值

来自分类Dev

如何使用新方法在函数内部传递变量

来自分类Dev

像 SQL 一样使用 IndexedDB。使用不在范围内的多个索引值进行查询

来自分类Dev

如何通过函数的函数传递变量

来自分类Dev

如何使用矩阵函数作为输入变量计算行向量?

来自分类Dev

如何使用Python中同一列的值填充范围内的列?

来自分类Dev

C++:如何在同一范围内多次使用 parallel-for 宏?

来自分类Dev

fplot:如果限制不在特定范围内,则匿名函数仅返回零

来自分类Dev

不在范围内:<*>

来自分类Dev

不在范围内

Related 相关文章

热门标签

归档