глубокая копия non eigen float* в eigen::MatrixXf

если x является несобственным вектором поплавков, я могу сопоставить его с eigen::MatrixXf с помощью:

MatrixXf x_cen=Map<MatrixXf>(*x,*n,*p);

Но тогда изменения в x_cen будут сообщаться и x, так как они совместно используют память. Я хочу избежать этого. Я хочу глубоко скопировать x в eigen::MatrixXf x_cen, чтобы гарантировать, что изменения, внесенные в x_cen, не будут переданы в x. Как это сделать?


person user189035    schedule 26.01.2013    source источник


Ответы (1)


Ваш код:

MatrixXf x_cen=Map<MatrixXf>(*x,*n,*p);

уже делает глубокую копию! Так что ты хорош. В Eigen нет мелких копий.

Просто для полноты можно назвать объект Map<>, чтобы использовать его как MatrixXf:

Map<MatrixXf> x_cen(*x,*n,*p);

В этом и только в этом случае изменения x_cen будут переданы x.

person ggael    schedule 26.01.2013