问题标签 [boost-lambda]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - c++ boost lambda 库
使用 boost lambda 库开始编程的最佳方式可能是什么。
c++ - Boost phoenix 或 lambda 库问题:从 std::vector 中删除元素
我最近遇到了一个问题,我认为 boost::lambda 或 boost::phoenix 可以帮助解决,但我无法正确使用语法,所以我用了另一种方式。我想要做的是删除“字符串”中小于一定长度而不是另一个容器中的所有元素。
这是我的第一次尝试:
我最终是如何做到的:
c++ - boost lambda 或 phoenix 问题:使用 std::for_each 对容器的每个元素进行操作
我在清理一些旧代码时遇到了问题。这是功能:
我感兴趣的是将 for 循环清理为 lambda 表达式,但很快就陷入了如何将正确的参数传递给 get_connectivity_data 的问题。get_connectivity_data 通过引用获取 std::vector 并用一些数据填充它。输出包含每个“块”的 std::vector。
基本上我的结论是,让我的代码保持原样更容易、更简洁、更短。
编辑:
因此,正如我所设想的那样,对我的问题最接近的答案是:
然而该代码无法编译,我对代码进行了一些修改以使其编译,但我遇到了 2 个问题:
- _ 1 是一个智能 ptr,std::distance 对它不起作用,我想我需要使用 &chunks[0] 作为开始
- 由于 _ 1 是一个智能指针,我不得不这样做: &chunk_vec_t::value_ type::ValueType::get_connectivity_data 导致 VC9 编译器崩溃...
关于 zip_ 迭代器的答案看起来不错,直到我进一步阅读并发现对于这种特定用途,所需的额外代码量很大(绑定这个和那个等)。
编辑2:
我找到了一个可接受的解决方案,它的无关语法低且清晰,我在此处和下面发布了该解决方案。
c++ - Boost.Lambda:插入不同的数据结构
我有一个vector
我想插入到set
. 这是三个不同的调用之一(另外两个更复杂,涉及boost::lambda::if_()
),但解决这个简单的案例将帮助我解决其他问题。
不幸的是,这会失败并显示转换错误消息(尝试转换boost::lambda::placeholder1_type
为std::string
)。
所以……这有什么问题?
c++ - 增强 lambda 困惑
为什么回调只调用一次?
c++ - 提升 lambda 集合大小评估
我有一个形式的功能:
这个函数做一些工作并且只在条件为真时返回。该条件已表示为函子参数,因为我想在不同的调用站点提供不同的条件。
现在,直接使用它相当简单,但它需要声明许多小的一次性函数或仿函数对象,如果可能的话,我想避免这些。我一直在研究 Boost 的 lambda 库,以寻找消除这些问题的可能方法,但我认为我缺少一些基本的东西;我只是不能让它做我想做的事。
目前让我感到难过的一个案例是:我有一个std::vector
名为data
;的集合。我所追求的条件是当该size()
集合达到某个阈值时。那么,本质上,我希望我的condition
仿函数在何时返回真data.size() >= threshold
,否则返回假。但我一直无法用 lambda 语法表达它。
到目前为止,我能想到的最好的(至少可以编译,尽管它不起作用)是这样的:
在进入 时DoSomething
,大小为 0——即使在运行过程中大小增加,对 的调用condition()
似乎总是大小为 0。跟踪它(通过 Boost 的内部机制有点棘手),而它确实似乎在greater_equal
每次condition()
评估时都在调用,它似乎没有在调用size()
.
那么我完全搞砸了什么基本的事情?有没有一种更简单的方式来表达这种事情(同时仍然尽可能保持代码内联)?
理想情况下,我希望它尽可能接近 C# 等效代码流畅度:
c++ - 问题嵌套 boost::lambda::bind-s
我有一个通用功能:
我可以成功调用:
然后,我需要将它们全部替换为一种格式,而不是向缩略图中添加一定数量的某种格式。更准确地说,使用 1 个元素的列表,如下所示:
这导致“boost/lambda/detail/actions.hpp(96) : error C2665: 'boost::lambda::function_adaptor::apply' : 2 个重载都不能转换所有参数类型”。
我在这里做错了什么?
顺便提一句
c++ - 使用 boost::lambda_ 压缩字符串中的空格
我正在使用 boost::lambda 删除字符串中的后续空格,只留下一个空格。我试过这个程序。
注释的行工作正常,但未注释的行不行。
怎么
不同于
在上述节目中。评论的人还给了我一个警告,“警告 C4805:'==':'bool' 类型和 'const char' 类型在操作中的不安全混合”
谢谢。
boost - boost::lambda::ll 在哪里?
我似乎无法在 boost_1_39_0 发行版的任何头文件中找到嵌套的 ll::for_each() 调用的 boost::lambda::ll 。有人能指出我正确的方向吗?谢谢。
c++ - C++:如何使用 std::less使用 boost::bind 和 boost::lambda?
我正在尝试精简 boost::bind、boost::lambda 库以及它们如何与 STL 算法一起使用。假设我有按 int 键排序的 int-string 对向量。然后可以找到在保持向量排序的同时插入新对的位置,如下所示:
现在我想operator<
用一个函数对象(std::less<int>
本例中的类型)替换:
如何更改上面的代码以使其正常工作?我不能只是做
因为std::less<int>::operator()
不接受boost::bind
. 我在这里想念什么?TIA