草庐IT

vec_bool

全部标签

C++ 从 bool 到字符串的隐式转换

我有以下代码,在VisualC++2012中编译。#includevoidfunc(std::stringstr){}voidmy_func(){func(false);}bool值“false”被隐式传递给字符串构造函数string(constchar*_Ptr)然后指针为空(因为false=0)。为什么会编译,是否应该按照C++11标准编译? 最佳答案 MSVC错误地将false视为空指针常量。然而,根据N4140,§4.10[conv.ptr]/1(强调我的):Anullpointerconstantisanintegerli

c++ - "warning C4800: ' int' : forcing value to bool 'true' or 'false' "不同场景下的不同行为

我无法理解此警告的以下行为。case1:boolread=(33&3);//NoWarningissuedbyvs2013case2:intb=33;boolread=(b&3);//NowcompilerisgeneratingC4800warning.为什么编译器在情况2中生成警告,而在情况1中不发出任何警告。 最佳答案 C4800是一个性能警告-在运行时将整数强制转换为bool会产生成本。这与逻辑正确性无关。最常见的强制转换(和警告)发生在您与使用整数(VC++中的BOOL)作为bool值的代码交互时。第一个代码段中的编译时强

c++ - 如何在 C++ 中创建一个连续的 bool vector ?

如何制作bool的连续vectorC++中的数量?我读了很多关于使用std::vector的警告我想将面具存储到std::vector.为了使我的目的更明确一点,我想对我的std::vector应用统计信息对于bool中的那些元素为真的vector。为了以最佳性能做到这一点,我希望vector是连续的。 最佳答案 您需要知道人们认为std::vector存在哪些具体问题,因为它们不一定适用于您的情况。其中最重要的可能是它不一定是连续的。这里contigous可能用词不当。为整个vector分配的内存可能仍处于连续block中,但是,

c++ - std::list<bool> 的实现

是否std::list具有类似的疯狂,像std::vector这样的明确特化?是std::vector唯一受此影响的C++标准库容器?是否有某种traits我可以用来检测特化吗? 最佳答案 如标准所示,std::vector有它自己的段落来规定它的实现。std::list的要求有一个不存在,但这并不意味着不允许实现不但是有一个。据我所知,std::vector是唯一需要具有bool特化的容器. 关于c++-std::list的实现,我们在StackOverflow上找到一个类似的问题:

c++ - 是否可以定义稍后可以评估的 bool 表达式?

希望实现一种动态表达式,稍后我可以在调用时计算bool值。condition&&=condition2;//notevaluatedjustyetcondition||=condition3;if(condition)//evaluatednowdothis;elsedothis;例如,我在我的代码中使用相同的条件,如果我可以只调整一个语句或添加更多语句,即使在程序运行时也会更容易。conditions=(x>50&&y>200)&&(type==MONKEY);conditions&&=(x稍后在代码中if(conditions)cout编辑:应在if语句中评估条件。

c++ - 未在 lambda 内部调用显式运算符 bool — MSVC 错误?

#includestructT{explicitoperatorbool(){returntrue;}};intmain(){Tt;if(t){}//OKautol=[&](){if(t){}//Error};}MSVC的行为在这里似乎奇怪地不一致;OK行和Error行之间的唯一区别是它们在lambda中。这是错误吗? 最佳答案 Isthisabug?是的,绝对是。您的程序没有任何问题,bool转换运算符在两种情况下都应被调用。 关于c++-未在lambda内部调用显式运算符bool—M

c++ - 为什么显式运算符 bool 让我转换为任何原始类型?

structtest{explicitoperatorbool()const{returntrue;}};intmain(){testa;floatb=static_cast(a);//b=1}这是正确的,还是一个VS错误?如果按照设计,这里的最佳做法是什么?我应该/可以做些什么来防止这种情况发生吗? 最佳答案 这看起来像一个VS错误:显式运算符不应该应用于bool以外的类型。在这两个C++11mode中都无法在gcc中编译和C++98mode.CanIdoanythingtopreventthis?您已经完成了您需要做的事情-这是

c++ - 在 C++ 标准中哪里说 sizeof(wchar_t) <= sizeof(long) 和 sizeof(bool) <= sizeof(long)?

先生。Stroustrup在他的新书(TCPL第4版)第149页写下了以下内容1我在标准中找不到任何支持上面最后一个不等式的内容。我可以对sizeof(bool)说同样的话.编辑:在3.9.1p5你会发现:Typewchar_tshallhavethesamesize,signedness,andalignmentrequirements(3.11)asoneoftheotherintegraltypes,calleditsunderlyingtype.支持不平等sizeof(wchar_t)但不是sizeof(wchar_t)但是我找不到任何可以证实的东西sizeof(bool)

c++ - 在 C、C++ 中将 bool 变量与 1 和 0 进行比较是否安全?

这个问题在这里已经有了答案:CanIassume(bool)true==(int)1foranyC++compiler?(5个答案)关闭8年前。考虑代码boolf(){return42;}if(f()==1)printf("hello");C(带有stdbool.h的C99+)和C++标准是否保证会打印“hello”?做boola=x;总是等同于boola=x?1:0;

c++ - 避免在静态 bool 值上使用 if 语句进行逻辑决策

我有一个类,其成员itemType仅设置一次且从未修改过,但在许多if语句中使用它来决定调用哪个函数。由于itemType仅设置一次,因此有办法避免类中其他地方的if语句。这将简化和清理代码,并且作为奖励还将节省if检查的开销。我正在考虑一个指针函数,我可以根据itemType值在构造函数中初始化它。有没有更好的替代方法?请注意原始类和代码库很大,我无法根据项目类型创建子类。enumItemTypes{ItemTypeA,ItemTypeB,};classItemProcessing{public://ThisfunctioniscalledhundredsoftimesvoidPro