C ++ - 指针问题

时间:2014-08-27 11:25:21

标签: c++ pointers vector

我有一个用c ++编写的代码,我不理解这一行的含义:

 X = R[i] & X;

X和R都是载体。 我知道运算符&会返回向量X的地址,但我不了解与R[i]的相关性。 谁能帮我?提前谢谢。

3 个答案:

答案 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 &=,这会以相同的方式修改向量并避免复制,但是一个的存在不会自动生成另一个。