草庐IT

if-cases

全部标签

c++ - C++ 中的 If 语句,主体为空 : is condition guaranteed to be evaluated?

鉴于此声明(作为旁注,这不是我喜欢的编码风格)if(doSomething()){}“C++标准”是否保证函数被调用?(它的返回值对执行路径没有影响,所以编译器可能会遵循捷径评估的思想并将其优化掉。) 最佳答案 不涉及短路运算符,因此如果在不消除副作用的情况下无法优化函数,则可以保证调用该函数。引用C++11标准:[...]conformingimplementationsarerequiredtoemulate(only)theobservablebehavioroftheabstractmachineasexplainedbel

c++ - SFINAE : Know if a function already exist or no

基本上,我想编写这样的代码:std::vectora={54,25,32.5};std::vectorb={55,65,6};std::cout这是不可能的,因为operator没有过载所以,我编写了一个函数来完成这项工作:templatetypenameT,typename...Args>std::enable_if_t>>,std::ostream>&operatorconst&t){for(autoconst&e:t)out效果很好,但我对字符串有疑问。因为字符串是可迭代的并且字符串有operator功能。所以我测试了另一个特征,比如!is_streamable_out&&_is

c++ - SSE 内在函数 - 比较 if/else 优化

我一直在尝试优化一些处理原始像素数据的代码。目前代码的C++实现速度太慢,所以我一直在尝试在MSVC2008中使用SSE内在函数(SSE/2/3不使用4)。考虑到这是我第一次深入挖掘,我'我们取得了一些不错的进展。不幸的是,我遇到了一段让我卡住的特定代码://Beginbad/suboptimalSSEcode__m128ivnMask=_mm_set1_epi16(0x0001);__m128ivn1=_mm_and_si128(vnFloors,vnMask);for(intm=0;m目前,我在这部分默认使用C++实现,因为我无法完全理解如何使用SSE对其进行优化-我发现SSE内在

c++ - 为什么 Visual Studio 不允许我在 enable_if 中使用模板化的 constexpr 函数?

所以我将其归结为最小的、完整的、可验证的示例,而且VisualStudio2015似乎不允许我使用模板化的constexpr在enable_if中运行.例如:templateconstexprboolcondition(){returnsizeof(T)>1;}给我错误:errorC2995:enable_if::typetest(void):functiontemplatehasalreadybeendefined当我尝试在替换中使用它时,失败不是这样的错误编译:templateenable_if_t()>test(){coutenable_if_t()>test(){cout这在g

c++ - "peculiar"使用 switch 语句 : contains an if and for statement 的技术名称

声明一下,这是一道作业题。但这是一个无法从我们的讲义中找到答案的问题,我们被鼓励通过研究(我想是在互联网上)找到答案。我们得到了以下代码片段,并要求我们提供这种特殊“特殊”用法的switch语句的技术名称(这是在C++中)switch(x){case0:if(m>n){case1:for(o=0;o其中x、m、n、o和p是整数我已经回答了所有关于代码如何在不同条件下运行的问题,但我找不到这种switch语句的神秘技术名称。我已经尝试了一些创造性的谷歌搜索,并阅读了几页关于switch语句的内容,但找不到像这样的情况的提及,其中if和for嵌套在其中。谁能指出我正确的方向??

c++ - 使用 remove_if 按索引从 C++ vector 中删除

我们可以在C++中使用remove_if,根据对元素进行操作的谓词,在线性时间内从vector中删除元素。boolcondition(doubled){...}vectordata=...std::remove_if(data.begin(),data.end(),condition);如果我的条件不取决于值,而是取决于指数怎么办?换句话说,如果我想删除所有奇数索引元素,或一些任意索引集等?boolcondition(intindex){//returnswhetherthisindexshouldberemoved}vectordata=...std::remove_if(data.

在if语句中运行查询

我正在尝试学习C#,并遇到一个问题,我希望你们知道一个简单的解决方案。我想运行两个可能的LINQ查询,但要从不同的位置读取并根据IF条件返回两个不同的字段(两个ID)。在VB6中,这将是简单的类似:DimstrQueryasstringDimrsasadodb.recordsetIf1=1thenstrQuery="Selectmessageidasid1,refidasid1fromxwhere..."elsestrQuery="Selectcommonidasid1,nextidasid2fromxwhere..."endifsetrs=cn.execute(strquery)debug.

c++ - 为什么我不能在 switch-case block 中实例化对象

我的代码有3个类n_hexa、n_octa、n_bin。代码在这里switch(choice){case1:cin>>n;n_hexanx(n);break;case2:cin>>n;n_octano(n);break;case3:cin>>n;n_binnb(n);break;}在编译时,它会为n_octa行给出一条消息“crossesinitialisationofn_hexa” 最佳答案 如果您想在case中放置临时对象,则需要适本地确定它们的范围。switch(choice){case1:{cin>>n;n_hexanx(n

c++ - C++ 中的无分支 if 是什么样子的?

我意识到我在那个领域非常缺乏知识(说我不了解jack的奇特方式)。是否有关于如何以及何时使用它们的文档? 最佳答案 除了所有基于twiddling的无分支代码(不会涵盖所有内容,例如FP)之外,您还可以获得专门用于创建无分支代码的说明,这些说明是SETcc,FCMOVcc和x86下的CMOVcc,它们根据比较中的条件标志执行操作。一个非常简单的例子是(是的,这个例子很简单,一个人可能永远不会写这样的东西,它只是为了清楚地证明一个观点):boolCheckZero(intx){if(x==0)returntrue;returnfals

c++ - 从 "cascading ifs"倍表达式中检索值

假设我想使用以下语法创建自己的基于lambda的开关:autos=make_switch(std::pair{0,[]{return0;}},std::pair{1,[]{return50;}},std::pair{2,[]{return100;}});assert(s(0)==0);assert(s(1)==50);assert(s(2)==100);我想使用一个折叠表达式来实现不需要递归的简洁实现。这个想法是生成类似于一堆嵌套的if语句的东西:if(x==0)return0;if(x==1)return50;if(x==2)return100;我想这样写://pseudocodet