Собственные несколько ссылок/представлений одних и тех же данных?

Я хотел бы, чтобы два разных контейнера Eigen указывали на одни и те же данные, где одна ссылка представляет собой другое представление/подмножество данных.

Что-то вроде этого:

Eigen::VectorXd v1(3);
v1 << 1,2,3;

Eigen::VectorXd v1(2);
v2.data = &v1(0); //pseudo code 

v1(1) = 5;

cout << v2(1) << endl;

Где значение v2(1) теперь должно быть равно 5.

Заранее спасибо.


person Willeman    schedule 02.09.2014    source источник


Ответы (1)


Нашел возможное решение:

Eigen::VectorXd v1(3);
v1 << 1,2,3;

Eigen::Map<Eigen::VectorXd> v2(v1.head(0).data(),v1.size()-1);

//v2 prints as { 1, 2 } 

v1(1) = 9;

//v2 now  prints as { 1, 9 }    

Аналогичный вопрос найден здесь: Получить матричные представления/блоки из Eigen::VectorXd без копирования (общая память)

Кажется, я смогу использовать новый контейнер карты почти так же, как и вектор, поэтому я думаю, что он станет подходящей заменой.

person Willeman    schedule 02.09.2014