草庐IT

boost-range

全部标签

c++ - 使用 boost::bind 将回调发布到任务队列

假设我有一个名为subscribe()的函数,它接受一个回调处理程序,它会在事件被触发时被调用。现在,我有另一个版本,称为subscribe2()。一切都一样,只是在触发时需要将其发布到事件队列。它是使用原始的subscribe()实现的,带有一个名为helper()的辅助函数。它所做的只是将原始处理程序和任何其他参数绑定(bind)到仿函数中,然后调用postToEventQueue()。现在,我想知道是否有一种方法可以消除辅助函数,以便在subsribe2()中,我可以以某种方式将postToTaskQueue()函数和原始函数打包直接回调处理程序,并将其传递给subscribe(

c++ - Boost.Python 1.54(调试版本)对 Windows 上 Python27.lib 的令人费解的依赖性

我一定是犯了一些明显的错误,但经过几个小时的斗争,我无法取得进一步的进展:在升级到Boost1.54、CMake2.8.12和Python2.7.5(这三个都来自略微较早的次要版本)之后,我的project的Python绑定(bind)不再在调试配置中链接(它们在发布中链接良好)。我正在使用VS2012构建。更新前一切正常。我以标准方式构建了Boost:bootstrap.bat后跟b2address-model=64toolset=msvc-11.0。我的系统安装了Python2.7,它由b2获取:notice:[python-cfg]Configuringpython...noti

c++ - Boost::格式化十六进制输出

我正在使用boost::format来创建和格式化字符串。我想创建以下输出:Data:0x64-Name:'xxx',Value:10我用下面一行试了一下:boost::format("Data:%|02x|%1%-Name:'%2%',Value:%3%")%code%name%value);但它不起作用。我知道第一个参数的格式是错误的,但我无法修复它。是否可以将第一个参数打印为十六进制? 最佳答案 就用boost::format("%1$#x")这意味着-以十六进制形式输出带有数字基数的第一个参数。更多信息here

c++ - "vector iterator + offset out of range"断言有用吗?

这个完美的程序在VisualStudio2013的Debug模式下失败:#include#include#includeusingnamespacestd;voidmain(){vectorv={3,1,4,1,5,9,2,6,5,3};for(autoiFrom=v.cbegin(),iTo=iFrom+5;iFrom!=v.cend();iFrom=iTo,iTo+=5)coutvectoriterator+offsetoutofrange断言失败。它失败是因为iTo>v.cend(),这在这里是无害的。调试器测试没有被取消引用的迭代器的值有什么意义?顺便说一句,我知道我可以将上面

c++ - 从 Boost 图中删除 100,000 多个节点

我有一个图(adjacency_list(listS,vecS,bidirectionalS,VertexVal)),我需要在其中删除100,000多个节点。每个节点还包含一个由2个64位整数和另一个64位整数组成的结构。下面代码中发生的guid检查是检查结构中的第一个整数。根据VTune,在我的笔记本电脑(i72.7GHz,16GB内存)上大约需要88秒。以下是我如何删除节点:vertex_iteratorvi,vi_end;boost::tie(vi,vi_end)=boost::vertices(m_graph);while(vi!=vi_end){if(m_graph[*vi]

c++ - 从魔数(Magic Number)到 int 或 long 的重载解析(在 range-v3 中)

在range-v3中,view_facade类有begin()函数。template())>detail::facade_iterator_tbegin(){return{range_access::begin_cursor(derived(),42)};}range_access::begin_cursor()是这样实现的,templatestaticRANGES_CXX14_CONSTEXPRautobegin_cursor(Rng&rng,long)//--1RANGES_DECLTYPE_AUTO_RETURN(rng.begin_cursor())templatestatic

c++ - write_some 与 write - boost asio

当write_some可能无法将所有数据传输到对等端时,为什么有人要使用它?来自boostwrite_some文档Thewrite_someoperationmaynottransmitallofthedatatothepeer.Considerusingthewritefunctionifyouneedtoensurethatalldataiswrittenbeforetheblockingoperationcompletes.write_some方法在boost中有write方法的相关性是什么?我浏览了boostwrite_some文档,我猜不出什么。

c++ - 使用 Boost Spirit Qi 解析特定字符串

我是BoostSpirit的新手,正在努力创建一个正确的表达式来解析以下输入(实际上是某些命令的标准输出的结果):^+line-17532.dyn.kponet.fi273771+1503us[+9103us]+/-55ms我需要将其解析为一组字符串和整数并记录在变量中。该行的大部分内容应该被解析为适当类型(字符串或整数)的变量。所以最后,我得到:string:"^+","line-17532.dyn.kponet.fi","+1503us","+9103us","55ms"int:2,7,377,1一对+1503us[+9103us]也可以带空格+503us[+103us]我需要将方

结构成员和Boost :: Hana ::过滤器

现代C++中的ConstexPR修饰符面对典型的新手问题。我是对的,即使在C++17中也无法编写此类代码(原因http://www.boost.org/doc/libs/1_63_0/libs/hana/doc/html/index.html#tutorial-appendorial-appendix-constexpr)?并且必须使用“值作为类型”的成语(在此示例中使用不同的类型进行打开和封闭的文件)?#include#includenamespacehana=boost::hana;enumclassState{Open,Closed};structFile{constexprFile(S

c++ - std::stod 为应该有效的字符串抛出 out_of_range 错误

#include#include#includeusingnamespacestd;intmain(){stringstreamss;doublead=7.63918e-313;ss在这里运行:https://onlinegdb.com/Sy1MT1iQM“7.63918e-313”将由序列化一个double值产生,但stod不能反序列化它。这里发生了什么?最小的双倍数应该是10^−324左右。stdlib中是否有一对函数可以可靠地从字符串化来回映射double?不应该有吗?情节变厚了。我们有两个奇怪的观察结果。std::numeric_limits::min()stod也无法解析。s