Przechodzenie tablicy - koncepcja Stride

Uwaga! Informacje na tej stronie mają ponad 5 lat. Nadal je udostępniam, ale prawdopodobnie nie odzwierciedlają one mojej aktualnej wiedzy ani przekonań.

# Przechodzenie tablicy - koncepcja Stride

11:20
Sun
28
Sep 2008

Jeśli piszemy funkcję, która ma przejść po kolejnych wektorach, to najprościej wydaje się przekazać po prostu tablicę wektorów:

void DoSth(const vec3 Arr[], size_t ArrLen)
{
  for (size_t i = 0; i < ArrLen; i++)
    DoSthWithVec(Arr[i]);
}

Istnieje pewien genialny pomysł, który uczyni tą funkcję bardziej elastyczną. Polega na przekazaniu jej Stride - kroku, mówiącego o ile bajtów trzeba przesuwać wskaźnik:

void DoSth(const void *Data, size_t ArrLen, int Stride)
{
  const char *Bytes = (const char*)Data;
  for (size_t i = 0; i < ArrLen; i++)
  {
    DoSthWithVec( *(const vec3*)Bytes );
    Bytes += Stride;
  }
}

To pozwala m.in.:

To jeden z tych drobnych algorytmów, których niestety nikt nigdzie nie naucza. Każdy musi je gdzieś wypatrzeć przy okazji (albo samemu wymyślić, jeśli ma do tego łeb :)

Comments | #c++ #algorithms Share

Comments

STAT NO AD
[Stat] [STAT NO AD] [Download] [Dropbox] [pub] [Mirror]
Copyright © 2004-2017