Main Content

Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Acceso a elementos de contenedor de matriz de datos de C++

La API de datos de C++ y los tipos son contenedores para otras matrices de datos.MATLAB®CellArrayStructArrayMATLAB Los elementos de los contenedores son ellos mismos matrices. Hay dos maneras de acceder a estos elementos:

  • Obtenga una referencia a los elementos del contenedor.

  • Obtenga una copia compartida de los elementos del contenedor.

Modificar por referencia

Para modificar los datos en su lugar, utilice una referencia al elemento contenedor que desea modificar. Por ejemplo, este código modifica los valores de la primera celda del objeto.CellArray La primera celda es una matriz lógica de 1 por 3.

using namespace matlab::data;  ArrayFactory f;  auto cellArr = f.createCellArray({2,2},      f.createArray<bool>({1,3},{true, true, false}),                                                f.createCharArray("A char Array"),     f.createScalar<int32_t>(-3374),     f.createArray<double>({1,3},{2.2, 3.3, -4.2}));  // Get a reference to the first cell of the cell array. TypedArrayRef<bool> ref = cellArr[0][0];   // Use the reference to modify the values in the cell. for (auto& e : ref) {     e = false; } 

Después de ejecutar este código, el primer elemento de la matriz de celdas es una matriz lógica de 1 por 3 con cada elemento establecido en.false

Copiar datos del contenedor

Puede acceder a los datos de un contenedor mediante una copia compartida. Una copia compartida le permite obtener los datos del contenedor o modificar los datos en una copia que no se comparte cuando se modifican. Cambiar los datos en una copia no cambia los datos en el contenedor.

Por ejemplo, este código crea una copia de la última celda en el, que es una matriz doble de 1 por 3.CellArray La copia se modifica estableciendo el primer elemento de la matriz doble en el valor numérico.5.5 Después de esta modificación, el valor de la no se modifica y la copia ya no es un valor compartido.CellArray

using namespace matlab::data;  ArrayFactory f;  auto cellArr = f.createCellArray({2,2},      f.createArray<bool>({1,3},{true, true, false}),     f.createCharArray("A cell Array"),     f.createScalar<int32_t>(-3374),     f.createArray<double>({1,3},{2.2, 3.3, -4.2}));  // Get a shared copy of the last element of the cell array. TypedArray<double> cpy = cellArr[1][1]; cpy[0] = 5.5; 

Temas relacionados