Алгоритм эффективного перемещения содержимого вектора - PullRequest
0 голосов
/ 27 июня 2018

У меня есть вектор измерения 3, значение которого будет постоянно меняться, например, если я удалю содержимое позиции 0, я хочу переместить оставшиеся ячейки содержимого остальных ячеек, чтобы начать с 0.

В настоящее время я делаю это таким образом (код Java), но я чувствую, что это очень неэффективно.

aux = posy[1];
posy[0] = aux;
aux = posy[2];
posy[1] = aux;
posy[2] = 0;

Есть ли другой, более эффективный способ сделать это?

1 Ответ

0 голосов
/ 27 июня 2018

Вам не нужны никакие вспомогательные переменные.

posy[0] = posy[1];
posy[1] = posy[2];
posy[2] = 0;

Для движения в обратном направлении вам нужно будет сделать это в обратном порядке.

Другие улучшения невозможны.

Если бы у вас было много элементов (скажем, пять элементов), я бы порекомендовал вам заглянуть в класс ArrayDeque. Это позволяет вставлять и удалять в обоих концах без смещения элементов. Вероятно, он реализован с индексом, указывающим на каждый конец, как @Jacob G. в комментарии, предложенном для этого. Всего три элемента вы можете считать излишним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...