草庐IT

boosting

全部标签

c++ - boost::optional 不允许我重新分配 const 值类型

在我看来应该有四个变体boost::optionaloptional=>持有一个可变的Foo并且可以在初始化后重新分配optionalconst=>持有一个constFoo并且不能在初始化后重新分配optionalconst=>(应该?)持有一个可变的Foo但不能在初始化后重新分配optional=>(应该?)持有一个constFoo并且可以在初始化后重新分配前2个案例按预期工作。但是optionalconst取消对constFoo的引用,以及optional不允许在初始化后重新分配(如thisquestion中所述)。const值类型的重新分配是我遇到的具体问题,错误是:/usr/i

c++ - 模板函数的 'typedef' (boost::make_shared)

我正在将我的项目迁移到C++11,我正在尝试使用尽可能多的标准库。在完成迁移之前,我需要一种快速的方法来在shared_ptr的boost和STL实现之间切换(以进行基准测试、单元测试等)。所以我为shared_ptr定义了一个别名,如下所示:#ifdef_USE_BOOST_templateusingshared_ptr=boost::shared_ptr#elsetemplateusingshared_ptr=std::shared_ptr#endif现在我需要为make_shared做同样的事情...但是怎么做呢?宏观?wrapper?我真的不喜欢他们中的任何一个。有哪些替代方案

c++ - Netbeans IDE 7.2.1 : How to add the c++ boost library

对于我的下一个任务,我需要在C++中进行线程处理,并且已经读到用于线程处理的boost库工作得相当好。我从来没有向Netbeans添加自定义库,希望有人可以为我提供一些要遵循的步骤,以便我可以#include它并在我的类里面使用它。到目前为止,我已经下载了以下内容:从这里boost库:http://sourceforge.net/projects/boost/files/boost/1.52.0/(不确定我在哪里提取它是否也很重要。我假设我需要将NetBeans设置为在我的包属性中的某处指向它?)适用于Windows的NetBeans7.2.1C/C++安装程序来自此处:http://

c++ - 如何在 Boost Dijkstra 中定义自定义距离?

我目前正在查看BoostDijkstra的文档-http://www.boost.org/doc/libs/1_52_0/libs/graph/doc/dijkstra_shortest_paths.html;我的目标是在计算距离时修改距离组合以获得“最大”而不是“加”。文档是这样说的:IN:distance_combine(CombineFunctioncmb)Thisfunctionisusedtocombinedistancestocomputethedistanceofapath.TheCombineFunctiontypemustbeamodelofBinaryFunctio

c++ - 为什么 boost::assign::list_of 不适用于 pair<string, vector<string>>?

我不明白为什么这不起作用(VisualC++2012):#include#include#include#includeusingnamespacestd;intmain(){pair>("^",boost::assign::list_of("rules"));}错误是:include\utility(138):errorC2668:'std::vector::vector':ambiguouscalltooverloadedfunctionwith[_Ty=std::string]include\vector(786):couldbe'std::vector::vector(std:

c++ - boost 交叉口不起作用

我对boost交叉有一个大问题。我想将三角形​​与四边形相交,但我得到了一个剪辑:有人可以帮助我吗?我试图改变几何体的方向,但没有任何反应。交点适用于其他三角形,但不适用于此。typedefmodel::polygon>polygonstd::dequetmp;boolok=intersection(quad,triangle,tmp)三角形:-213.57-2.13163e-140-35037.50-350-2.84217e-140盒子:BoundingBox(-300,-165,2,170,-0.1,0.1)更新:这是我的代码。我在Ubuntu12.10上使用gcc4.7.2和bo

c++ - 在 stop() 之后清除 boost::asio::io_service

我正在使用(单线程)boost::asio:io_service来处理很多tcp连接。对于每个连接,我都使用deadline_timer来捕获超时。如果任何一个连接超时,我就不能使用其他连接的任何结果。因此我想完全重启我的io_service。我认为调用io_service.stop()将允许调用队列中“已完成”的处理程序,并且会调用队列中的处理程序并出错。但是看起来处理程序仍保留在队列中,因此调用io_service.reset()和稍后的io_service.run()会使旧的处理程序重新启动。即使在io_service.stop()被调用后,任何人都可以确认处理程序确实保留在队列

c++ - 在 gdb 中漂亮地打印 boost::mpl::string<...> 类型

我使用boost::mpl::string广泛的类型......足以真正帮助调试以在gdb中漂亮地打印类型.所以...而不是gdb像当前一样显示单个(多字rune字)组件...boost::mpl::string它会显示等效的字符串值而不是...boost::mpl::string我看过gdbgdb中用于pretty-printSTL容器的宏和python脚本,但我找不到一个pretty-printboost::mpl字符串。有人可以帮忙吗?更新:我已经添加了一个+100赏金......我正在寻找一种解决方案,它利用最新的GDB支持通过python进行pretty-print(如对ST

c++ - 在 Boost Spirit 中定义使用子解析器参数化的解析器

我想将一些旧的手写解析代码转换为BoostSpirit并在此过程中学习(更多)精神。旧代码使用流和模板来解析某些数据类型和某些容器的定义。一些典型的格式:VECTOR[number_of_items,(item_1,item_2....item_n)]PAIR(p1,p2)RECT[(left,top)-(right,bottom)]Point(x,y)Size(x,y)解析函数是模板,以项目的类型作为模板参数,并使用流作为输入,例如templatestd::istream&operator>>(std::Stream&in,std::vector&v);templatestd::is

c++ - std::set 和 boost::container::set 之间的区别

std::set和boost::container::set之间的主要区别是什么? 最佳答案 boost容器和标准容器之间的主要区别是boost容器允许不完整的类型。在实现依赖于底层容器组合的更复杂的数据结构时,这可能会产生巨大的差异。boost容器和标准容器的特定实现之间可能存在性能差异。但这可能是任何一种方式。编辑:这里有一些关于集合/map容器的附加说明(参见ref):[multi]set/map容器的大小经过优化,在父指针中嵌入了红黑树节点的颜色位。[multi]set/map容器不使用递归函数,因此避免了堆栈问题。