草庐IT

boost_thread

全部标签

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++ - 为什么 std::thread 采用右值运行的函数?

std::thread有一件事我不明白:为什么std::thread的构造函数采用右值运行的函数?我通常想将具有一些成员的Functor运行到另一个线程。像这样:structFunction{voidoperator()(/*someargs*/){/*somecode*/}/*somemembers*/}voidrun_thread(){Functorf(/*somedata*/);std::threadthread(f,/*somedata*/);/*dosomethingandwaitforthreadtofinish*/}随着std::thread的当前实现,我必须确保我的对象

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

c++ - Boost::Test:编译并运行一个 "hello world"程序

我正在尝试运行一个虚拟的Boost.test“helloworld”程序。我找到了文档here和there但显然我缺少了一些东西......这是我所做的:第1步:我安装了依赖项sudoaptitudeinstalllibboost-test-dev它安装头文件(libboost-test1.54-dev)和二进制文件(libboost-test1.54.0)。第二步:创建要编译的源文件我有一个名为test.cpp的文件,其中包含:#defineBOOST_TEST_MODULEconst_stringtest#include//EOF正如officialtutorial中所推荐的那样第

c++ - 来自 c++11 的 std::thread 问题

我在尝试使用标准模板库编译多线程程序时遇到了一些麻烦。当我尝试编译以下程序时,它返回一个模糊的错误:#include#includevoidfoo(){std::cout我不明白错误:/tmp/ccE8EtL1.o :Inthefunction« std::thread::thread(void(&)()) » :file.cpp:(.text._ZNSt6threadC2IRFvvEJEEEOT_DpOT0_[_ZNSt6threadC5IRFvvEJEEEOT_DpOT0_]+0x21) :undefinedreferenceto« pthread_create »collect2

c++ - 将 std::sub_match 作为参数传递给 std::thread 时出了什么问题?

我将std::sub_match作为参数传递给std::thread(请参阅下面的示例代码)。线程函数需要一个const字符串引用。sub_match可以转换为字符串。所以一切都可以正常编译。但有时函数会收到错误的字符串。当我在将sub_match传递给线程之前将其转换为字符串时,它会按预期工作。有什么区别?我认为这是一个竞争条件,因为当线程执行时,原始的sub_match可能不再存在。但我认为线程的参数无论如何都会被复制。我如何找出哪些参数可以安全传递给线程,哪些不安全?#include#include#include#include#include#includeclasstest

c++ - 在 C++ 源代码中包含相关的 Boost 库(使用 Visual Studio)

我有一个正在(为学校)工作的项目,我正在挖掘Boost库的解决方案。我需要一些方法来将所需的Boost源代码与我的应用程序一起分发,以便可以在不在系统上安装库进行编译的情况下对其进行编译。(学校电脑什么都没有,学校去年刚装了CVS,但是有VS2005)注意:我在Vista上使用VisualStudio2005。我的系统上有Boost1.34.1我使用了automaticinstaller.我遇到的文档说了一些关于使用BCP命令的内容,但该命令似乎没有复制任何内容。(我使用绝对路径调用BCP,所以我最终不会调用错误的命令。)编辑:我正在尝试使用RegEx库。编辑:我用于BCP的命令是:"

.net - 使用 __declspec(thread) 的线程本地存储在 C++/CLI 中失败

我正在开发一个项目,我们通过C++/CLI层混合.NET代码和nativeC++代码。在此解决方案中,我想通过__declspec(thread)声明使用线程本地存储:__declspec(thread)intlastId=0;但是,在第一次访问变量时,我得到一个NullReferenceException。更准确地说,声明是在ref类(用C++/CLI实现的.NET类)中完成的。我已经阅读过有关__declspec(thread)不适用于延迟加载的DLL的内容。如果我使用.NET,是否会自动使用延迟加载的DLL? 最佳答案 似乎_