草庐IT

std-function

全部标签

C++ LZMA SDK : Uncompress function for LZMA2 compressed file

我正在尝试创建一个解压缩LZAM2压缩数据的函数。我的灵感来自thistutorial这对LZMA非常有效,我尝试将其改编为LZMA2。我成功地为LZMA2创建了压缩函数,但我没有成功创建解压缩函数。这里是压缩函数:staticvoidCompress2Inc(std::vector&outBuf,conststd::vector&inBuf){CLzma2EncHandleenc=Lzma2Enc_Create(&SzAllocForLzma,&SzAllocForLzma2);assert(enc);CLzma2EncPropsprops;Lzma2EncProps_Init(&p

c++ - 错误 : control Reaches end of non void function

我正在学习C++,我从教科书上抄了这段代码,在编译代码时,最后出现错误。错误说:ControlReachesendofnon-voidfunction它位于代码的末尾:#include"ComplexNumber.hpp"#includeComplexNumber::ComplexNumber(){mRealPart=0.0;mImaginaryPart=0.0;}ComplexNumber::ComplexNumber(doublex,doubley){mRealPart=x;mImaginaryPart=y;}doubleComplexNumber::CalculateModulu

c++ - std::bind 和 boost::bind 与多态性的区别

我有一个派生类,我从中绑定(bind)了一个我没有在这个类中重写的虚函数,所以我希望调用父类中的一个。它适用于boost(1.55),但如果我从C++11切换到std::bind,它会拒绝使用进行编译errorC2100:illegalindirection1>functional(1152):seereferencetofunctiontemplateinstantiation'_Rxstd::_Pmf_wrap::operator()(_Wrapper&)const'beingcompiled1>with1>[1>_Rx=bool,1>_Pmf_t=bool(__thiscallB

c++ - std::thread 并在 visual studio 2013 中 move

我有一个只能move的类和一个按值获取此类对象的函数。在新线程中调用函数:voidfoo(MyClassa){}intmain(){MyClassa;std::threadt(&foo,std::move(a));}我得到一个编译器错误,因为缺少MyClass的复制构造函数(我删除了他),如果我实现他,复制构造函数就会被调用。显然这是一个错误,它在gcc中编译时没有复制构造函数。有什么解决方法吗? 最佳答案 如果方法需要a的所有权,通过堆传递它,最好是在shared_ptr中:voidfoo(std::shared_ptra){}[

c++ - std::deque: "insertion and deletion of elements may invalidate iterators"是什么意思?

我正在阅读有关std::deque容器的信息,文档指出Insertionanddeletionofelementsinstd::dequemayinvalidateallitsiterators这是我对上述陈述的理解版本,如果我误解了陈述或遗漏了什么,请告诉我考虑以下代码std::deques;s.push_back(12);autoi=s.begin();s.push_front(45);//Afterpushing45atthebacknow`i`maybeinvalid.这个理解正确吗? 最佳答案 你是对的。例如之后std::

c++ - Boost ICL : Are some combinations of interval types and functions not implemented?中函数 "contains"的基本使用

我开始使用BoostICL,并且偶然发现了一些非常基础的东西。例如,函数contains应该返回true或false,这取决于给定元素是否在区间内。然而,这适用于[right,left]_open_intervals但不适用于[open,closed]_inteval(请参见下面的示例)。这似乎太明显了,不是疏忽。我正在以预期的方式使用库吗?例如(使用gcc4.8或clang3.3和Boost1.54):#include//neededtomakethisMWEwork,boosticlshouldincludeitinternally#include#include#includei

C++ 装饰器添加到 std::vector

我有一个记录的基类,想使用装饰器添加额外的字段和比较函数,并能够链接装饰器(记录可以有电子邮件,或出生日期,或两者都有,或没有).我也会有很多这样的装饰器;每个附加字段一个,及其比较功能。完成此操作后,我将使用基类指针将对象添加到vector中。代码如下:classBaseRecord{public:virtualboolCompare();//definedelsewhereprotected:std::stringm_strName;std::stringm_strAddress:};classBaseDecorator:publicBaseRecord{public:BaseDe

c++ - VC++ 2013 : using-declaration + redefinition of member function leads to compile error

我想通过指定策略允许修改我的类的行为。该策略应该用作boost::variant的访问者。有适合大多数情况的默认策略,但用户可能需要添加或替换一些重载。我发现vc++2013没有编译此代码并出现错误C3066:Therearemultiplewaysthatanobjectofthistypeofcanbecalledwiththesearguments。相同的代码在gcc和clang中按预期编译和工作。是vc++2013的错误吗?#includestructDefaultPolicy{voidoperator()(bool){std::coutUPD这个例子适用于vc++2010。看

C++ 蛇克隆 : timer function ignores given stop time and stops at it's own fixed time

我正在尝试使用C++和OpenGL/GLUT制作一个Snake克隆。然而,我一直在编程允许输入Action之间的短时间间隔时遇到问题。我已经尝试了一些计时方法,最后我为它创建了一个类(如下所示)。这似乎是对输入延迟进行编程的最佳方式(而不是glutTimerFunc()或sleep()),因为计时器独立于游戏循环运行,而不是暂停整个程序。这很重要,因为我希望播放器能够随时暂停。不幸的是,我现在也遇到了这种方法的问题。我的计时器类似乎忽略了我给它的双倍时间限制(简单表示为双倍“限制”)。为了测试该类,我设置了一个简单的循环控制台程序,该程序在计时器达到时间限制时显示来自用户的定向输入。它

c++ - 错误:无法将 std::vector<std::basic_string<char>> 转换为 std::string*

作为C++的新手,我曾尝试在我的一个程序中创建一个简单的void函数以显示数组。但是,如标题所示,存在错误。我认为这是一个问题,因为我试图用与函数参数不同形式的数组来调用它。我不确定如何修改它。#include#includeusingnamespacestd;voiddisplay_array(stringarr[]){inti;for(i=0;ipaths;cout>current;while(current!="0"){paths.push_back(current);cin>>current;}display_array(paths);}感谢任何帮助。