Это может быть очень простой вопрос, но он меня действительно беспокоит.В основном я пытаюсь скопировать элементы старого вектора в новый вектор, используя C.
Копия основана на индексном векторе, где каждый элемент в этом векторе представляет индекс элемента встарый векторИндексный вектор не отсортирован.
Например, старый вектор A = [3.4, 2.6, 1.1].
индексный вектор B = [1, 1, 3, 3, 2, 1, 2].
После копирования я ожидаю, что новый вектор будет C = [3.4, 3.4, 1.1, 1.1, 2.6, 3.4, 2.6].
Самый брутальныйРешение, которое я могу придумать, состоит в том, чтобы запустить цикл через B и скопировать соответствующий элемент из A в C. Но когда вектор слишком велик, его стоимость невыносима.
У меня вопрос, есть ли быстрее/ умный способ сделать копию в C в этом случае?
Первоначально код написан на Джулии, и у меня не было проблем с этим.В Юлии я просто использую C = A [B], и это быстро.Кто-нибудь знает, как они это делают?
Добавьте псевдокод C:
float *A = []; # old array
int *B = []; # index array
float *C;
for(i=0;i<length(B);i++)
{
*(C+i) = *(A+*(B+i));
}