草庐IT

c++ - 我怎样才能告诉 clang-format 遵循这个约定?

我想要这个:if(!enabled){return;}转向这个:if(!enabled){return;}(换句话说,我想在一行中使用简短的if语句,但在它们周围保留{})目前我正在使用以下配置:AllowShortIfStatementsOnASingleLine:trueAllowShortLoopsOnASingleLine:trueAllowShortCaseLabelsOnASingleLine:trueAllowShortFunctionsOnASingleLine:trueAllowShortBlocksOnASingleLine:trueBreakBeforeBrace

c++ - 我需要哪些库才能使用 std::placeholders?

目前我正在尝试生成组合,我正在使用以下代码:#include#include#include#includetemplateboolnext_combination(RandItfirst,RandItmid,RandItlast){std::sort(mid,last,std::bind(std::less(),std::placeholders::_2,std::placeholders::_1));returnstd::next_permutation(first,last,std::less());}使用g++编译失败说:next_combo.cpp:Infunction‘bo

c++ - 我怎样才能清楚地指定我要传递哪些参数以及哪些参数保持默认?

因此询问:Defaultargumentinc++假设我有这样一个函数:voidf(intp1=1,intp2=2,intp3=3,intp4=4);我只想使用一些参数来调用它——其余的将是默认值。像这样的东西会起作用:templatevoidf(intp1=1,intp2=2,intp3=3,intp4=4);//specialize:templatevoidf(intp1){f(1,p1);}templatevoidf(intp1,intp2){f(1,p1,p2);}//...andsoon.//Wouldneedaspecializationforeachcombination

c++ - 我怎样才能改进这个 C++ 代码

我需要您对以下伪代码的建议。请建议我如何改进它,是否可以使用一些设计模式。//i'mreceivingastringcontaining:idoperationargumentsdata=read(socket);tokens=tokenize(data,"");//tokenizethestringbasedonspacesif(tokens[0]=="A"){if(tokens[1]=="some_operation"){//heregoescodeforsome_operation,willusetheremainingtokensasargumentsforfunctionca

c++ - 我是否必须重载每个运算符才能让类的行为像它的成员变量之一?

给定一个用户定义的类型,如下所示:structWord{std::stringword;Widgetwidget;};有没有办法让类的每个重载运算符的行为都完全一样,就好像它只是一个字符串一样?或者我是否必须按以下方式实现该类:structWord{booloperator(Wordconst&lhs)const;booloperator(Wordconst&lhs)const;booloperator==(Wordconst&lhs)const;booloperator!=(Wordconst&lhs)const;//etc...std::stringword;Widgetwidge

c++ - 我怎样才能从尾部而不是头部拉出可变参数模板参数?

出于愚蠢的原因,我不会在这里深入,我需要注释掉的行才能工作,而它上面的行不能工作:templatestructPartialTuple;templatestructPartialTuple:PartialTuple{};templatestructPartialTuple{typedefstd::tupletype;};intmain(){//Iwantthistonotwork...PartialTuple::typeA{"test",5,1};//Iwantthistowork...//PartialTuple::typeB{"test","test",5};}我尝试将_Arg与_

c++ - 我怎样才能告诉 gcc 在不中断的情况下对 switch/case 语句发出警告(或失败)?

我有一个复杂的switch语句,我忘了在其中一个case的末尾放置一个break。这是完全合法的,因此我无法进入下一个案例。如果我忽略放置break语句,是否有任何方法让gcc发出警告(或者甚至更好,失败)?我意识到有许多有效的用例(我经常在我的代码中使用它们),如thisquestion中所示。,所以显然这样的警告(或失败)需要一个简单的豁免,这样我就可以轻松地说,“我确实想在这里失败。”有什么方法可以告诉gcc这样做吗? 最佳答案 在http://gcc.gnu.org/bugzilla/show_bug.cgi?id=7652

c++ - 我怎样才能找出这个 ffmpeg 错误代码的含义?

我正在使用函数avcodec_decode_video2.在流中的编码更改时,它返回-1094995529。该文档仅说明:Onerroranegativevalueisreturned,otherwisethenumberofbytesusedorzeroifnoframecouldbedecompressed.但是似乎没有返回代码的枚举或任何其他形式的文档。错误是什么意思,一般情况下我该如何确定? 最佳答案 来自ffmpeg的错误代码(来自avutil的error.h):http://ffmpeg.org/doxygen/trun

c++ - 我怎样才能制作自己的惰性迭代器?

我正在制作一个生成大量数据的C++11类。该数据当前来自数据库,不能完全放入内存中。我想为用户提供一个行为类似于常规STL迭代器的迭代器,但那样会很懒惰。更准确地说,我将能够做这样的事情:for(auto&item:big_bunch_of_data){do_stuff_with(item);}只有在每次迭代时才从数据库中检索项目。如果我是对的,这个新语法就是for(stuff::iteratorit=big_bunch_of_data.begin();it!=big_bunch_of_data.end();it++){do_stuff_with(*it);}这是否意味着通过提供beg

c++ - 我怎样才能 "override"[] 在 C++ 中接受两个参数?

我正在尝试用C++创建一个位vector类来为某些硬件建模。在我所知道的大多数HDL(硬件描述语言)中,特定位是这样引用的:my_vector[bit_position]子vector是这样引用的:my_vector[msb:lsb]或my_vector[msb,lsb]我希望能够用我的位vector类做一些类似的事情。有没有办法告诉operator[]接受两个参数?我考虑过的备选方案是:使用range方法:my_vector.range(msb,lsb)使用字符串并解析它:my_vector["msb:lsb"]但两者都没有吸引力。第一个,因为它与它在HDL中建模的方式太不一样了,第