我有一个用c ++编写的代码,我不理解这一行的含义:
X = R[i] & X;
X和R都是载体。
我知道运算符&
会返回向量X
的地址,但我不了解与R[i]
的相关性。
谁能帮我?提前谢谢。
答案 0 :(得分:4)
在这种情况下,&是二进制按位AND运算符。
更多相关信息:http://www.cprogramming.com/tutorial/bitwise_operators.html
答案 1 :(得分:3)
你是对的,作为一元运算符,&
获取其操作数的地址。
然而,这里它是一个二元运算符:"按位和"运营商。结果是通过设置在其两个操作数中设置的每个位而获得的值。如果你喜欢模糊不清的单词来掩盖符号,它也可以写成bitand
。
还有相应的赋值运算符;代码可以等效地编写为
X &= R[i];
注意:这个答案假设X
是整数类型。但是,你说它是一个"向量&#34 ;;在这种情况下,必须为该类型定义operator &
的重载,并在此处使用。据推测,它不是标准的矢量类型,因为它没有这样的过载。
答案 2 :(得分:1)
如果有人像这样重载了运算符,它会起作用:
std::vector< T > operator &( T t, std::vector< T > const& vec );
对于任何T或他们为所有T定义模板。
任何实现的人都可能想要实现operator &=
,这会以相同的方式修改向量并避免复制,但是一个的存在不会自动生成另一个。