假设我已经或即将编写一组相关函数.假设他们与数学有关.在组织上,我应该:
MyMath命名空间中并通过它们引用它们MyMath::XYZ()MyMath,并将这些方法设为静态,并引用类似的方法MyMath::XYZ()为什么我会选择一个作为组织我的软件的方法?
我想在我的程序中使用Eigen矩阵库作为线性代数引擎.Eigen使用表达式模板来实现延迟评估并简化循环和计算.
例如:
#include<Eigen/Core>
int main()
{
int size = 40;
// VectorXf is a vector of floats, with dynamic size.
Eigen::VectorXf u(size), v(size), w(size), z(size);
u = 2*v + w + 0.2*z;
}
Run Code Online (Sandbox Code Playgroud)
由于Eigen使用表达式模板,代码如
u = 2*v + w + 0.2*z;
Run Code Online (Sandbox Code Playgroud)
在上面提到的样品中,减少到长度为10的单个环(不是40,浮子被4个块放入调节器中)而不会产生临时的.多么酷啊?
但如果我像这样集成库:
class UsingEigen
{
public:
UsingEigen(const Eigen::VectorXf& data):
data_(data)
{}
UsingEigen operator + (const UsingEigen& adee)const
{
return UsingEigen(data_ + adee.data_);
}
...
private:
Eigen::VectorXf data_;
}
Run Code Online (Sandbox Code Playgroud)
那么表达式就像:
UsingEigen a, b, c, d;
a = b + c …Run Code Online (Sandbox Code Playgroud)