我正在阅读 Hacker News 和 this article上来了。它包含一个光线追踪器,代码写在名片背面。我认为将 c++ 转换为 python 将是一个很好的学术挑战,但有几个概念我坚持不懈。
首先,这个函数出现:i T(v o,v d,f& t,v& n){...}
翻译成int Tracer(vector o, vector d, float& t, vector& n){...}
float&
是什么意思意思是?我知道在其他地方&
用作 ==
是这样吗?你能用 C++ 做到这一点吗?
其次,我注意到这三行:
for(i k=19;k--;) //For each columns of objects
for(i j=9;j--;) //For each line on that columns
if(G[j]&1<<k){
我知道 <<
是位移位,我假设 &
是==
. for 循环就像一个 for 循环在另一个循环中一样吗?
最后,这一行:v p(13,13,13);
我不太确定它的作用。它是否创建了一个由 p 标记的类,该类使用默认值 13、13、13 扩展 v( vector )?
这些可能是愚蠢的问题,但我想看看我是否能理解这一点,但我的搜索没有找到任何结果。提前致谢!
最佳答案
What does the
float&
mean?
在这里,&
表示“引用”,因此参数通过引用传递。
I know that in other places
&
is used as a==
is that the case here?
&
在不同的上下文中表示不同的事物,但它绝不表示 ==
.在这种情况下,它也不是运算符(operator);它是类型规范的一部分,这意味着它是一个引用类型。
I know the << is a the bit shift, and I assume the
&
is==
不,它是一个位与运算符。结果设置了它的位,其中一个位在两个操作数中都设置了。在这里,用 1<<k
作为一个操作数,结果是 G[j]
的第 kth 位;所以这会测试该位是否已设置。
Are the for loops just like one for loop in an other?
是的。如果您不在 for 循环的主体周围使用大括号,那么主体就是单个语句。所以在这种情况下,第一个循环的主体是第二个循环。为了明确这一点,我建议缩进循环体,并使用大括号,无论它们是否绝对必要。但当然,我不会(故意)编写混淆代码。
Finally, this line:
v p(13,13,13);
v
是一个带有三个参数的构造函数的类。这声明了一个名为 p
的变量, 类型 v
, 使用该构造函数初始化;即三个坐标被初始化为13
.
关于c++ - 混淆的 C++ 翻译 : float&, 两个 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18986863/