草庐IT

which_case

全部标签

c++ - C/C++ : Calling function with no arguments with function which returns nothing

为什么不能调用不带参数的函数,而函数调用作为不返回任何值的参数(恕我直言,这相当于调用不带参数但不带参数的函数)。例如:voidfoo(void){...}voidbar(void){...}foo(bar())不要误会我的意思,我知道void不是一个值,它不能被视为一个值。按照我的逻辑,这是有道理的,应该可以做到。我的意思是,为什么不呢?有什么理由认为这是不可能的吗? 最佳答案 我不相信我听到的任何理由都是好的。看,在C++中,您可以返回void函数的结果:voidfoo(){//...}voidbar(){//...return

c# - case 标签的顺序对 switch 语句的效率有多大影响?

考虑:if(condition1){//Codeblock1}else{//Codeblock2}如果我知道condition1将是true大部分时间,那么我应该编写逻辑代码,而不是:if(!condition1){//Codeblock2}else{//Codeblock1}因为我会避免jump到第二个代码块的惩罚(注意:我对汇编语言的了解有限)。这个想法是否会延续到switch语句和case标签?switch(myCaseValue){caseCase1://Codeblock1break;caseCase2://Codeblock2break;//etc.}如果我知道其中一种情况

c++ - 运算符转换、GCC 和 clang : which compiler is right?

考虑以下代码:structS{usingT=int;operatorT(){return42;}};intmain(){Ss;S::Tt=s;//Isthefollowinglinecorrect?t=s.operatorT();}使用GCC(4.9/5.1/6.1)编译,但使用clang(3.8/3.7)编译失败。返回的错误是:error:unknowntypename'T';didyoumean'S::T'?在这种情况下哪个编译器是正确的,为什么?注意解决它是一个合格的问题T:t=s.operatorS::T();问题不在于如何让它发挥作用。 最佳答案

python - 带有 GDB : the case of nlohmann json library 的 C++ 调试/打印自定义类型

我正在使用nlohmann'sjsonC++implementation进行一个项目.如何在GDB中轻松探索nlohmann的JSON键/值?我试过用这个STLgdbwrapping因为它为探索nlohmann的JSON库正在使用的标准C++库结构提供了帮助。但是我觉得不方便。这是一个简单的用例:jsonfoo;foo["flex"]=0.2;foo["awesome_str"]="bleh";foo["nested"]={{"bar","barz"}};我想在GDB中拥有什么:(gdb)pfoo{"flex":0.2,"awesome_str":"bleh","nested":etc

c++ - 标准 vector 和 boost 数组 : which is faster?

boost::array的性能与std::vector相比如何,哪些因素对其影响较大? 最佳答案 boost::array(或C++0x的std::array)应该比std::vector快,因为>boost::array实例完全在堆栈上。这意味着boost::array没有堆分配,这也意味着它不能增长到超过您在构造时为其指定的大小。boost::array的目的是充当原始数组周围的薄层,因此您可以使用.begin()将它们视为标准容器,.end()等。好的编译器应该消除boost::array的所有开销,使其与原始数组的性能相同。

c++ - 私有(private)继承VS组合: when to use which?

私有(private)继承VS组合。我有点困惑何时使用它们。由于私有(private)继承在某种程度上密封了继承链,给定:classA{private:intz;protected:inty;public:intx;};classB:privateA{/*B'sdatamembersandmethods*//*BhasaccessonlytoA'spublicandprotected*/};classC:publicB{/*canaccessnofieldsofB*/};C将无法使用B的任何字段。什么时候使用私有(private)继承,什么时候使用组合?谢谢!

c++ - 二进制 '[' : no operator found which takes a left-hand operand of type 'const std::map<_Kty,_Ty>'

我不知道错误来自哪里。好像我正在将有效数据传递给[]运算符。templatetypenamemap,int>::iteratorGraph::findEdge(constVertexType&v,constVertexType&w)const{map,int>::const_iteratoriter=vertices[v].second.adjList.find(w);returniter;}//endfindEdge错误:errorC2678:binary'[':nooperatorfoundwhichtakesaleft-handoperandoftype'conststd::ma

c++ - 谷歌测试 : Parameterized tests which use an existing test fixture class?

我有一个测试夹具类,目前许多测试都在使用它。#includeclassMyFixtureTest:public::testing::Test{voidSetUp(){...}};我想创建一个参数化测试,它也使用MyFixtureTest必须提供的所有功能,而无需更改我现有的所有测试。我该怎么做?我在网上找到了类似的讨论,但没有完全理解他们的答案。 最佳答案 此问题现已在GoogleTestdocumentation中得到解答。(来自VladLosev的answer在技术上是正确的,但可能需要做更多的工作)具体来说,当你想给一个预先存

c++ - C++ 中的动态与静态多态性 : which is preferable?

我了解动态/静态多态性取决于应用程序设计和要求。但是,如果可能的话,是否总是选择静态多态性而不是动态多态性?特别是,我可以在我的应用程序中看到以下两种设计选择,这两种选择似乎都被建议不要使用:使用CRTP实现静态多态性:没有vtable查找开销,同时仍以模板基类的形式提供接口(interface)。但是,使用大量的switch和static_cast来访问正确的类/方法,这是危险的动态多态性:实现接口(interface)(纯虚拟类),为访问器/突变器等微不足道的函数关联查找成本我的应用程序对时间非常关键,所以我赞成静态多态性。但是需要知道使用过多的static_cast是否表明设计不

c++ - unordered_map : which one is faster find() or count()?

判断unordered_map容器中是否有带有指定键的项目的最快方法是什么? 最佳答案 它们的性能大致相同。您应该使用最能表达您想要做的事情的算法。详细说明一下,一般count()会使用find()来实现。例如,在libcxx,count()实现为return(find(__k)!=end()); 关于c++-unordered_map:whichoneisfasterfind()orcount()?,我们在StackOverflow上找到一个类似的问题: h