草庐IT

ZN5boost

全部标签

c++ - 你在实际工作中使用过 boost::tribool 吗?

tribool让我印象深刻,是Boost最奇怪的角落之一。我看到它与使用枚举相比有一些便利,但枚举也可以轻松扩展以表示超过3个状态。您在现实世界中以哪些方式使用tribool? 最佳答案 虽然我没有使用过C++,因此也没有使用过boost,但我在需要将状态存储为true/false/pending的网络应用程序中非常广泛地使用了三态变量。 关于c++-你在实际工作中使用过boost::tribool吗?,我们在StackOverflow上找到一个类似的问题:

c++ - 检查 boost::variant<T> 是否为空

我的程序中有一个boost::variant,我想检查变体本身是否已初始化,以及其中一种类型中是否包含值。我已经在变体上尝试了empty(),但这似乎不起作用。也不会检查NULL。有人知道如何检查吗?编辑:好的,它似乎永远不会为空,但它所包含的类型中并不总是有值,那么如何检查无值情况? 最佳答案 如果您看到myquestionregardingneveremptyguaranteeandsinglestorage,boost::variant确实支持名为boost::blank的类似NIL的值类型.这将保证变体永远不会使用堆作为备份

c++ - 如何从 boost::thread 中检索线程 ID?

我希望在记录时能够通过简单的id来识别线程,以便轻松跟踪单个线程的执行。使用APIGetCurrentThreadId()的windows可以实现我想要的。在boost::thread中有一个方法get_id()但这并不像整数那样表示整数值。该对象确实有一个thread_data成员,其中包含一个似乎是我想要的id,但该数据成员是私有(private)的,因此无法访问。为了显示或识别目的访问线程id的boost方式是什么? 最佳答案 为时已晚,但对于寻找答案的用户,boost允许按照您所说的查询线程id,只需调用以下方法:boost

c++ - 在过渡到 C++11 期间管理外部库(例如 boost)

我想将我当前的项目迁移到C++11。代码全部使用clang++-std=c++0x编译。这是容易的部分:-)。困难的部分是处理外部库。不能依赖将自己的C++11对象与未使用c++11编译的外部库链接(参见http://gcc.gnu.org/wiki/Cxx11AbiCompatibility)。例如,Boost肯定需要重新构建(Whycan'tclangwithlibc++inc++0xmodelinkthisboost::program_optionsexample?)。我有我使用的所有外部库的源代码,所以我可以(有些痛苦)理论上用C++11重新构建这些库。但是,这仍然给我留下了一

c++ - Boost asio - 停止 io_service

我正在使用boost::asio进行一些非常基本的UDP数据包收集。io_service对象在工作线程中实例化,并从该线程内部调用io_service.run()。我的问题是在我收集完数据包后让io_service.run()返回。我不清楚在停止我的工作线程时可以从其他线程调用哪些io_service方法。我有一个对io_service对象的引用,我从另一个线程调用:ios.dispatch(boost::bind(&udp_server::handle_kill,this));在我的udp_server类中,该函数的处理程序从单个boost::asio::ip::udp::socke

c++ - boost::variant - 为什么 "const char*"转换为 "bool"?

我声明了一个boost::variant,它接受三种类型:string、bool和int。以下代码显示我的变体接受constchar*并将其转换为bool。boost::variant接受和转换不在其列表中的类型是正常行为吗?#include#include"boost/variant/variant.hpp"#include"boost/variant/apply_visitor.hpp"usingnamespacestd;usingnamespaceboost;typedefvariantMyVariant;classTestVariant:publicboost::static_

c++ - 如何使用 boost split 拆分字符串并忽略空值?

我正在使用boost::split来解析数据文件。数据文件包含如下行。数据.txt1:1~15ASTKGPSVFPLAPSSSVFPLAPSS-12.698.3项目之间的空白是制表符。我要拆分以上行的代码如下。std::stringbuf;/*Assignthelinefromthefiletobuf*/std::vectordataLine;boost::split(dataLine,buf,boost::is_any_of("\t"),boost::token_compress_on);//Splitdatalinecout对于上面的代码行,我应该打印出5,但我得到6。我试图通读文

c++ - 如何以及为什么要使用 Boost 信号2?

学习c++并尝试熟悉一些模式。signals2doc显然,我可以用插槽和信号做很多事情。我不明白我应该将它用于什么类型的应用程序(用例)。我正在按照状态机调度更改事件的思路进行思考。来自动态类型的背景(C#、Java等),您将使用事件调度程序或静态引用或回调。在C++中使用跨类回调有困难吗?这本质上是为什么信号2存在吗?示例案例之一是文档/View。这种模式比使用函数vector并在循环中调用每个函数,或者说在注册的监听类实例中调用状态更改的lambda更适合吗?classDocument{public:typedefboost::signals2::signalsignal_t;pu

c++ - 将 Jenkins 与 boost.test 单元测试一起使用

我在这方面做了一些谷歌搜索,发现了很多关于让Jenkins理解boost.test的XML输出格式的讨论,但没有规范的引用。有人说我们只需要使用XLST来转换XML格式,其他人则建议在此之前XML需要一些黑客攻击(AnyonehaveanXSLtoconvertBoost.TestXMLlogstoapresentableformat?)。有人建议xUnit插件cannative理解boost.testXML格式,其他stateitcan't由于我的搜索结果跨越5年,我意识到情况可能会发生变化。因此,我正在寻找关于使用Jenkins运行和评估boost单元测试的最佳方法的最新答案。

c++ - STL/Boost 相当于 LLVM SmallVector?

我一直在尝试查看在有许多小数据vector时是否可以优化案例。在我的用例中,这些vector可能有100,000多个,因此vector存储的大小至关重要。每个有时可能只有1或2个元素,但在许多情况下可能会增长更大的容量。我尝试过使用简单的std::vector,但这非常慢,因为它在堆上分配了N个小缓冲区,这会浪费内存并且在时间紧迫的环境中花费的时间太长。实际上,vector上的小缓冲区优化(SBO)似乎是一个可行的解决方案。这意味着使用vector的内部(即堆栈)数据,直到超过它,然后才需要使用堆。我偶然发现了LLVMSmallVector,它似乎正是这样做的。然而,它似乎在LLVM框