草庐IT

Boost-asio

全部标签

c++ - 来自 file_descriptor_source (boost::iostreams) 或文件的 istream

我需要为程序的输入做这样的事情:streaminput;if(decompressed)input.open(filepath);else{file_descriptor=_popen("decompressor"+filepath,"r");input.open(file_descriptor);}input.read(...)...我可以看到一种解决方案-在这两种情况下都使用_popen,如果文件已经解压,则将文件复制到标准输出,但这看起来不是很优雅。有趣的是,与C相比这有多么困难-我猜标准库错过了它。现在我迷失在神秘的boost::iostreams文档中。如果有人知道如何操作,

c++ - 通过 boost::bind 从 vector 中删除字符串

我正在尝试从vector中删除短字符串。std::vectorvec;//...vec.erase(std::remove_if(vec.begin(),vec.end(),boost::bind(std::less(),boost::bind(&std::string::length,_1),5),vec.end());编译器吐出一条非常大的错误信息:qwer.cpp:20:error:nomatchingfunctionforcallto'remove_if(__gnu_cxx::__normal_iterator,std::allocator>*,std::vector,std:

c++ - 通过 boost lambda 占位符访问成员变量

我正在尝试使用lambda表达式打印STL映射中所有项目的第二个成员变量maptheMap;for_each(theMap.begin(),theMap.end(),cout::second,_1)但这不是编译。我基本上想取消引用占位符。知道我在这里缺少什么吗?提前致谢! 最佳答案 尝试:for_each(theMap.begin(),theMap.end(),cout::value_type::second,_1) 关于c++-通过boostlambda占位符访问成员变量,我们在Sta

C++ boost 线程 ID 和单例

很抱歉这周提出了这么多问题。我假设thread.get_id返回的线程索引是特定于实现的。在pthreads的情况下,索引是否被重用?IE,如果线程0运行并加入,线程启动后是否会有不同的ID?我问这个的原因是需要通过扭曲来实现单例模式:每个线程都有自己的实例。我知道这听起来很疯狂,但是线程控制硬件(cuda)不允许设备内存共享,即使在线程级别也是如此。实现这种模式的好方法是什么? 最佳答案 对于每个线程都有自己的实例的全局(单例),使用线程本地存储。Boost有thread_specific_ptr为此。

c++ - 在cocoa项目中使用boost库

理论上可以在cocoa项目中使用boost库(例如boostthreads)? 最佳答案 是的,没有什么能阻止你这样做:您可以混合使用Objective-C和C++-结果称为Objective-C++您当然也可以链接到C和C++库 关于c++-在cocoa项目中使用boost库,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2706296/

c++ - boost 绑定(bind)一个引用的函数

我在编译以下片段时遇到问题inttemp;vectororigins;vectororiginTokens=OTUtils::tokenize(buffer,",");//bufferisachar[]array//originalloopBOOST_FOREACH(strings,originTokens){from_string(temp,s);origins.push_back(temp);}//I'dliketousethistoreplacetheaboveloopstd::transform(originTokens.begin(),originTokens.end(),o

c++ - boost 多线程

谁能告诉我这是怎么回事?当我尝试调试代码并且当控件在第15行的thread()函数中时,它会跳过第16行移动到第17行并返回第16行。为什么它不逐行移动?1.#include2.#include3.4.voidwait(intseconds)5.{6.boost::this_thread::sleep(boost::posix_time::seconds(seconds));7.}8.9.boost::mutexmutex;10.11.voidthread()12.{13.for(inti=0;i 最佳答案 可能您的调试器实际上是在

c++ - boost::序列化可变成员

使用boost::serialization,序列化包含可变成员中的缓存派生值的对象的“最佳”方法是什么?classExample{public:Example(floatn):num(n),sqrt_num(-1.0){}//computeandcachesqrtonfirstreadfloatget_sqrt()const{if(sqrt_numvoidserialize(Archive&ar,unsignedintversion){...}private:floatnum;mutablefloatsqrt_num;};出于维护原因,我想避免将serialize()拆分为单独的sa

C++ Boost 多索引类型识别

在boostmulti-index中,我可以通过元编程验证特定索引类型是否有序吗?有有序索引、散列索引、序列索引等,我可以通过元编程找到它们吗?假设有一个像这样的索引:intmain(){typedefmulti_index_containerdouble_set;return0;}我想知道double_set索引是有序的、散列的还是有序的。当然在这种情况下,它是有序的。 最佳答案 是的:#include#include#include#include#include#include#include#include#include#

c++ - Boost Graph Library 无向图 无平行边实现

我正在使用BoostGraphLibrary来处理无向图,并声明我的图有typedefproperty>VertexProperty;typedefadjacency_listUndirectedGraph;如您所见,OutEdgeList是std::set类型,我选择它是因为文档中说这种类型将强制不存在平行边。现在,我的程序读取一个文本文件,该文件指示节点之间的边,创建节点(如果以前没有看到)并在它们之间添加边。我最近跑了大数据量的代码,发现奇怪的结果。几个小时后,我发现一些用户的度数比图中的顶点数多,所以我用一个简单的文本文件尝试了代码,该文件只描述了同一对节点之间的两条边,但源、