LINUX.ORG.RU

передача массивов «на лету»

 ,


0

1

Доброго времени суток!

Есть огромный двумерный вектор вида

vector<vector<Vector3D> >(n, vector<Vector3D>(N));

Но одна из стандартных структур библиотеки GSL (gsl_monte_function) просит на вход функцию, которая в переменных принимает массив типа double *.

Есть ли способ, не переписывая стандартную функцию под себя и не создавая дополнительный одномерный массив «на лету», переправлять обращения (чтение/запись) к двумерному вектору?

★★
Ответ на: комментарий от annulen

и значит встроить прямыми способами перенаправление к другим элементам массива - никак?

aido ★★
() автор топика
Ответ на: комментарий от aido

Чтобы передать в функцию double*, нужно его иметь. В твоей структуре непрерывного массива double нет.

annulen ★★★★★
()
Ответ на: комментарий от aido

В пространстве ядра можно (теоретически) перепрограммировать на ходу MMU, и таким образом перенаправить виртуальные адреса внутри диапазона массива в нужные ячейки. С точки зрения железа этот способ действительно прямой :)

annulen ★★★★★
()
Ответ на: комментарий от annulen

В пространстве ядра можно (теоретически) перепрограммировать на ходу MMU, и таким образом перенаправить виртуальные адреса внутри диапазона массива в нужные ячейки. С точки зрения железа этот способ действительно прямой :)

Это можно сделать и в пространстве пользователя, mmap(2). Но только с данными размером кратным размеру страницы.

slovazap ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.