我正在阅读Carmack的快速反平方根算法,并注意到这一点:
float x;
// ... //
int i = *(int*)&x;
Run Code Online (Sandbox Code Playgroud)
为什么有人会选择使用这种奇怪的铸造而不仅仅是以下?
int i = (int)x;
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个返回向量的实用函数.返回的向量将始终具有相同的条目.我用它来过滤enum(Directions),以便客户端可以获得所需的子集.
以下是我希望如何解决问题的示例:
std::vector<Directions> horizontalDirections()
{
static std::vector<Directions> toReturn;
if (toReturn.size() == 0)
{
toReturn.push_back(Left);
toReturn.push_back(Right);
}
return toReturn;
}
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?
我正在使用第三方库中的结构将参数传递给库函数.
我希望有一个构造函数可以让我快速创建一个结构,但库不提供一个.
有没有办法在库外部定义我可以在自己的代码中使用的构造函数?如果没有,那么其他人是否会看到一个优雅的解决方案?
我的动机是我会节省一些速度,因为我不必两次构造每个结构成员.
此外,我的代码更具可读性,因为我可以将结构创建压缩成一行而不是多行.
我想离开这个:
Point newPoint;
newPoint.x = someXValue;
newPoint.y = someYValue;
Run Code Online (Sandbox Code Playgroud)
对此:
Point newPoint(someXValue, someYValue);
Run Code Online (Sandbox Code Playgroud)