Это мой первый пост, надеюсь, я буду соответствовать стандартам...
Я перевожу на c++ (в котором я совсем новичок) программу, изначально написанную на MATLAB из соображений эффективности. Фрагмент кода, над которым я сейчас работаю, возобновляет доступ к различным индексам вектора (матрицы) за один шаг. Например, если M1 — это матрица размера, скажем, 10x15, программа определит новую матрицу следующим образом:
idxs1 = [1 2 3];
idxs2 = [1 2 3 4 5];
M2 = M1 (idxs1 , idxs2);
результирующий M2 в виде матрицы размера 3x5. Теперь я предполагаю, что MATLAB на самом деле делает доступ один за другим к различным местам M1, заданным индексами, а затем создает M2, переупорядочивая множество полученного содержимого, и все это очень эффективно.
Мой вопрос: как я могу воспроизвести такой механизм в c++? Насколько я знаю, нет прямого доступа к различным индексам массива подряд, а используемый мной цикл for
кажется довольно громоздким. Может быть, есть какой-то разумный способ сделать это, не требуя «слишком много» процессорного времени? Кроме того, в образовательных целях я был бы признателен, если бы кто-нибудь объяснил, что на самом деле делает MATLAB при выполнении такой операции.
Заранее благодарим и приносим извинения за возможные неудобства!
P.S. На всякий случай, если это что-то добавит к вопросу, я работаю с файлами MEX, чтобы связать оба языка. P.S2: Кстати, я нашел несколько связанных вопросов, но относительно других языков: