草庐IT

boost-pool

全部标签

c++ - 将 boost::lexical_cast 与 std::transform 一起使用

g++不喜欢:vectorx;x+=1,2,3,4,5;vectory(x.size());transform(x.begin(),x.end(),y.begin(),lexical_cast);错误信息是:error:nomatchingfunctionforcallto'transform(__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator>>,__gnu_cxx::__normal_iterator,std::allocator>*,std::vector,std::allocator>,std::allocat

c++ - 如何创建一个带有参数的函数,该参数将是 boost::bind 的结果?

所以我想创建一个像这样的函数:voidproxy_do_stuff(boost::bindreturn_here){return_here();//callstuffpasedintoboost::bind}我可以这样调用它:proxy_do_stuff(boost::bind(&myclass::myfunction,this,my_function_argument_value,etc_fun_argument));如何做这样的事情? 最佳答案 boost::bind的返回类型是boost::function类型。见下文:voi

c++ - boost MPL : Call a (member) function only if it exists

我有一个类A,它有一个模板参数T。有些用例中类T提供函数func1(),有些用例中T不提供它。A中的函数f()应该调用func1(),前提是它存在。我认为这应该可以通过boostmpl实现,但我不知道如何实现。这里有一些伪代码:templateclassA{voidf(Tparam){if(T::func1isanexistingfunction)param.func1();}};如果是else-case会更好:templateclassA{voidf(Tparam){if(T::func1isanexistingfunction)param.func1();elsecout

c++ - 复制 boost::function 是否也复制闭包?

假设我有这样一个函数:voidsomeFunction(constExpensiveObjectToCopy&);如果我创建一个boost::functionoutifit,该函数将在其闭包中存储它自己的对象的克隆拷贝:boost::functionf=boost::bind(someFunction,x);//现在,如果我开始传递f,boost::function复制构造函数每次都会再次复制该对象,还是每个函数共享同一个闭包?(即像这样)boost::functionf2=f;callSomeFunction(f);etc. 最佳答案

c++ - 传递 `boost::variant` 数据类型的优雅方法

我需要找到一个更好的解决方案来将数据类型传递给boost::variant以便函数可以优雅地检索存储的变量类型。我已经提出了一个适合我的实现,但我担心有更好的方法。//filename:p192.cpp#include#include#include#include#includeusingnamespacestd;enumTypePassIn{INT_TYPE,DOUBLE_TYPE,STRING_TYPE,PERSON_TYPE,LAST_TYPE=PERSON_TYPE};structPerson{Person(int_age,string_name):age(_age),nam

c++ - 是否允许递归 boost spirit 语法?

我正准备为一种类似mathematica的语言编写一个解析器,并且发现有时调用我的spirit语法来解析表达式的子部分会很好。即如果我要解析a+b*c+d在查询'+'符号时,在'b*c'部分调用parse()会很方便。在使用我的语法的相同实例时可以这样做吗?(语法参数将是'*this')虽然我还不确定这是否是完成此特定任务的最佳方法,但我发现这个问题很有趣,因为我在文档中找不到任何内容。如果我使用这种技术,显然我不应该依赖类局部变量或全局变量。但我想知道它是否主要是spirit设计所允许的。编辑:我的语法实例如下所示:classMyGrammar:publicboost::spirit

C++ boost : Split function is_any_of()

我正在尝试在以下函数中使用boost/algorithm/string.hpp中提供的split()函数:vectorsplitString(stringinput,stringpivot){//Pivot:e.g.,"##"vectorsplitInput;//Vectorwherethestringissplitandstoredsplit(splitInput,input,is_any_of(pivot),token_compress_on);//SplitthestringreturnsplitInput;}下面的调用:stringhello="Hieafds##addgaeg

c++ - 否定 boost 范围滤波适配器

是否有可能/可以实现否定boost过滤适配器,例如std::vectorv={1,2,3,4,5};for(autoi:v|!filtered(is_even))std::cout而不是在lambda表达式中进行取反?动机:我经常使用过滤函数和lambda函数,但是当我不止一次使用过滤器时,我通常会将其重构为自定义过滤器,例如for(autoi:v|even)//note:myfiltersaremorecomplexthaneven.std::cout现在,当我需要否定时,我正在为它们构建一个自定义过滤器,例如for(autoi:v|not_even)std::cout但我会发现能够

c++ - 十进制值:cout << dec << boost::this_thread::get_id()

是否可以用十进制或八进制格式计算thread::id?std::cout我总是得到十六进制,例如0xdf08。 最佳答案 您应该能够使用标准I/O操纵器指定您想要的输出格式:#include//...std::cout但是,请注意thread::id不需要是数字。此外,它可能是一个数字,但可能以不同于将该数字插入std::cout的方式打印到标准输出。.C++11标准规范operator的重载接受std::thread::id(我假设它的行为类似于Boost对boost::thread::it的对应重载),说:[...]Insert

c++ - 使用 Boost Program Options 解析任意字符串

我想在我的程序中实现类似命令行的界面。所以我收到的字符串遵循正常的命令行语法(例如“-Gfoo-dpbar--help”)。由于我不想再次实现解析器,所以我想使用Boost。问题是:如何将字符串传递给Boost程序选项而不是argCount和argValues的组合。我是否需要先将文本转换为数字(argCount)和char*数组(argValues)才能完成?如果是……有没有简单的方法来做到这一点?提前致谢。 最佳答案 一种方法是标记化std::string进入std::vector,然后将结果传递给Boost.ProgramOp