草庐IT

readability-implicit-bool-convers

全部标签

c++ - 如何在 bool 上下文中使用枚举类?

我有一些通用代码可以使用C++11enumclass类型指定的标志。一步,我想知道标志中的任何位是否已设置。目前,我正在使用代码:if(flags!=static_cast(0))//Works,butugly.我还可以强制用户为全零字段指定一个特定名称,这样更具可读性,但会将我的命名约定强加给使用它的任何人:if(flags!=E::none)//Works,ifyoumanuallydefinenone=0.但这些都不像传统的那样好:if(flags)//Doesn'tworkwithclassenums.是否可以指定自定义函数来评估bool上下文中的类枚举?

c++ - 字符串文字匹配 bool 重载而不是 std::string

我正在尝试编写一个具有一些重载方法的C++类:classOutput{public:staticvoidPrint(boolvalue){std::cout现在假设我按如下方式调用该方法:Output::Print("HelloWorld");这是结果True那么,为什么,当我定义了该方法可以接受boolean值和字符串时,当我传入一个非boolean值时,它是否使用boolean重载?编辑:我来自C#/Java环境,对C++很陌生! 最佳答案 "HelloWorld"是“12个数组constchar”类型的字符串文字,可以转换为“

c++ - 字符串文字匹配 bool 重载而不是 std::string

我正在尝试编写一个具有一些重载方法的C++类:classOutput{public:staticvoidPrint(boolvalue){std::cout现在假设我按如下方式调用该方法:Output::Print("HelloWorld");这是结果True那么,为什么,当我定义了该方法可以接受boolean值和字符串时,当我传入一个非boolean值时,它是否使用boolean重载?编辑:我来自C#/Java环境,对C++很陌生! 最佳答案 "HelloWorld"是“12个数组constchar”类型的字符串文字,可以转换为“

c++ - C++中的 bool 表达式(语法)解析器

我想解析一个bool表达式(在C++中)。输入形式:aandbxor(canddoraandb);我只是想把这个表达式解析成一棵树,知道优先规则(not,and,xor,or)。所以上面的表达式应该是这样的:(aandb)xor((candd)or(aandb));到解析器。树的形式是:aandborcanddxoraandb输入将通过命令行或字符串的形式。我只需要解析器。是否有任何资源可以帮助我做到这一点? 最佳答案 这是一个基于BoostSpirit的实现。因为BoostSpirit会根据表达式模板生成递归下降解析器,因此遵守“

c++ - C++中的 bool 表达式(语法)解析器

我想解析一个bool表达式(在C++中)。输入形式:aandbxor(canddoraandb);我只是想把这个表达式解析成一棵树,知道优先规则(not,and,xor,or)。所以上面的表达式应该是这样的:(aandb)xor((candd)or(aandb));到解析器。树的形式是:aandborcanddxoraandb输入将通过命令行或字符串的形式。我只需要解析器。是否有任何资源可以帮助我做到这一点? 最佳答案 这是一个基于BoostSpirit的实现。因为BoostSpirit会根据表达式模板生成递归下降解析器,因此遵守“

c++ - 如何解决编译器警告 'implicit declaration of function memset'

我的c代码使用“memset”和“close”。我已经添加:#include#include#include但我仍然收到这些警告:main.c:259:warning:implicitdeclarationoffunction‘memset’main.c:259:warning:incompatibleimplicitdeclarationofbuilt-infunction‘memset’main.c:268:warning:implicitdeclarationoffunction‘close’main.c:259:warning:incompatibleimplicitdecla

c++ - 如何解决编译器警告 'implicit declaration of function memset'

我的c代码使用“memset”和“close”。我已经添加:#include#include#include但我仍然收到这些警告:main.c:259:warning:implicitdeclarationoffunction‘memset’main.c:259:warning:incompatibleimplicitdeclarationofbuilt-infunction‘memset’main.c:268:warning:implicitdeclarationoffunction‘close’main.c:259:warning:incompatibleimplicitdecla

c++ - 在 std::vector<bool> 上调用 data() 会发生什么?

C++11已实现data()std::vector上的成员函数,它给你一个指向内存数组的指针。这是否意味着模板特化std::vector也有这个成员(member)?由于此特化不以bool*的形式存储数据,调用data()会有什么样的行为?? 最佳答案 它不会编译,除非你的实现有一个非标准的扩展。std::vector的特化,如C++1123.3.7/1中所述,不声明data成员(member)。 关于c++-在std::vector上调用data()会发生什么?,我们在StackOve

c++ - 在 std::vector<bool> 上调用 data() 会发生什么?

C++11已实现data()std::vector上的成员函数,它给你一个指向内存数组的指针。这是否意味着模板特化std::vector也有这个成员(member)?由于此特化不以bool*的形式存储数据,调用data()会有什么样的行为?? 最佳答案 它不会编译,除非你的实现有一个非标准的扩展。std::vector的特化,如C++1123.3.7/1中所述,不声明data成员(member)。 关于c++-在std::vector上调用data()会发生什么?,我们在StackOve

c++ - VS2012 在 64 位目标中 vector <bool> 的性能不佳

对此类进行基准测试:structSieve{std::vectorisPrime;Sieve(intn=1){isPrime.assign(n+1,true);isPrime[0]=isPrime[1]=false;for(inti=2;i当调用大量构造函数时,64位二进制与32位版本(发布版本)的性能(CPU时间)差3倍以上,例如Sieves(100000000);我测试了sizeof(bool)它是1两个版本。当我替换vector与vector64位和32位版本的性能相同。这是为什么呢?这里是S(100000000)的运行时间(Release模式,先32位,后64位)):vecto