草庐IT

boost-lambda

全部标签

c++ - 什么类型的变量包含 lambda

这个问题在这里已经有了答案:Typeoflambdafunction[duplicate](3个答案)Whatisthetypeoflambdawhendeducedwith"auto"inC++11?(8个答案)关闭7年前。你能解释一下在这种情况下是哪种类型的L吗?换句话说,我可以使用什么类型来代替auto关键字?intmain(){intx=0;autoL=[x](inty)->bool{returnx>y;};return0;}

c++ - 散列任意精度值(boost::multiprecision::cpp_int)

我需要以任意精度获取一个值的散列值(来自Boost.Multiprecision);我用cpp_int后端。我想出了以下代码:boost::multiprecision::cpp_intx0=1;constautoseed=std::hash{}(x0.str());我不需要代码尽可能快,但我发现对字符串表示进行哈希处理非常笨拙。所以我的问题是双重的:保持任意精度,我可以更有效地散列值吗?也许我不应该坚持保持任意精度,我应该转换成一个我可以轻松散列的double(不过,我仍然会使用任意精度值进行哈希表所需的比较)? 最佳答案 您可以

c++ - 如何将主机名转换为 boost 地址或端点?

我在Boost之上使用C++Redis库。(https://github.com/nekipelov/redisclient)要连接,我必须给它一个单一的tcp端点:boost::asio::ip::tcp::endpoint或者地址+端口boost::asio::ip::address,unsignedshort目前,我开始:boost::asio::ip::addressaddress=boost::asio::ip::address::from_string(someIPVariable);并将其与端口一起传递,它工作正常并已连接。但是,我现在需要通过主机名而不是IP来完成。如果

c++ - 使用 Boost ptree 将 JSON 数组解析为 std::string

我有这段代码,我需要解析/或获取JSON数组作为std::string以在应用程序中使用。std::stringss="{\"id\":\"123\",\"number\":\"456\",\"stuff\":[{\"name\":\"test\"}]}";ptreept2;std::istringstreamis(ss);read_json(is,pt2);std::stringid=pt2.get("id");std::stringnum=pt2.get("number");std::stringstuff=pt2.get("stuff");需要的是像这样检索的“东西”std::s

c++ - Boost 程序选项 bool 总是 True

通过程序选项,我正在检查参数的有效组合。但出于某种原因,gpu参数是一个bool,无论我是否在命令行上将其设置为false,它始终为true。如果我在命令行上指定了gpu选项,有没有办法让它为false?我希望能够创建一个bool变量来表示是否使用了命令行上的选项。我也找不到任何关于variables_map的count()的文档。它是std::map函数吗?部分代码:namespacepo=boost::program_options;po::options_descriptiondesc("AllowedOptions");desc.add_options()("help,h","

c++ - 将 boost spirit 用于基于堆栈的语言

我需要解析一种相当简单的基于堆栈的语言,例如12add31sub我在这里面临两个选择:为标记编写我自己的词法分析器,然后继续解析它使用boostspirit我从未使用过boostspirit,但根据我所阅读的内容(文档和示例),我仍然不能确定使用boostspirit来lex和解析这种简单的语言是否会过大,或者如果使用它而不是推出我自己的词法分析器和解析器是有意义的(我认为这应该不会太难)。将boostspirit用于像上面那种基于堆栈的简单语言会有返回吗(因为我需要先学习它才能使用它)? 最佳答案 在“详尽探索”类别中,让我添加一

c++ - 使用 MSVC 2015 构建 boost 1.55 时指定工具集版本

我下载boost1.55,解压,然后运行以下命令:>bootstrap.batcl:CommandlinewarningD9035:option'GZ'hasbeendeprecatedandwillberemovedinafuturereleasecl:CommandlinewarningD9036:use'RTC1'insteadof'GZ'cl:CommandlinewarningD9002:ignoringunknownoption'/MLd'Bootstrappingisdone.Tobuild,run:...>b2--build-type=complete--build-d

c++ - C++ 中的互斥量和 lambda 函数

在处理并发问题时我经常使用std::unique_lock和std::lock_guard,两者都没有问题。我还扩展了std::mutex能够按如下方式使用它:mutex.protect([](){//myprotectedcodehere});它锁定互斥量并在lambda调用前后释放它。是否已经在boost或标准库中实现了这种类似的行为? 最佳答案 BoostThread有这个:http://www.boost.org/doc/libs/1_58_0/doc/html/thread/synchronization.html#thr

c++ - 如何使用 C++ lambda 捕获类的一些(但不是全部)成员变量

以下虚拟示例在现实世界中可能没有真正意义。但它解释了这个问题。我有一个classFoo,它的成员是firstname和lastname。函数ForEachMessage采用lambda。我希望它只捕获Foo的firstname而不是lastname。我该如何实现?#include#include#includeusingnamespacestd;vectormessagesList;voidForEachMessage(functioncallBack){for(constauto&str:messagesList){callBack(str);}}classFoo{public:st

c++ - Lambda 捕获 : to use the initializer or not to use it?

考虑以下最小示例:intmain(){intx=10;autof1=[x](){};autof2=[x=x](){};}我不止一次看到这样使用初始化器[x=x],但我不能完全理解它以及为什么我应该使用它而不是[x].我可以得到类似[&x=x]或[x=x+1]的含义(如documentation所示,以及为什么它们与[x],当然可以,但我仍然无法弄清楚示例中lambda之间的区别。它们是完全可以互换的还是有什么我看不到的区别? 最佳答案 有各种极端情况几乎可以归结为“[x=x]衰减;[x]不衰减”。捕获对函数的引用:void(&f)(