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).