动态分配随机特征VectorXd

时间:2016-04-05 23:09:54

标签: c++ eigen eigen3

在特征中分配随机化的VectorXd如下:

VectorXd z = VectorXd::Random(10000);

但是,我不确定如何动态分配相同的Vector:

VectorXd* z = new VectorXd::Random(10000); // error: expected type-specifier

因为VectorXdtypedef。我可以使用另一个构造函数,但我怀疑这是不必要的和低效的:

VectorXd* z = new VectorXd(VectorXd::Random(10000)); // compiles

1 个答案:

答案 0 :(得分:2)

Eigen::VectorXd是一个容器,它将为自己的内容(元素数组)动态分配所需的内存,因此以下所有内容都可以工作:

VectorXd* z1 = new VectorXd(VectorXd::Random(10)); // compiles
std::cout << "z1:\n" << z1->transpose() << "\n\n";

VectorXd* z2 = new VectorXd(); // also compiles
z2->setRandom(10);
std::cout << "z2:\n" << z2->transpose() << "\n\n";

VectorXd* z3 = new VectorXd(); // compiles as well
*z3 = VectorXd::Random(10);
std::cout << "z3:\n" << z3->transpose() << "\n\n";

对于大多数特征对象都是如此,但大小不是动态的(例如Eigen::Vector3d)除外。