草庐IT

boost_thread

全部标签

c++ - CMake:如何添加具有相对目录的 Boost.Test 用例?

我有一个使用CMake和Boost.Test的工作项目,其目录结构如下(请原谅ASCII艺术):+-proj|---CMakeLists.txt|---build|---test|\----dir1|\----foo.cpp//containsoneBOOST_AUTO_TEST_SUITEandseveralBOOST_AUTO_TEST_CASE||---bar.cpp//containsoneBOOST_AUTO_TEST_SUITEandseveralBOOST_AUTO_TEST_CASE\----dir2\----foo.cpp//containsoneBOOST_AUTO

c++ - OpenMP、MPI、POSIX 线程、std::thread、boost::thread 如何关联?

有几种方法可以实现多线程。std::thread最终由C++11标准引入,但可以有效地使用boost::thread。每种技术都有特定的语法和内容,但大致用于CPU并行编程。但它们有不同的作用。我知道,例如,MPI和OpenMP用于不同的内存模型。我还知道,技术的选择实际上并不是唯一的,因此可以使用另一种技术(同样是MPI和OpenMP)。为什么它们用于不同的效果但仍然使用相同的源(CPU)?如果我基于这些技术中的每一种技术编译具有并行性的C++程序,会有什么区别(从操作系统和硬件的角度来看)?例如,OpenMP或std::thread使用POSIX线程吗?如果是这样,C++11的线程

c++ - 如何在不使用 C++11 的情况下使用多个值初始化 boost::mt19937

我可以使用:boost::mt19937gen(43);这很好用,但是如果我在使用随机数生成器之前想要超过32位的种子怎么办?有没有一种简单的方法可以将64位或128位种子放入MersenneTwister?我找到了几个在生成结果之前加载多个值的示例,但没有一个代码有效。这段代码有几个问题:std::vectorseedv(1000,11);std::vector::iteratori=seedv.begin();boost::mt19937gen2(i,seedv.end());首先,调用gen2()总是返回相同的值。我不知道我是怎么搞砸的。其次,我不想要1,000个种子,但是当我将

c++ - 如何发送 http 请求并检索 json 响应 C++ Boost

我需要编写一个命令行客户端来在服务器上玩井字游戏。服务器接受http请求并将json发送回我的客户端。我正在寻找一种使用boost库发送http请求并以字符串形式接收json的快速方法。examplehttprequest="http://???/newGame?name=david"examplejsonresponse="\"status\":\"okay\",\"id\":\"game-23\",\"letter\":2" 最佳答案 符合描述的最简单的事情:LiveOnColiru#include#includeintmain

c++ - 我应该使用哪个 boost 类来存储人类年龄

我必须存储用户的年龄(年、月、日......可能是小时、分钟、秒)。我正在使用C++和boost。我不确定我应该使用哪个类的boost::posix_time(或boost::date_time)。我尝试了boost::posix_time::time_duration,但它并不明显,因为没有构造函数计算年数,它只有几个小时,所以我这样做了:boost::posix_time::time_durationage=boost::posix_time::hours(24*365*ageInYears);但我不确定这是一个好策略,因为所有年份都没有365天;-)我也试过boost::greg

c++ - boost::ptr_container 和 std::vector<shared_ptr>

看完timdaysanswer至thisquestion我很好奇boost::ptr_container之间的区别和一个std::vector.我的印象是aboost::ptr_containerhadownershipoverthepointersgiventoit,并且在释放时将调用它包含的所有指针的析构函数,而不管对其居民的其他引用。这与std::vector的目的相反,如果引用计数为0,释放后只会释放指针本身?如果是这种情况(我假设不是),为什么甚至Boost文档示例comparethetwo好像它们的目的相似,为什么timday的回答会提出boost::ptr_contain

c++ - 从 ‘boost::filesystem3::path’ 到非标量类型‘std::string’的 boost 错误转换

我有代码:std::stringfirstFile=boost::filesystem::path(first->name()).leaf();但是报错:errorconversionfrom‘boost::filesystem3::path’tonon-scalartype‘std::string我该如何解决?谢谢。 最佳答案 std::stringfirstFile=boost::filesystem::path(first->name()).leaf().string();另请注意,leaf函数已弃用并在Boost.Files

c++ - 如何使用 std::vector 初始化 boost::random::discrete_distribution?

我想初始化boost::random::discrete_distribution用std::vector.我的问题是,如果我用一个数组初始化它,就像在官方例子中那样:doubleprobabilities[]={0.5,0.1,0.1,0.1,0.1,0.1};boost::random::discrete_distributiondist(probabilities);然后它就完美地工作了。但是,如果我用std::vector初始化它,那么它的行为就像它只有一个概率为1.0的元素一样。你能告诉我初始化boost::random::discrete_distribution的正确方法

c++ - 如何在 boost::spirit 规则中使用 boost::tuple 作为属性?

我在boost::spirit中有以下规则:typedefboost::tupleEntry;qi::ruleentry;entry=qi::int_>>qi::int_;但是第二个int没有写入元组。有没有办法让它工作而不必使用boost::fusion::tuple?如果我使用std::pair就可以,那么为什么我不能使用boost::tuple?这是一个完整的编译示例:#include#include#include#includenamespaceqi=boost::spirit::qi;//works://#include//typedefstd::pairEntry;//d

c++ - 在 github 上托管项目中使用的 boost 子集

我使用git进行源代码控制并托管在github上。我们正在努力使repo协议(protocol)尽可能小。我决定给这个项目增加boost,这个项目(相对于我们的要求)相当大。我已经提取了所需功能的一个子集。现在我对如何在git上处理这个问题有点困惑。我应该将我的boost子集添加到存储库吗?如果我将boost添加为子模块,下载大小会有点大(我想,我还没有测试过)。这通常是如何完成的? 最佳答案 除非您有充分的理由不这样做,否则请将boost保留为外部依赖项。(根本不要将它添加到您的存储库中)。