草庐IT

boost_thread

全部标签

c++ - 我如何构造一个仿函数以用于像 boost 的 brent_find_minima 这样的算法?

我试图理解为什么不能将具有构造函数的仿函数传递给算法,而没有构造函数的仿函数却可以。对于算法boost-brent_minima。当仿函数没有构造函数时,示例代码工作正常:#includestructfuncdouble{doubleoperator()(doubleconst&x){//return(x+3)*(x-1)*(x-1);//(x+3)(x-1)^2}};intbits=std::numeric_limits::digits;std::pairr=brent_find_minima(funcdouble(),-4.,4./3,bits);std::cout.precisi

c++ - 使用包含不完整类型的 `boost::variant` 递归定义和访问 `std::vector` - libstdc++ 与 libc++

我正在尝试定义和访问“递归”boost::variant使用incomplete包装类和std::vector作为我的间接技巧。我的实现适用于libstdc++,但不适用于libc++。这是我定义变体的方式:structmy_variant_wrapper;usingmy_variant_array=std::vector;//;structmy_variant_wrapper{my_variant_v;templatemy_variant_wrapper(Ts&&...xs):_v(std::forward(xs)...){}};我正在使用std::vector引入间接(以便动态分配

c++ - 自 1.55 以来 boost::bind/boost::function 的奇怪行为变化

我正在尝试编译aproject这是针对Boost1.55和较新的Boost1.63编写的,我遇到了一个与bind/function相关的非常奇怪的错误。这是完整的、简化的测试用例:#include#includetemplateclassfoo{public:usingfunction_t=boost::function3;voidset_function(function_tf){func_=f;}private:function_tfunc_;};classbar{public:bar(){foo_.set_function(boost::bind(&bar::func,this,

如何彻底禁用笔记本电脑的键盘或者禁用笔记本的触控屏,及禁用后如何恢复,解决笔记本电脑蓝屏信息显示:“systern thread exception no handled” 失败操作“etd.sys

目录测试键盘是否失灵的软件针对场景网上教的方法——卸载掉PC/AT增强型PS/2键盘(101/102键)具体做法我推荐的做法——禁用笔记本的PC/AT增强型PS/2键盘(101/102键)禁用笔记本键盘(PC/AT增强型PS/2键盘(101/102键)方法禁用了笔记本键盘后虚拟键盘调用方式恢复笔记本键盘(PC/AT增强型PS/2键盘(101/102键)方法如果在笔记本电脑误操作禁用了HTD驱动导致电脑蓝屏开不了机怎么办(现象)笔记本电脑蓝屏,蓝屏信息显示:“systernthreadexceptionnohandled”或者失败操作“etd.sys”解决办法:在进入不到系统时修改ETD.sys

c++ - 什么时候调用 std::thread 析构函数?

我知道std::thread析构函数在主退出时调用,或者当线程对象超出范围时调用。但是当它调用的函数执行完毕时它是否也被销毁了?如果不是这样的线程会发生什么,我还能join()它吗? 最佳答案 Butisitalsodestroyedwhenafunctionthatitiscallingisdoneexecuting?Ifnotwhathappenstosuchathread,canIstilljoin()it?不,它没有被销毁,但标记为joinable().所以是的,您仍然可以join()它。否则从你的问题的标题(“什么时候调用

c++ - boost::shared_ptr 标准容器

假设我有一个foo类,并希望使用std::map来存储一些boost::shared_ptrs,例如:classfoo;typedefboost::shared_ptrfoo_sp;typededstd::mapfoo_sp_map;foo_sp_mapm;如果我向map添加一个新的foo_sp但使用的键已经存在,现有的条目是否会被删除?例如:foo_sp_mapm;voidfunc1(){foo_spp(newfoo);m[0]=p;}voidfunc2(){foo_spp2(newfoo);m[0]=p2;}原来的指针(p)被p2替换后会不会被释放?我很确定会这样,但我认为值得询问

c++ - boost::bind protected 成员和上下文

在下面的代码中,有两个使用boost:bind表达式对std::for_each的“等效”调用。指示的行编译,指示的失败行失败。我能在标准中找到的最佳解释是“因为我们这么说”。我正在寻找“为什么标准表明这种行为”。我的假设如下。我的问题很简单:为什么指定的行可以编译而下面的等效行无法编译(我不想因为“标准是这样说的”,我已经知道了-我不会接受任何给出的答案这是一个解释;我想要一个关于为什么标准这样说的解释)。注:虽然我用的是boost,但是boost与本题无关,使用g++4.1.*和VC7.1复现了各种格式的错误。#include#include#include#includeclas

c++ - boost::ptr_vector 是如何深拷贝底层对象的?

ptr_vector是可复制构造和可复制赋值的。当不知道底层对象的具体类型时,它如何深度复制底层对象? 最佳答案 boost::ptr_vector容器有一个可选的模板参数,CloneAllocator,它定义了克隆策略。默认分配器是heap_clone_allocator,它只是调用复制构造函数来克隆对象。克隆分配器用于在克隆周围添加一个间接层。例如,它允许您提供一个自定义分配器来正确处理不可复制类型的克隆。您可以在theBoostPointerContainersLibrarydocumentation中找到更多信息,其中解释了

c++ - g++ 包括 boost 库

我用bjam构建了我的boost库,然后将所有.a文件移动到c:\Server\libs\boost_1_46_0\lib如果我想编译我的程序有一些错误:编译命令g++-Ic:\Server\libs\boost_1_46_0\-Lc:\Server\libs\boost_1_46_0\lib\-lboost_thread-mgw45-mt-1_46-otry1try1.cpp错误C:\Users\FEHERG~1\AppData\Local\Temp\ccB46To7.o:try1.cpp:(.text+0xe9):undefinedreferenceto`_imp___ZN5boo

c++ - Physical Boost.Units 用户定义文字

现在我们很快就会有用户定义的文字(UDL),例如在GCC4.7中,我热切地等待(物理)单元库(例如Boost.Units)使用它们来简化1+3i、3m、3meter或13_meter等文字的表达。是否有人使用支持此行为的UDL编写了Boost.Units的扩展? 最佳答案 没有人提出这样的扩展。只有gcc(可能还有IBM?)有UDL,所以可能需要一段时间。我希望某种单位能够进入tr2,现在开始了。如果发生这种情况,我相信单位的UDL将会出现。这个有效://./bin/bin/g++-std=c++0x-ounits4units4.c