jjzjj

boost-ptr-container

全部标签

c++ - shared_ptr 与指针共存

我有一个函数如下voida(shared_ptrval){...}有时候,我想传入一个堆分配的对象shared_ptrv(newX());a(v);其他时候,我想传入一个堆栈分配的对象classC{//doesn'tworkproperlyb/cwhentheshared_ptrdiesitwilltrytodeletex...C(){a(shared_ptr(&x));}Xx;};让函数接受智能指针,同时让智能指针引用堆栈分配对象的最佳方法是什么?或者我应该走Java路线并从堆中分配所有内容? 最佳答案 我只想让函数采用这样的模板

c++ - STL算法删除容器中的所有对象?

是否有STL实用程序/算法来对所有对象执行delete*the_object_iterator;?这样我就可以安全地clear()了吗?STL容器是一个set,对象是指向使用new创建的C++类的指针。Boost似乎是最好的解决方案。我的目标是避免在不可复制的类上进行复制构造。 最佳答案 使用智能指针来保存类指针std::set>mySet; 关于c++-STL算法删除容器中的所有对象?,我们在StackOverflow上找到一个类似的问题: https://

c++ - boost::thread 数据结构的大小在荒谬的一面?

编译器:clang++x86-64onlinux。自从我编写任何复杂的低级系统代码以来已经有一段时间了,而且我通常针对系统原语(windows和pthreads/posix)进行编程。所以,输入和输出已经从我的内存中消失了。我目前正在使用boost::asio和boost::thread。为了模拟针对异步函数执行器的同步RPC(boost::io_service具有多个线程io::service::run'ing,其中请求是io_serviced::post'ed),我正在使用升压同步原语。出于好奇,我决定sizeof原语。这就是我所看到的。structnotification_obj

c++ - 为什么boost::when_all会产生一个新线程

下面的代码是用boost1.62编译的。#defineBOOST_THREAD_VERSION4#defineBOOST_THREAD_PROVIDES_EXECUTORS#include#include#include#includeusingnamespacestd::literals::chrono_literals;intmain(){autostart=boost::make_ready_future();boost::loop_executorex;autoa=start.then(ex,[](auto&&){std::cout这会产生4个任务(a、b、c、d),它们之间有

c++ - boost mutex, condition, scoped_lock ,我在这里用错了吗?

classMyClass{public:voidPushMessage(MyMessagem)//Thread1callsthis{boost::mutex::scoped_locklock(mMutex);mQueue.push_back(m);mCondition.notify_one();}MyMessagePopMessage(){boost::mutex::scoped_locklock(mMutex);while(mQueue.empty())mCondition.wait(lock);MyMessagemessage=mQueue.front();mQueue.pop_f

c++ - 使用 boost 获取文件的所有者和组

我想使用boost::filesystem从文件中获取所有者和组,但从未找到任何方法。我可以获得文件的权限,但由于我不知道文件的所有者,所以这没有任何意义。我找到了posixfstat函数,但我还是想使用boost或其他C++库而不是C函数。 最佳答案 您要执行的是Unix系统调用。但是你不想调用它?为什么?boost可以提供什么可能的值(value)?这不是可移植性,因为Unix之外的任何东西都不会有有意义的st_gid字段。 关于c++-使用boost获取文件的所有者和组,我们在St

C++/boost::thread 程序在 join_all 后挂起并从 Main 返回

第一次在这里发帖,但是我已经彻底搜索了这个问题的解决方案,但没有解决方案。我有一个类,它基本上使用静态范围的线程池来计算矩阵的条目。当需要进行新的计算时,静态条件变量会发出信号。当程序结束时,一个静态bool标志被改变,主线程在退出前调用join_all。问题是当我从intmain()返回时,程序似乎在销毁静态变量期间挂起。这是执行计算的类的粗略源代码:classFunctionCalculator{public:staticvoidcreateWorkers();staticvoiddestroyWorkers();staticvoidcalcFunction();private:s

c++ - 在哪里可以找到可以在 cmake 中使用的 boost 组件列表?

我有一个cmake文件,可以像这样添加boost:if(ADD_BOOST)#addboostlibraryset(Boost_USE_STATIC_LIBSON)set(Boost_USE_STATIC_RUNTIMEON)file(TO_CMAKE_PATH$ENV{BOOST_ROOT}BOOST_ROOT)if(MSVC)set(BOOST_LIBRARYDIR${BOOST_ROOT}/lib64-msvc-12.0)else(MSVC)set(BOOST_LIBRARY_DIR$ENV{BOOST_ROOT})endif(MSVC)find_package(BoostCOM

c++ - 无法在 Boost.Python 中使用 __stdcall 编译示例

我正在尝试使用Boost.Python在Python中包装一个函数,但在使用__stdcall时我遇到了问题。这是一个例子:#defineBOOST_PYTHON_STATIC_LIB#defineBOOST_PYTHON_ENABLE_STDCALL#include#includevoid__stdcallf(void){return;}usingnamespaceboost::python;BOOST_PYTHON_MODULE(MyPyDLL){def("func",f);}当我尝试编译时,我遇到了100多个类似的错误,但前两个是:errorC2780:'boost::mpl::

c++ - Boost::bind 一个带有 boost::function 参数的方法

我想为async_write提供一个额外的boost::function。我希望首先调用连接自己的HandleWrite函数,然后调用提供的boost::function。绑定(bind)asioasync_write的Connection成员方法voidConnection::HandleWrite(constboost::system::error_code&e,boost::functionhandler){//Coderemovedforclarityif(!handler.empty())handler(e);};尝试将HandleWrite绑定(bind)到asioasyn