Spec-Zone.ru › Eigen3

Eigen::Map

template<typename PlainObjectType, int MapOptions, typename StrideType>
class Eigen::Map< PlainObjectType, MapOptions, StrideType >

Матричное или векторное выражение, отображающее существующий массив данных.

Параметры шаблона
PlainObjectType эквивалентный тип матрицы для отображаемых данных
MapOptions указывают выравнивание указателя в байтах. Может принимать значения: Aligned128, Aligned64, Aligned32, Aligned16, Aligned8 или Unaligned. По умолчанию Unaligned.
StrideType необязательно указывает шаги. По умолчанию Map предполагает структуру памяти обычного, непрерывного массива. Это можно изменить, указав шаги. Передаваемый здесь тип должен быть специализацией шаблона Stride, см. примеры ниже.

Этот класс представляет матричное или векторное выражение, отображающее существующий массив данных. Он может использоваться для обеспечения интерфейса Eigen без каких-либо накладных расходов с не-Eigen структурами данных, такими как обычные массивы C или структуры из других библиотек. По умолчанию предполагается, что данные непрерывно расположены в памяти. Однако вы можете изменить это, явно указав внутренние и внешние шаги.

Вот пример простого отображения непрерывного массива как матрицы в порядке хранения по столбцам:

int array[9];
for(int i = 0; i < 9; ++i) array[i] = i;
cout << Map<Matrix3i>(array) << endl;

Вывод:

0 3 6
1 4 7
2 5 8

Если вам нужно отобразить несмежные массивы, вы можете сделать это, указав шаги:

Вот пример отображения массива как вектора, указав внутренний шаг, то есть приращение указателя между двумя последовательными коэффициентами. Здесь мы указываем внутренний шаг как постоянное значение времени компиляции.

int array[12];
for(int i = 0; i < 12; ++i) array[i] = i;
cout << Map<VectorXi, 0, InnerStride<2> >
         (array, 6) // the inner stride has already been passed as template parameter
     << endl;

Вывод:

 0
 2
 4
 6
 8
10

Вот пример отображения массива с указанием внешнего шага. Здесь, поскольку мы отображаем матрицу в порядке хранения по столбцам, "внешний шаг" означает приращение указателя между двумя последовательными столбцами. Здесь мы указываем внешний шаг как параметр времени выполнения. Обратите внимание, что здесь OuterStride<> - это короткая версия OuterStride<Dynamic>, так как параметр шаблона по умолчанию OuterStride - Dynamic.

int array[12];
for(int i = 0; i < 12; ++i) array[i] = i;
cout << Map<MatrixXi, 0, OuterStride<> >(array, 3, 3, OuterStride<>(4)) << endl;

Вывод:

 0  4  8
 1  5  9
 2  6 10

Для получения более подробной информации и примера указания как внутреннего, так и внешнего шага, см. класс Stride.

Подсказка: чтобы изменить массив данных, отображаемый объектом Map, можно использовать синтаксис размещения new в C++:

Пример:

int data[] = {1,2,3,4,5,6,7,8,9};
Map<RowVectorXi> v(data,4);
cout << "The mapped vector v is: " << v << "\n";
new (&v) Map<RowVectorXi>(data+4,5);
cout << "Now v is: " << v << "\n";

Вывод:

The mapped vector v is: 1 2 3 4
Now v is: 5 6 7 8 9

Этот класс является типом возвращаемого значения PlainObjectBase::Map(), но также может использоваться непосредственно.

См. также
PlainObjectBase::Map(), Порядки хранения
Inheritance graph
Map (PointerArgType dataPtr, const StrideType &stride=StrideType())
Map (PointerArgType dataPtr, Index rows, Index cols, const StrideType &stride=StrideType())
Map (PointerArgType dataPtr, Index size, const StrideType &stride=StrideType())

Map() [1/3]

template<typename PlainObjectType , int MapOptions, typename StrideType >
Eigen::Map< PlainObjectType, MapOptions, StrideType >::Map ( PointerArgType dataPtr,
const StrideType & stride = StrideType()
)
inlineexplicit

Конструктор в случае фиксированного размера.

Параметры
dataPtr указатель на отображаемый массив
stride необязательный объект Stride, передающий шаги.

Map() [2/3]

template<typename PlainObjectType , int MapOptions, typename StrideType >
Eigen::Map< PlainObjectType, MapOptions, StrideType >::Map ( PointerArgType dataPtr,
Index size,
const StrideType & stride = StrideType()
)
inline

Конструктор в случае динамического размера вектора.

Параметры
dataPtr указатель на отображаемый массив
size размер векторного выражения
stride необязательный объект Stride, передающий шаги.

Map() [3/3]

template<typename PlainObjectType , int MapOptions, typename StrideType >
Eigen::Map< PlainObjectType, MapOptions, StrideType >::Map ( PointerArgType dataPtr,
Index rows,
Index cols,
const StrideType & stride = StrideType()
)
inline

Конструктор в случае динамического размера матрицы.

Параметры
dataPtr указатель на отображаемый массив
rows количество строк матричного выражения
cols количество столбцов матричного выражения
stride необязательный объект Stride, передающий шаги.

The documentation for this class was generated from the following file:
  • Map.h

© Eigen.
Licensed under the MPL2 License.
https://eigen.tuxfamily.org/dox/classEigen_1_1Map.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API