草庐IT

ZN5boost

全部标签

c++ - 一般来说,boost bind 在幕后是如何工作的?

无需花很长时间查看boost源代码,谁能给我简要介绍一下boost绑定(bind)是如何实现的? 最佳答案 我喜欢这段bind源码:templateclassbind_t{public:typedefbind_tthis_type;bind_t(Ff,Lconst&l):f_(f),l_(l){}#defineBOOST_BIND_RETURNreturn#include#undefBOOST_BIND_RETURN};告诉你几乎所有你需要知道的,真的。bind_templateheader扩展为内联operator()定义的列表。

c++ - boost::program_options::notify() 有什么用?

这个问题是关于C++Boostprogram_options库的。所有教程都非常清楚,我应该在我完成的变量映射上调用notify(),但我不确定这实际上对我做了什么。注释掉似乎没有任何效果,文档也没有详细说明:http://www.boost.org/doc/libs/1_47_0/doc/html/boost/program_options/notify.html其他消息来源表明它运行“用户定义”功能。如果是这样,这些函数是如何注册的,它们是做什么的?他们会抛出异常吗? 最佳答案 notify()是memberfunctionof

c++ - 使用 boost assign 初始化具有固定大小的 vector 的 vector

拥有一个固定大小的vector,vector>v(10);我想对其进行初始化,使其在所有元素中都有一个具有初始化值(例如1)的一维vector。我使用BoostAssign如下v=repeat(10,list_of(list_of(1)));我遇到了编译错误error:nomatchingfunctionforcallto‘repeat(boost::assign_detail::generic_list)’你能告诉我怎么做吗?提前致谢 最佳答案 这不使用boost::assign而是做你需要的:vector>v(10,vector

c++ - 如何使用 Visual Studio 2015(企业版)构建 boost 版本 1.58.0

我喜欢使用(新)VisualStudio2015(企业版)构建boost1.58.0。过去我是这样进行的:从www.boost.org下载boost1.58.0解压文件(例如C:\thirdparty\vs2013\x64\boost_1_58_0)启动VisualStudio2013x64命令提示符(VS2013x64NativeTools命令提示符)更改为boost目录(例如cdC:\thirdparty\vs2013\x64\boost_1_58_0)执行.\bootstrap.bat执行.\b2-j8--toolset=msvc-14.0address-model=64--bu

c++ - 通过键查找 Boost BGL 顶点

我正在寻找一种通过使用键而不是顶点引用本身来访问顶点属性的方法。例如,如果我有classData{public:std::stringname;unsignedintvalue;};typedefboost::adjacency_listGraph;typedefboost::graph_traits::vertex_descriptorVertex;而不是使用Vertexvertex1=boost::add_vertex(g);g[vertex1].name="Alpha";g[vertex1].value=10;我想要g["Alpha"].name="Alpha";g["Alpha

c++ - 我可以将多个 BOOST 单元测试链接到一个测试二进制文件中吗?

我最近开始尝试测试一个古老的大型(>100万行)程序。目前没有单元测试。此外,程序被链接为每个单独的文件被链接在一起-没有组件库。此外,对象是高度相互依赖的,如果不链接到至少一半的对象文件,就很难(不可能?)链接到任何对象文件。是的,我知道,我的生活很糟糕。我想做一些重构(显然),但我想在开始移动之前进行一些测试。我目前的想法是编译一个运行我创建的所有测试的“测试程序”。这将大大简化我遇到的链接问题,让我专注于真正的问题。所以我有两个问题:是否可以将多个BOOST单元测试文件链接到一个测试可执行文件中?有更好的解决方案吗? 最佳答案

c++ - CMake 没有找到 Boost

我正在尝试安装CGAL。他们将安装过程描述为非常简单here,第6.1节。当我运行cmake-gui然后单击configure时,我得到以下输出:CMakeErroratD:/programfiles/CMake2.8/share/cmake-2.8/Modules/FindBoost.cmake:1192(message):UnabletofindtherequestedBoostlibraries.Boostversion:1.51.0Boostincludepath:D:/programfiles/boost_1_51ThefollowingBoostlibrariescould

c++ - 如何可靠地判断 boost 线程是否已退出其运行方法?

我认为joinable会表明这一点,但似乎并非如此。在worker类(Class)中,我试图表明它仍在通过谓词进行处理:boolisRunning(){returnthread_->joinable();}不是已经退出的线程不能加入吗?我错过了什么......boostthread::joinable的含义是什么? 最佳答案 因为即使在线程终止后您也可以加入线程,所以joinable()仍将返回true,直到您调用join()或detach()。如果您想知道一个线程是否仍在运行,您应该能够在等待时间为0的情况下调用timed_joi

c++ - 错误 : BOOST DISABLE THREADS

我的boost库有一些问题。我正在使用freebsd并使用端口安装了我的boost。Boost版本是:1.45,我使用g++47作为编译器。我也从来没有在那儿定义过BOOSTDISABLETHREADS:/usr/local/include/boost/config/user.hpp。我的错误也正是:/usr/local/include/boost/config/requires_threads.hpp:29:4:error:#error"Threadingsupportunavaliable:ithasbeenexplicitlydisabledwithBOOST_DISABLE_T

c++ - std::vector 或 boost::vector 线程安全吗?

我有多个线程同时在std::vector的共享对象上调用push_back()。std::vector线程安全吗?还是我需要自己实现该机制以使其线程安全?我想避免做额外的“锁定和释放”工作,因为我是图书馆用户而不是图书馆设计师。我希望为vector寻找现有的线程安全解决方案。boost::vector怎么样,它是从boost1.48.0开始新引入的。它是线程安全的吗? 最佳答案 C++标准为标准C++库中的所有类提供一定的线程保证。这些保证可能不是您所期望的,但是对于所有标准C++库类,都做出了某些线程安全保证。不过,请确保您阅读了