草庐IT

Boost-asio

全部标签

c++ - 如何序列化 boost::function 以将其发送到 message_queue

我实际上正在尝试使用boost::serialize序列化一个boost::function,因为我想在boost::interprocess::message_queue中共享它。我只看到一种方法,即使用boost::serialize的非侵入式版本。namespaceboost{namespaceserialization{templatevoidserialize(Archive&ar,boost::function&fct,constunsignedintversion){ar&fct.args;ar&fct.arity;ar&fct.vtable;ar&fct.functor

c++ - 从 Boost 线程返回 Double

您好,我有一个应该返回double值的Boost线程。该函数如下所示:voidanalyser::findup(constdoublestartwl,constdoublemax,double&myret){this->data.begin();for(inti=(int)data.size();i>=0;i--){if(this->data[i].lambda>startwl){if(this->data[i].db>=(max-30)){myret=this->data[i+1].lambda;std::cout这个函数被另一个函数调用:voidanalyser::start_fi

c++ - 如何复制 boost::filesystem::directory_iterator?

我知道这听起来很愚蠢,但看看这个简单的例子(工作目录应该有多个项目):#defineBOOST_FILESYSTEM_VERSION3#include#includeintmain(){usingnamespaceboost::filesystem;directory_iteratorit("./");directory_iteratorit_copy=it;++it;assert(it_copy!=it);return0;}it_copy是和it一起修改的!(boost1.45)什么样的考虑会导致这样的设计(directory_iterator类似于smartptr)?我只需要保存一

c++ - 以嵌套或递归方式(即在处理程序内)调用 asio io_service poll() 或 poll_one() 是否有效?

以嵌套或递归方式(即从处理程序内)调用asio::io_service::poll()或poll_one()是否有效?一个真正基本的测试似乎暗示这是有效的(我只在一个平台上完成了测试)但我想确保从处理程序中再次调用poll()被认为是有效的行为。我在asio文档中找不到任何相关信息,所以我希望对asio内部工作有更多经验的人可以通过解释或引用来验证这一点。基本测试:structNestedHandler{NestedHandler(std::stringname,asio::io_service*service):name(name),service(service){//empty}

c++ - 在使用单独的规则定义和实例化时,Boost Spirit X3 AST 无法处理语义操作

我正在尝试将BoostSpiritX3与语义操作一起使用,同时将结构解析为AST。如果我使用没有单独定义和实例化的规则,它就可以正常工作,例如:#include#include#include#include#includenamespaceast{structast_struct{intnumber;std::vectornumbers;};}BOOST_FUSION_ADAPT_STRUCT(ast::ast_struct,(int,number)(std::vector,numbers))namespacex3=boost::spirit::x3;usingnamespacest

c++ - Boost::graph (c++) 优于 networkx (python)

编辑:正如@sehe所指出的,错误位于介数中心性计算之前的某处。继续前进!我在Python和C++中实现了一个最小程序来计算无向图的介数中心性。令人惊讶的是,networkx(Python)版本far优于boost::graph(C++)实现,即使考虑到加载开销等.我在做一些完全没有效率的事情吗?Python代码的要点很简单#loadgraphandstartchronoclist=nx.betweenness_centrality(g)#output对于C++,我们有typedefboost::adjacency_listGraph;typedefboost::property_ma

c++ - Boost Spirit X3如何解析 "stream"?

我正在尝试找出使用x3从istream解析的正确方法。较早的文档提到了multi_pass内容,我还能使用它吗?或者是否有其他方法可以为X3缓冲流以便它可以回溯? 最佳答案 您仍然可以使用它。只包含#include示例LiveOnColiru#include#include#include#includeintmain(){std::istringstreamiss("{123,234,345,456,567,678,789,900,1011}");boost::spirit::istream_iteratorf(iss),l;st

c++ - 更新/替换 `boost::hana::map` 中映射值的规范方法

在boost::hana::map中更新值(给定一个键和一个新值)的规范方法是什么??我尝试使用boost::hana::replace_if但它不适用于map,因为它不是Functor-我可以通过将map转换为来让它工作tuple然后返回到map,但这听起来效率很低。我目前使用的替代方法是调用map::erase_key其次是map::insert.是否有任何我可能遗漏的为此目的设计的replace或update函数?或者这是更新值的“规范”方式? 最佳答案 我认为目前没有规范的方法可以做到这一点。如果有有效的用例,也许我们可以在

c++ - 删除 C++-STL/Boost 调试符号(...或不创建它们)

Linux/Gcc/LD-工具链。我想从库和可执行文件中删除STL/Boost调试符号,原因有二:大型程序的链接速度非常慢调试跳转到STL/boost代码,烦人对于1.增量链接将是一个很大的改进,但AFAIKld不支持增量链接。在1999年dr.dobb的期刊中有一个变通方法“伪增量链接”(不再在网络上,而是在archive.org)(这个想法是将所有内容放在动态库中,并将所有更新的目标文件放在第二个动态库中首先加载)但这并不是真正的通用解决方案。对于2.有一个脚本here,但是a)它对我不起作用(它没有删除符号),b)它在管道的末端工作时非常慢,而更早地删除符号会更有效。显然,其他调

c++ - Boost:触发并忘记异步函数调用?

我想一次性调用一个函数。在Boost/C++中执行此操作的最佳方法是什么?我想给它传递两个参数,不需要结果。 最佳答案 好吧,您可以启动一个线程,然后再也不会加入它。像这样的东西:boost::threadsome_thread(&SomeFunction,param1,param2);一旦some_thread变量超出范围,执行的线程将被分离,将无法再次加入。除非此函数的处理时间很长,否则启动线程是一种浪费。 关于c++-Boost:触发并忘记异步函数调用?,我们在StackOverf