草庐IT

枚举法

全部标签

c++ - C++11 中的最终枚举类

我只是好奇枚举类是否可以是最终的...因为编译器给我的结果是矛盾的。考虑代码:#includeenumclasssome_enumsfinal:char{a='a',b='b',c='c'};intmain(){some_enumsaa=some_enums::a;std::cout(aa)用VisualStudio2015编译器(http://rextester.com/l/cpp_online_compiler_visual)编译它可以工作...但是用clang(http://rextester.com/l/cpp_online_compiler_clang)编译它给我一个错误:s

c++ - 为什么 == 运算符重载枚举在 MSVC 中不明确

除了MSVC,以下代码在我检查过的所有编译器(clang、mingw、g++)上都能正常编译。enumclassFoo{BAR};booloperator==(Fooa,Foob){return(int)a&(int)b;}intmain(intargc,char*argv[]){Foo::BAR==Foo::BAR;return0;}MSVC失败并出现以下错误:>main.cpp(10):errorC2593:'operator=='isambiguous>main.cpp(3):note:couldbe'booloperator==(Foo,Foo)'>main.cpp(10):n

C++二分查找算法:132 模式解法二枚举2

题目及解法一:https://blog.csdn.net/he_zhidan/article/details/134362273分析第一步,选择各3对应的1,如果有多个符合对应最小的1,记录num[0,j)中的最小值iMin,如果nums[j]大于iMin,则m3To1[nums[j]]=iMin,否则等于一个不存在的大数,比如:100010001000+1。第二步,枚举2,m31的key是3的值,value是1的值,寻找key大于nums[k]中,是否存在value小于nums[k]。如果key1>=key0,且value1先要判断是否被旧值淘汰,再看是否淘汰旧值。核心代码classSolu

c++ - 使用 int 进行枚举类初始化

我在编程的时候发现了一些有趣的事情:enumclassFoo{FOO_THING,FOO_TOO};intmain(){Foofoo{1};//ItisOKFoofoo2(1);//Itisaninvalid}你能告诉我,为什么foo{1}对于编译器来说是可以的,而为什么foo2(1)是无效的?编译器GCC(g++(Ubuntu7.3.0-21ubuntu1~16.04)7.3.0)说:$g++-Wall-std=c++17foo.cpperror:cannotconvert‘int’to‘Foo’ininitializationFoofoo2(1);我真的很想知道底层机制。:)))编

c++ - 哪些枚举值在 C++14 中是未定义的行为,为什么?

标准中的脚注暗示任何枚举表达式值都是已定义的行为;为什么Clang的未定义行为sanitizer程序会标记超出范围的值?考虑以下程序:enumA{B=3,C=7};intmain(){Ad=static_cast(8);returnd+B;}theundefinedbehaviorsanitizer下的输出是:$clang++-5.0-fsanitize=undefined-ggdb3enum.cc&&./a.outenum.cc:5:10:runtimeerror:loadofvalue8,whichisnotavalidvaluefortype'A'请注意,错误不在static_c

c++ - 枚举变量的默认值是多少?

我对C++中的枚举变量有疑问:typeenmu{DAY1=1,DAY2,DAY3,DAY4}DAYS;voidmain(){DAYSdays;}那么天数的默认值是多少? 最佳答案 读取值是未初始化和未定义的行为。就像说intx;x在您初始化之前没有值。 关于c++-枚举变量的默认值是多少?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/12037604/

常用算法——枚举算法

  在进行归纳推理时,如果逐个考察了某类事件的所有可能情况,因而得出一般结论,那么这结论是可靠的,这种归纳方法叫做枚举算法一、基本概念和算法  枚举算法简称枚举法,也称为列举法、穷举法,是暴力策略的具体体现,又称为蛮力法。  枚举法的基本思想是:逐一列举问题所涉及的所有情形,并根据问题提出的条件检验哪些是问题的解,哪些应予排除。枚举的意义1)可以充分利用计算机的速度,解决一些常见问题2)如果问题的规模不大,使用枚举,运算速度是可以接收的。3)枚举可作为某类问题时间性能的底线,用来引出同样问题的更高效率的算法。枚举的实施步骤(算法)1)根据问题的具体情况确定枚举量(简单变量或数组)2)根据问题的

c++ - 如何使用枚举类值作为 for 循环的一部分?

我正在尝试通过遍历枚举Suit和Rank来创建一副纸牌(我知道没有很好的方法来遍历枚举,但我不知道看不到替代品)。为此,我在每个枚举的末尾添加了一个枚举器enum_count,其值表示枚举的长度和末尾。#includeusingnamespacestd;enumclassSuit:int{clubs,diamonds,hearts,spades,enum_count};enumclassRank:int{one,two,three,four,five,six,seven,eight,nine,ten,jack,queen,king,ace,enum_count};structCard{

c++ - 枚举特定于编译器的扩展的范围解析运算符?

关于thisquestion,有ananswer指出:YoucanusetypedeftomakeColourenumerationtypeaccessiblewithoutspecifyingit's"fullname".typedefSample::ColourColour;Colourc=Colour::BLUE;这对我来说听起来是对的,但有人投了反对票并留下了这条评论:Usingthescoperesolutionoperator::onenums(asin"Colour::BLUE")isacompiler-specificextension,notstandardC++这是

c++ - 初始化枚举 C++

我创建了一个名为Types的枚举:enumTypes{Int,Double,String};当我创建一个对象并使用枚举允许值之一对其进行初始化时,出现以下错误:“错误:不允许类型名称”。Typesty=Types.Double;有什么想法吗? 最佳答案 在C++中,有两种不同类型的枚举-作用域枚举和非作用域枚举(前者是在C++11中引入的)。对于无范围的,枚举器的名称直接引入封闭范围。N3337§7.2/10Eachenum-nameandeachunscopedenumeratorisdeclaredinthescopethati