草庐IT

ZN5boost

全部标签

c++ - 如何使用 boost::iostreams 将 bash 脚本转换为 C++

我正在尝试使用boost::iostreams将以下bash代码转换为C++:#!/usr/bin/bash(gzip-cdfile1.ext.gzcatfile2.ext)|grep'^regex'#orsed's/search/replace/'我可以打开一个文件并解压它:std::ifstreams("file.ext.gz",std::ios_base::in|std::ios_base::binary);boost::iostreams::filtering_istreambufin;in.push(boost::iostreams::gzip_decompressor())

c++ - Boost 池分配器不会在 g++ 中使用 std::allocate_shared 进行编译

编辑:澄清我想要的结果,因为我没有很好地传达它:能够将std::allocate_shared与boost::fast_pool_allocator一起用作使用g++4.8或更高版本和boost1.56.0的分配方法。目前这适用于g++4.6,但在4.7、4.8和4.9上失败。需要说明的是,我不希望在g++4.7中使用这项功能。测试代码产生错误:#include"boost/pool/pool.hpp"#include"boost/pool/pool_alloc.hpp"#includeintmain(intargc,char**argv){autofails=std::allocat

c++ - 我什么时候调用 boost::asio::streambuf::consume() 和 boost::asio::streambuf::commit()?

我试图理解boost::asio::streambuf::consume()和boost::asio::streambuf::commit()调用.在文档中,我们有示例,boost::asio::streambufb;std::ostreamos(&b);os和boost::asio::streambufb;//reserve512bytesinoutputsequenceboost::asio::streambuf::mutable_buffers_typebufs=b.prepare(512);size_tn=sock.receive(bufs);//receiveddatais"

c++ - boost序列化异常: unregistered class,序列化多态基础问题

我一直在阅读、交叉引用,但最终没有找到连贯的示例和答案。我想做的很简单,但我显然遗漏了一些东西。在英语中,我有一个具有两个抽象基础的类结构(纯BB派生自纯AA),我将其管理为:std::vector我想序列化另一个包含这个vector的对象。所有除了这个vector都可以很好地序列化,但是一旦它到达vector,它就会抛出:terminatecalledafterthrowinganinstanceof'boost::archive::archive_exception'what():unregisteredclass-derivedclassnotregisteredorexport

c++ - 如何在 Boost 程序选项中获得更好的错误消息

在下面的代码中,我使用程序选项从命令行或文件中读取参数。此外,可以在运行时通过ConfigProxy::setConfig以编程方式设置选项po::options_descriptiondesc("Allowedoptions");desc.add_options()...("compression",po::value(),"setcompressionlevel");po::variables_mapvm;classConfigProxy{templatevoidsetConfig(conststd::stringkey,constTvalue){...//checkiftheke

c++ - 什么是 BOOST_ROOT?

我正在尝试构建http://code.google.com/p/quickfast/的x64版本这就是构建脚本使用%BOOST_ROOT%的方式:setSETUP_CHECKING=BOOST_ROOT=%BOOST_ROOT%ifnotexist"%BOOST_ROOT%\boost"gotosetup_is_badincludes+=$(BOOST_ROOT)/includesetRELEASE_PATH=%QUICKFAST_ROOT%\bin;%QUICKFAST_ROOT%\Output\Release;%MPC_ROOT%;%BOOST_ROOT%\lib;因此构建脚本需要

c++ - boost 序列化和 std::shared_ptr

我有一个包含以下字段的对象:boost::unordered_map>m_liste_;我想序列化它,但似乎std::shared_ptr不能以简单的方式序列化谁有解决办法? 最佳答案 我怀疑你缺少一个包含,#includelink,atthebottom此外,该示例看起来像是默认处理了别名和循环。_当然,循环会导致shared_ptr的潜在内存泄漏,这与序列化无关,您仍然必须注意这些(通过避免循环或明智地使用weak_ptr)_另见:Templateserialization-shared_ptrshared_ptrRevisit

c++ - 只要集合不变,迭代器是否以相同的顺序迭代 boost::unordered_set 或 boost::unordered_map?

只要set或map不变,迭代器是否以相同的顺序遍历boost::unordered_set或boost::unordered_map? 最佳答案 HashMap的某些实现会将散列到同一容器的项目重新排序,将最近访问的项目放在列表的前面,作为优化。这将改变顺序。我不知道boost::unordered_map会这样做,但将来您可能最终会用std::unordered_map代替,这将完全取决于您的编译器的实现。 关于c++-只要集合不变,迭代器是否以相同的顺序迭代boost::unorde

c++ - 如何使用 boost::units 添加你自己的基本单位和转换

我目前使用boost::units来表示以si单位表示的扭矩,但是我得到的是以磅英尺为单位的扭矩。因此,我试图创建一个磅英尺的扭矩单位和一个转换来支持它。我懒惰的尝试是简单地定义:BOOST_STATIC_CONST(boost::si::torque,pound_feet=1.3558179483314*si::newton_meters);然后做:boost::si::torquetorque=some_value*pound_feet;但这感觉并不令人满意。我的第二次尝试是尝试定义一个名为pound_foot的新基本单位(见下文)。但是当我尝试以类似于上述的方式使用它时(转换为s

c++ - boost::python 和 weak_ptr:东西消失了

我想将对对象的引用存储为weak_ptr。在纯C++中,以下工作:#include#include#includeusingnamespacestd;usingnamespaceboost;structEmpty{Empty(){}};structStore{weak_ptrvalue;Store(){};voidsetValue(shared_ptrv){coutvalue=weak_ptr(v);shared_ptrv_ok=this->value.lock();if(v_ok){coutgetValue(){shared_ptrp=this->value.lock();if(p)