草庐IT

bool_constant

全部标签

C++ OpenMP 和 std::vector<bool>

为什么以下代码对bool的std::vector不起作用(如预期的那样)?boolvector中的某些元素随机为假。对于intvector,一切正常(测试了不止3个循环)。我在ubuntu14.0464位上使用g++4.8.4。#include#includeusingnamespacestd;classTestBool{public:TestBool(){}booltest(){returntrue;}inttestInt(){return10;}};voidtestBVec(vector&bv,size_tloop){cout&iv,size_tloop){couttv(10);s

c++ bool 连接 |=

我想知道连接boolean值的方法。我有时需要的是获取一个标志,以确定对象列表中的至少一个对象是否具有特定的值/状态/被聚焦等等。我的做法是:boolbHasState(false);for(autoo:MyObjectList){bHasState|=(o->state()==SOME_STATE);}我的一些同事总是将其替换为bHasState=bHasState||(o->state()==SOME_STATE);这只是句法上的差异,还是我的方法错误、危险或缓慢? 最佳答案 从评论扩展:这里的主要区别是你的版本总是计算右边的表

c++ - 从 vector 返回 bool&

这个问题在这里已经有了答案:Whyvector::referencedoesn'treturnreferencetobool?(6个答案)关闭9年前。在下面的代码中:classSomeClass{vectori;vectorb;public:int&geti(){returni[0];}bool&getb(){returnb[0];}};如果您注释掉getb(),代码可以正常编译。显然,返回对存储在vector中的int的引用没有问题,但您不能使用bool来实现。这是为什么?

c++ - 将 nullptr 转换为 bool

在C++11之前的日子里,编写以下内容被认为是更好的做法:if(ptr==NULL)而不是:if(!ptr)这有两个原因。它更有效,因为它不需要转换为bool。并且无法保证宏NULL确实会计算为bool值false。这在C++11中仍然适用吗?最好写吗if(ptr==nullptr)而不是if(!ptr)或者现在是二次罚款? 最佳答案 Itismoreefficientbecauseitdidn'tneedtocasttobool.我会在那儿打一个ol'[citation-needed]。我怀疑任何现代编译器都能做到这一点。if(p

c++ - 考试题。关于在法庭上如何处理 bool 值

我正在为即将到来的考试复习,并遇到了这个对我来说没有意义的过去的考试问题。考虑以下主要功能:intmain(){intx=0;cout程序执行时打印如下:x=0,(0准确解释发生了什么。这就是问题所在。据我所知,输出的最后一行应该是“x=10,(0 最佳答案 你期待什么0什么意思?它不检查是否x介于0之间和10,如果那是你的想法。是二元运算符,遵循运算符求值规则(优先级和结合性)。所以0实际上意味着(0.您需要进行两次检查才能获得所需的结果(留给您)。 关于c++-考试题。关于在法庭上如

c++ - Lambda 表达式在 if 语句中返回 bool

直截了当,我想在if()语句中使用lambda表达式返回true或false。我看到这个问题与我有类似的问题:LINK但我找不到答案。所以这是我的示例代码:if([&rel_pose](Eigen::VectorXdpose){return(sqrt(pose(0)*pose(0)+pose(1)*pose(1))当我尝试编译时出现此错误:error:couldnotconvert‘graphslam::GraphSLAM::main_pose_callback(constConstPtr&)::{rel_pose}’from‘graphslam::GraphSLAM::main_po

c++ - 如何将 bool 转换为 BOOL?

我通过这种构造将C++boolean值转换为WindowsAPIboolean值是否安全boolmybool=true;BOOLapiboolean=mybool?TRUE:FALSE;我认为这是肯定的,因为我没有看到任何明显的问题,但我想花点时间问一下,只是因为这可能比看起来更微妙。感谢Dima(温和地)指出我在最初提出问题时的粗心。 最佳答案 你是说boolb;...BOOLapiboolean=b?TRUE:FALSE;如果是这样,那么是的,这会起作用。 关于c++-如何将bool

c++ - WCHAR wszFoo[CONSTANT_BAR] = {0}; <-- {0} 是什么意思?

WCHARwszFoo[CONSTANT_BAR]={0};我从未见过像{0}这样的东西在C++中用作语言的一部分。而且我不知道如何在线搜索这样的问题。这是什么? 最佳答案 参见arrayinitialization.MissinginitializationvaluesusezeroIfanexplicitarraysizeisspecified,butanshorterinitiliazationlistisspecified,theunspecifiedelementsaresettozero.floatpressure[10

c++ - constant 和 reinterpret cast 是否在编译时发生?

我读到过static_cast发生在编译时,dynamic_cast发生在运行时,因此比static_cast慢。dynamic_cast可以返回空指针(当与指针一起使用时)或以其他方式抛出错误的转换异常。我的问题是reinterpret_cast和const_cast是发生在编译时还是运行时?我认为解释转换发生在运行时,因为它的行为类似于dynamic_cast指示转换是否成功。我对么?const_cast是编译时间吗? 最佳答案 动态转换是唯一需要在运行时“计算”的。所有其他类型转换均在编译时计算。static_cast的机器代

c++ - 保留两个具有相反值的 bool 类成员

我计划有两个bool类成员(m_alive&m_dead),这样它们的值总是相反的。这可能看起来有些愚蠢(事实上,它可能只是愚蠢),但正如您在下面的代码中看到的那样,但我真正寻找的是有一种更清晰的方法来根据情况检查对象状态,并且它不必键入!m_alive或!m_dead会很有用。所以,是的,我真的不需要两个成员,但我想不出更简单的方法。我想到的第一个想法是创建一个函数,如果另一个状态也发生变化,它会改变其中一个状态,但我很确定需要有一种更简单、更容易和更快的方式来保持每个都有正确的值。AFAIK,用define做这件事是不可能的,因为它们的数量与我计划创建的不同对象一样多,而且看起来不