草庐IT

boolean-logic

全部标签

c++ - 在多线程 C++ 应用程序中,我是否需要互斥锁来保护简单的 boolean 值?

我有一个多线程C++应用程序,它使用OpenSceneGraph库进行3D渲染。我计划使用boost::threads将OSG的渲染循环作为一个单独的线程启动,将包含共享状态的数据结构传递给线程。我试图避免任何过于重量级的东西(如互斥锁)进行同步,因为渲染循环需要非常紧凑,而OSG本身试图避免不得不锁定。大多数共享状态是在线程启动之前设置的,并且永远不会改变。我确实有一些需要更改的数据,我计划对其进行双重缓冲。但是,我有一个简单的boolean值,用于指示线程暂停渲染,然后恢复渲染,另一个用于终止它。在这两种情况下,应用程序线程都会设置boolean值,而渲染线程只读取它。我需要同步对

c++ - 链接 boolean 值给出与预期相反的结果

我不假思索地编写了一些代码来检查结构的所有值是否都设置为0。为此我使用了:boolIsValid(){return!(0==year==month==day==hour==minute==second);}其中所有结构成员都是无符号短类型。我将代码用作更大测试的一部分,但注意到它对于不为零的值返回false,对于所有等于零的值返回true-与我的预期相反。我把代码改成了:boolIsValid(){return(0!=year)||(0!=month)||(0!=day)||(0!=hour)||(0!=minute)||(0!=second);}但想知道是什么导致了奇怪的行为。是优先

c++ - boolean 值的排序

在C++或下从C99开始,小于运算符怎么样?为boolean值定义?或者,解释这段代码的行为:#ifndef__cplusplus#include#endif#includeintmain(){boolb=-1;if(b在MSVC10版下,编译为C++代码,GCC4.6.3-ubuntu5编译为C代码,G++4.6.3-1ubuntu5编译为C++代码,你得到的只是false即下面的不等式都是false:(bool)-1下面是true:false 最佳答案 在C++中(我也怀疑在C中),bools比较就像false是0和true是1

c++ - 如何避免错误:在抛出 'std::logic_error' 的实例后调用终止 what(): basic_string::_S_construct null not valid

if(player!=NULL)player->shuffled();我这样做是为了避免将空引用传递给字符串构造函数,但是在编译时仍然会出错。 最佳答案 不知何故,您正在调用std::string构造函数,其中constchar*值为NULL。为了避免这个问题。不要那样做。 关于c++-如何避免错误:在抛出'std::logic_error'的实例后调用终止what():basic_string::_S_constructnullnotvalid,我们在StackOverflow上找到一

c++ - 如何从 8 个 boolean 值中创建一个字节(反之亦然)?

我有8个bool变量,我想将它们“合并”成一个字节。有没有简单/首选的方法来做到这一点?反过来,将一个字节解码为8个独立的boolean值怎么样?我进来假设这不是一个不合理的问题,但由于我无法通过Google找到相关文档,这可能是另一种“你的直觉都错了”的案例。 最佳答案 艰难的道路:unsignedcharToByte(boolb[8]){unsignedcharc=0;for(inti=0;i还有:voidFromByte(unsignedcharc,boolb[8]){for(inti=0;i或者很酷的方式:structBit

python - 使用多个 boolean 列过滤 Pandas 数据框

我正在尝试使用属于df的几个boolean变量来过滤df,但无法这样做。样本数据:A|B|C|DJohnDoe|45|True|FalseJaneSmith|32|False|FalseAlanHolmes|55|False|TrueEricLamar|29|True|TrueC和D列的dtype是boolean值。我想创建一个新的df(df1),其中只有C或D为True的行。它应该是这样的:A|B|C|DJohnDoe|45|True|FalseAlanHolmes|55|False|TrueEricLamar|29|True|True我尝试过类似的方法,但由于无法处理boolean

python - 生成包含随机 boolean 值的大型 numpy 数组的内存有效方法

我需要创建一个包含随机boolean值的大型numpy数组,而不会点击交换。我的笔记本电脑有8GB的RAM。创建(1200,2e6)数组耗时不到2秒并使用2.29GB的RAM:>>>dd=np.ones((1200,int(2e6)),dtype=bool)>>>dd.nbytes/1024./10242288.818359375>>>dd.shape(1200,2000000)对于相对较小的(1200,400e3),np.random.randint仍然相当快,大约需要5秒来生成一个458MB的数组:db=np.array(np.random.randint(2,size=(int(

python - 使用 isinstance 比较 boolean 和 int

有人能给我解释一下为什么isinstance()在以下情况下返回True吗?在编写代码时,我期望False。printisinstance(True,(float,int))True我的猜测是它的Python的内部子类化,零和一-无论是float还是整数-都在用作boolean值时进行评估,但不知道确切的原因。解决这种情况的最pythonic方法是什么?我可以使用type()但在大多数情况下,这被认为不那么Pythonic。 最佳答案 由于历史原因,bool是int的子类,因此True是int的实例。(最初,Python没有bool

python - 在 Python 中使用 format() 方法打印 boolean 值 True/False

我试图打印boolean表达式的真值表。在执行此操作时,我偶然发现了以下内容:>>>format(True,"")#showsTrueinastringrepresentation,sameasstr(True)'True'>>>format(True,"^")#centersTrueinthemiddleoftheoutputstring'1'只要我指定了格式说明符,format()转换True至1.我知道bool是int的子类,所以True计算结果为1:>>>format(True,"d")#showsTrueinadecimalformat'1'但是为什么使用格式说明符会改变'T

python - Pandas:为什么在 boolean 索引后需要双括号来选择列

对于像下面这样的df表,ABCD001111235733128为什么在boolean索引后选择特定列需要双括号?the[['A','C']]partofdf[df['A'] 最佳答案 对于pandas对象(Series、DataFrame),索引操作符[]只接受colname或选择列的列名列表切片或boolean数组来选择行,即它只引用数据框的一维。对于df[[colname(s)]],内括号是列表,外括号是索引运算符,即如果选择两列或多列,则必须使用双括号。对于一个列名,单对括号返回一个系列,而双括号返回一个数据框。另外,df.i