草庐IT

boosting

全部标签

c++ - 为什么 Boost Graph Library 的 `source()` 是一个全局函数?

我理解在泛型编程中,算法与容器是解耦的。因此,将泛型算法实现为实例方法是没有意义的(相同的算法应该适用于多个具体类;我们不想让它们都继承自一个ABC,因为这会以指数方式增加类的数量)。但在source()的情况下BoostGraphLibrary中的函数,我不明白为什么它是全局函数而不是图形类的实例方法。据我所知,我可以通过阅读BGLsourcecode来判断,source(e,g)需要知道传递给它的图和边对象的实现细节;仅仅知道它们的接口(interface)是不够的。所以source()不是通用算法。换句话说,它需要知道图形实例的具体类。那为什么不把它和实例方法放在同一个类中呢?与

c++ - 什么是 boost::optional 效率?

我有以下内容:classObj;typedefstd::mapStrMap;std::map>complexMap;问题是,对于complexMap中的某些条目,StrMap将是空的,我根本不会使用它,因此为了提高效率,我正在考虑使用boost::optional。我的问题是boost::optional的效率如何,我担心付出代价最终会一无所获。 最佳答案 将optional视为可以容纳0或1值的容器。您的map已经是一个可以容纳0到N个元素的容器。因此,可选映射是一个容器中的容器,可以容纳0到N个元素。真的,这里没有任何好处。空m

c++ - 仅在调试时启用 Boost.Log

我需要一个用于调试目的的记录器,我正在使用Boost.Log(1.54.0,在boost.org主页上有一个补丁)。没关系,我已经创建了一些像这样的宏:#defineLOG_MESSAGE(lvl)BOOST_LOG_TRIVIAL(lvl)现在这是一种仅在Debug模式下在BOOST_LOG_TRIVIAL(lvl)中扩展LOG_MESSAGE(lvl)而在发布时忽略的方法吗?例如:LOG_MESSAGE(critical)编辑我的第一次尝试是创建一个空流...我认为在Release模式下编译器会优化它...#if!defined(NDEBUG)#include#defineLOG_

c++ - Boost.Asio 段错误,不知道为什么

这是我的Boost.Asio项目中基于示例的SSCCE。我花了大约一个小时来追踪这个错误:#include#include#includeclassConnection{public:Connection(boost::asio::io_service&io_service):socket(io_service){}private:boost::asio::ip::tcp::socketsocket;};classServer{public:Server():signal_monitor(io_service){signal_monitor.add(SIGINT);signal_mon

c++ - Boost::file_system:检查错误代码

虽然我使用的是C++11,但这个问题与boost相关,因为我正在处理来自boost::file_system的错误。在以下情况下:try{//Ifp2doesn'texists,canonicalthrowsanexception//ofNo_such_file_or_directorypathp=canonical(p2);//Othercode}catch(filesystem_error&e){if(eistheno_such_file_or_directoryexception)custom_message(e);}//othercatchs}如果我在抛出所需的异常(no_su

c++ - 什么是分阶段 boost 库?

在尝试构建thriftc++库时,我在指定--with-boost选项后遇到了以下错误。Ifyouhaveastagedboostlibrary(stillnotinstalled)pleasespecify$BOOST_ROOTinyourenvironmentanddonotgiveaPATHto--with-boostoption.我查看了boost文档(我不太熟悉),但没有找到术语stagedboostlibrary的良好定义。我看到括号内的(stillnotinstalled),但是有很多状态是一个库可以属于notinstalled的类别。当我第一次下载boost时,我运行.

c++ - 如何序列化 boost::dynamic_bitset?

如何使用boost::dynamic_bitset成员序列化一个类?#include#include#include#include#includeclassA{friendclassboost::serialization::access;boost::dynamic_bitsetx;templatevoidserialize(Archive&ar,constunsignedint){ar&x;}};intmain(){Aa;std::stringstreamss;boost::archive::text_oarchiveoa(ss);oa编译报错(boost1.57)Infilei

c++ - Q_DECLARE_METATYPE 一个 boost::multi_array

我正在尝试使用Qt的信号和槽机制传递表示为boost::multi_array的多维数组。我尝试使用以下代码段声明元类型:Q_DECLARE_METATYPE(boost::multi_array)但是我得到以下编译错误(在MSVC2015上):path\to\project\metatypes.h(7):errorC2976:'boost::multi_array':toofewtemplatearguments..\..\ml_project\boost-libs\include\boost/multi_array.hpp(111):note:seedeclarationof'bo

c++ - 使用 boost::karma 格式化纬度/经度字符串

我需要将double值格式化为具有非常特定格式的坐标字符串,"DDMMSS.SSX"其中:“DD”是完整的学位“MM”是完整的分钟数"SS.SS"是带小数的秒数“X”是“N”或“S”,具体取决于半球字段需要用零填充。不能接受空格。格式示例如下:47.2535==>"471512.45N"-0.123345==>"000724.04S"我已经设法创建了以下程序来完成这项工作。但是我有一些问题:locls规则是否有更优雅的方式?它的目的是将绝对值存储到局部变量value中。是否有(希望更优雅)访问fabs()函数的方法?在我看来,对_1的赋值(_1=_val等)是不必要的,因为我在局部变量

c++ - boost::accumulators::rolling_mean 返回不正确的平均值

环境:VS2013,Boost1.58我写了一些东西,为Boost的累加器提供了一个更友好的界面,它可用于在窗口上投影总和,并计算窗口上的实际滚动平均值。在插入将VS2013作为我们的主要编译器的过程中,此类的单元测试之一开始失败。剥离层,我把它缩小到这个最小的例子:#include#include#includenamespaceba=boost::accumulators;namespacebt=ba::tag;typedefba::accumulator_set>MeanAccumulator;intmain(){MeanAccumulatoracc(bt::rolling_wi