exponenta event banner

Копирование массивов данных C++ MATLAB

matlab::data::Array поддерживает семантику копирования и перемещения. Копии Array объекты создают общие копии данных. В следующем коде C++ переменные B и C являются копиями matlab::data::CharArray A; все три переменные указывают на одни и те же данные.

#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;
}

Array поддерживает семантику копирования при записи. Копии Array не используются совместно при выполнении операции записи. В предыдущем примере изменение переменной B создает копию CharArray с обновленными данными. Однако A и C остаются общими копиями.

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

Массивы данных C++ MATLAB ® поддерживают семантику перемещения. При передаче переменной с помощью перемещения копия переменной отсутствует.

Избегайте ненужного копирования данных

При индексировании или использовании итератора в массиве только для чтения рекомендуется объявить массив как const. В противном случае функции API могут создать копию массива в ожидании возможной операции копирования при записи.

См. также