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.

Copiar matrices de datos de C++MATLAB

La clase admite la semántica de copiar y mover.matlab::data::Array Las copias de objetos crean copias de datos compartidas.Array En el siguiente código de C++, las variables y son copias de; las tres variables apuntan a los mismos datos.BCmatlab::data::CharArrayA

#include "MatlabDataArray.hpp"  int main() {     using namespace matlab::data;     ArrayFactory factory;     CharArray A = factory.createCharArray("This is a char array.");      // Create a shared copy of A     CharArray B(A);      CharArray C = factory.createCharArray("");     // Copy the contents of A into C     C = A;      return 0; }

admite la semántica de copia en escritura.Array Las copias de un objeto no se comparten cuando se realiza una operación de escritura.Array En el ejemplo anterior, al modificar la variable se crea una copia del objeto con datos actualizados.BCharArray Sin embargo, y permanecen copias compartidas.AC

   // B becomes unshared once modified     B[20] = char16_t(33);

Las matrices de datos de C++ admiten la semántica de movimiento.MATLAB® Cuando se pasa una variable utilizando Move, no hay ninguna copia de la variable.

Evitar la copia innecesaria de datos

Si indexa o usa un iterador en una matriz para fines de solo lectura, la mejor práctica es declarar la matriz como.const De lo contrario, las funciones de la API podrían crear una copia de la matriz en previsión de una posible operación de copia en escritura.

Consulte también