[C++] Szybkie zerowanie tablicy[x][y] struktur

Witam. Mam tablice struktur

struct oko

{

	bool jest;

	short dzieci[4][2];								

	short ile_dzieci;								

};


struct oko tablica[2000][2000];

Musze zerowac wielokrotenie ta tablice, a w zasadzie tylko boola jest. Narazie robie to przez

memset(tablica, 0, sizeof(tablica) );

Jest to zdecydowanie za długie rozwiązanie (zeruje 40 000 000 elementow zamiast 4 000 000).

Jak zrobic, aby w ten sposob zerowaly sie tylko boole .jest ?

memset jest prawdopodobnie najszybszą metodą. Jednak nie jestem pewien czy we wszystkich implementacjach false to same zera w zapisie bitowym (jeśli o to Ci chodzi, aby tam była wartość false. Choć możliwe, że właśnie tak jest i tylko niepotrzebnie się martwię). Druga sprawa to taka, że tak duży obszar danych trzeba by było rezerwować dynamicznie, kiedy chciałem uruchomić kod który podałeś dostaje Segmentation fault.

#include 


using namespace std;


const int MAX_A = 2000;

const int MAX_B = 2000;


struct oko

{

   bool jest;

   short dzieci[4][2];                        

   short ile_dzieci;                        

};


struct oko tablica[MAX_A][MAX_B];


int main()

{

	int i,j;

	for(i = 0; i++; i < MAX_A)

	{

		for(j = 0; j++; j < MAX_B)

		{

			int a,b;

			tablica[i][j].jest = false;

			tablica[i][j].ile_dzieci = 0;

			for(a = 0; a++; a < 4)

			{

				for(b = 0; b++; b < 2)

				{

					tablica[i][j].dzieci[a][b] = 0;

				}

			}

		}

	}

	system("pause");

	return 0;

}

Porównaj z tradycyjnym rozwiązaniem i sprawdź które szybsze , oraz czy opłaca ci się poświęcać kompatybilność dla szybkości (memset napewno będzie szybszy).