przesunięcie bitowe części tablicy

0

Witam, szukam rozwiązania już przez dłuższy czas i nie mogę go znaleźć, czy jest możliwość przesunięcia części tablicy np. dokładniej mówiąc mam mniej więcej taki kod :

T[]={1,2,3,0,4,5};
int tym=T[4];
for (int i=4;i>0;i--)
{
   T[i]=T[i-1];
}
T[0]=tym;

w kodzie mogłem się pomylić, chciałem tylko zobrazować mniej więcej jak działa mój własny
w wyniku mam otrzymać : T[]={0,1,2,3,4,5}

czy jest możliwość przesunięcia bitowego części tej tablicy zamiast przypisywać kolejno wartości ?

0
#include <cstring>

std::memmove(&T[1], &T[0], 3*sizeof(int)); // adres początku celu, adres początku źródła, ilość bajtów
T[0] = 0;

albo

#include <algorithm>

std::copy(&T[0], &T[3], &T[1]); // adres początku źródła, adres tuż za końcem źródła, adres docelowy
T[0] = 0;

ale to wcale nie musi być szybsze od zwykłej pętli.

0

Ogólnie jeżeli to są małe tablice i w całym programie czas kopiowania nie jest dominujący (np. <20 % jakiegoś większego programu) to się nie przejmuj. W przypadku gdy tablice są duże to spróbuj użyć innej struktury danych, żeby uniknąć kopiowania (to zależy od problemu, w którym to potrzebujesz).

1 użytkowników online, w tym zalogowanych: 0, gości: 1