草庐IT

BOOST_CHECK_CLOSE

全部标签

c++ - 是否可以在 Boost.Spirit 中创建自定义解析器?

我试图在Boost.Spirit(2.3)中创建自定义解析器类,但没有成功。代码是:templateclasscrule:publicboost::spirit::qi::parser>{ruler_;public:crule(construle&r):r_(r){}templatecrule(constT&t):r_(t){}templateboolparse(Iter&f,constIter&l,Ctx&context,Skip&skip,typenamerule::templateattribute::type&attr)const{returnr_.parse(f,l,cont

C++ boost变体问题

我知道boost::variant使用boost::mpl它背后的东西并且有一个与mpl兼容的typedeftypes.假设我有一个简单的typedef:typedefboost::variantVariant;现在我有另一个模板函数,比方说:templateTfunction(){//...}我希望这个函数在两种情况下表现不同:当T时Variant::types的一部分什么时候不是。显然,我必须做类似的事情templatetypenameboost::enable_if::typefunction(){//ImplementationforthecaseTisinVariant::t

c++ - boost 示例未能构建

我是boost的新手。我成功地编译了boost库(在macosx下)。现在,我尝试构建boost网站上提到的第一个示例(包括boost/作为包含目录和boost/stage/lib作为库目录,使用netbeans)并得到以下错误"/usr/bin/make"-fnbproject/Makefile-Debug.mkQMAKE=SUBPROJECTS=.build-conf"/usr/bin/make"-fnbproject/Makefile-Debug.mkdist/Debug/GNU-MacOSX/boost_ex1mkdir-pbuild/Debug/GNU-MacOSXrm-fb

c++ - boost asio 和 shared_ptr 的扩散

我最近开始使用boost。到目前为止,大多数事情都非常简单。但是让我发疯的一件事是shared_ptr在整个boost过程中的扩散。即使在简单的示例中,也会使用shared_ptr。所以我的问题是,如果我使用boost来接受tcp连接然后处理它们。只要我保证在堆上创建的对象(boost::asio::ip::tcp::socket,以及将为异步方法回调的类)在我完成使用tcp之前不会被删除,那么我不需要shared_ptr对吗?我写了一个简单的tcp服务器和客户端,没有使用共享ptr,它可以工作。但我只是想要一些外部确认,以证明我的评估是正确的。此外,根据您的经验,您是否曾经需要使用s

c++ - 如何使boost线程自毁? (C++)

我有一个具有某些功能的类:voidworkerFunc(intClassVariable){boost::posix_time::secondsworkTime(classVariableA);std::cout我想在线程中。和其他一些我想像这样工作的功能while(1){boost::threadworkerThread(workerFunc(ClassVariableB));}所以每次它都会创建线程。但我需要的是该线程在完成时自动销毁自身。怎么办? 最佳答案 您不必为此做任何事情。您只需确保线程真正完成(即没有无限循环等)。

c++ - Boost:如何设置程序优先级?

如何使用BoostC++库设置程序/线程优先级(当谈论线程时,我指的是使用Boost库创建的线程)?我的意思是跨平台方式... 最佳答案 boost本身没有通用的跨平台优先级支持。#ifdef是你的friend...请参阅Tom对win32解决方案的回答。在Linux上你会使用nice打电话(或者可能是setpriority)。不要被那些调整进程优先级的文档声明所拖延;在Linux上,线程只是一个与其他进程共享内存空间的进程。如果您获得更好的“top”版本,其中列出了各个线程,您可以看到每个线程的良好级别。请注意,具有普通用户权限的

c++ - 在 OSX 上使用 Boost 线程时访问相机时出现问题

我正在尝试使用OpenCV打开相机。当我在主线程中打开相机时,这工作正常,但是当我尝试在Boost线程中打开相机时,它失败了。我无法用谷歌搜索为什么会这样。我假设它与Boost线程的权限有某种关系。以下工作正常:#include#include#includeusingnamespacecv;voidopenCamera(){PtrcapPtr(newVideoCapture(0));//openthedefaultcamera}intmain(){openCamera();}我的相机会短暂打开,之后我会收到消息“清理相机”,正如人们所期望的那样。但是当我通过Boost线程尝试相同的操

c++ - 使用 boost.python 从 C++ 将变量导出到 python

例如,我在C++中有一个变量:constfloatPi=3.1415926535898f;使用boost.python将其导出到python模块的最佳方法是什么?我想在全局范围内将其作为变量访问。 最佳答案 似乎可以很容易地使用:boost::python::scope().attr("Pi")=Pi; 关于c++-使用boost.python从C++将变量导出到python,我们在StackOverflow上找到一个类似的问题: https://stacko

c++ - boost 拆分使用率

我有一个格式为[id1,id2,id3]的字符串.我正在使用boostsplit来拆分字符串并将其填充到vector中。boost::split(ids,message,boost::is_any_of("[,]"));ids是我声明为std::vectorids的vector.现在只有vector的奇数索引包含id,偶数是空的。谁能告诉我可能是什么原因以及如何解决它。 最佳答案 boost::algorithm::split(ids,message,boost::is_any_of("[,]"),boost::algorithm:

c++ - 通过 STL 或 Boost 引入虚拟参数

假设有人想用随机数填充一个vector。则有如下明显的解决方案:vectorresult;result.resize(n);for(inti=0;i好的,它显然有效,但我想了解摆脱for循环的最简单的STL/Boost方法是什么。使用std::transform很诱人,但它需要一个带有一个参数的函数。有什么好的STL方法可以在函数中引入伪参数吗? 最佳答案 C++标准库有std::generate()和std::generate_n();例如:#include#include#include#include#includeintge