文章目录一、计算器:二、设计一个程序,完成(英雄)商品的购买(界面就是第一天打印的界面)三、健康计划四、打印如下图案:五、输入数,判断这个数是否是质数六、让用户输入一个月份,判断这个月是哪个季节?假定3到4月是春季,5到8月是夏季,9到10是秋季,11、12、1、2月是冬季七、提示用户输入用户名,然后再提示输入密码,如果用户名是“admin”并且密码是“88888”,则提示正确,否则,如果用户名不是admin还提示用户用户名不存在,如果用户名是admin则提示密码错误。八、有一些四位数,百位数字都是3,十位数字都是6,并且它们既能被2整除,又能被3整除,求这样的四位数中最大的和最小的两数各是几
所以基本上,我现在有一个非常基本的通用类,目前正在测试type_traitsheader。我目前正在尝试制作一个函数来处理某些类型,即现在的算术类型。#includetemplateclassTest{public:templatetypenamestd::enable_if::value>::typeprint();};该函数完美运行且仅适用于算术类型。但我喜欢保持我的类整洁,只有它们有原型(prototype),而函数实现在类之外。使用标准模板即voidtest();templatevoidTest::test(){}这很简单,我知道怎么做,但我不知道如何用“std::enable
这是我想做的;发布整个代码,因为它不是太长,并且还可以演示我要解决的具体任务。基本上,我需要一种方法来按索引迭代参数包中的值(索引部分很重要,尽管在本例中不需要)。#include#include#includetemplateconstexprvoidstatic_for(Functor&&f){ifconstexpr(First{});static_for(std::forward(f));}}templateautovalue_by_index(Args&&...args)noexcept{returnstd::get(std::forward_as_tuple(std::for
我正在构建一个小型解释器,因此我想测试ifs、switch和函数指针相互比较的速度。if有19个elseifs比有20个case的switch稍快,而函数指针(20个函数指针的数组)比前两个慢得多...我预计结果会完全相反,谁能解释一下? 最佳答案 在现代处理器上,其中很多都归结为分支预测。虽然switch语句可以实现为一个跳转表,它执行代码的任何分支所花费的时间大致相同,但它通常也是相当不可预测的——从字面上看;分支预测器在预测采用哪个分支方面通常做得很差,这意味着很有可能出现管道泡沫(通常大约浪费15个周期左右)。if语句可
让我们举个简单的例子:#includenamespacefoo{constexprintmain(intargc,char*argv[]){//code}}intmain(intargc,char*argv[]){returnfoo::main(argc,argv);}取决于代码是什么,clang会提示或不提示。如果代码是:coutclang提示:error:constexprfunctionneverproducesaconstantexpression[-Winvalid-constexpr]constexprintmain(intargc,char*argv[]){note:no
我的问题首先是理解#ifndef和#ifdef。我还想了解#if、#ifndef和#ifdef之间的区别。我知道#if基本上是一个if语句。例如:#include#defineLINUX_GRAPHICS011x101intmain(){longCompare=LINUX_GRAPHICS;#ifCompare==LINUX_GRAPHICSstd::cout但是其他人,虽然我读过他们,但我无法理解。它们看起来也非常相似,但我怀疑它们的作用是否相似。将不胜感激。 最佳答案 宏由预处理器扩展,预处理器在运行时对变量值一无所知。它只是关
有时必须执行一系列if/else检查。在过去,goto是执行此操作的标准工具。由于goto在许多代码风格指南中都是禁止的,我有时会使用循环作为替代,例如:do{if(a){doA();break;}//...if(z){doZ();break;}}while(false);//allbreakjumphere这是一个好的方法吗?是否有一个好的C++模式(例如,使用模板、继承等)来实现它而不需要太多开销? 最佳答案 由于条件似乎无关,elseif是一个选项:if(a){doA();}elseif(b){//...}elseif(z){
考虑这段代码:structfoo{staticconstexprintvalue=42;};voidbar(constint*value){std::cout这在couple下编译正常并且没有警告的onlinecompilers我试过。鉴于没有单个.cpp文件定义constexpr值,如果从中调用bar方法,指针的值是否会有所不同不同的编译单元?或者标准是否保证该值最终只在所有编译单元中分配一次(即隐式_declspec(selectany))? 最佳答案 它对我不起作用---我收到链接器错误。http://coliru.stack
c++17提供ifconstexpr,其中:thevalueofconditionmustbeacontextuallyconvertedconstantexpressionoftypebool.Ifthevalueistrue,thenstatement-falseisdiscarded(ifpresent),otherwise,statement-trueisdiscarded有没有办法在for语句中也使用它?要在编译时展开循环?我希望能够做这样的事情:templatevoidfoo(){forconstexpr(autoi=0;i 最佳答案
我有一个函数:template::value==true>::type*=nullptr>voidtest(Ti){//processdata}有效。但是,我不仅需要为int启用此功能,还需要为float和constchar*启用此功能......如何无需将相同的方法写3次就可以做到这一点? 最佳答案 像这样:template::value||std::is_same::value||std::is_same::value>::type*=nullptr>voidtest(Ti){//processdata}