hello,
non effectivement tu peux pas savoir.
Par case, je pense que tu entends case initialisée par l'utilisateur.
Un tableau a normalement ses cases initialisés avec le constructeur par défaut de l'élément (je suis plus trop sûr mais il me semble). Donc un tableau de int devrait contenir que des 0 en C++. de même des chaines vides si c'est un tableau de string. (j'essaie de retrouver une spec)
Si tu veux pouvoir setter une valeur plus tard qu'à l'initialisation et savoir si une valeur a été settée, alors tu peux pas utiliser des types primitifs. (tester MAX_INT, où 0 où -1, etc)
Tu peux par contre stocker tes propres types (cqui utilise pas mal plus de mémoire)
- Code: Tout sélectionner
struct myInt{
int a;
bool setted;
myInt(){setted=false}
void setValue(int val){a=val;setted=true}
bool isSet(){return setted}
}
int main(){
myInt arr[3];
arr[2].setValue(4);
arr[0].isSet();//false
arr[1].isSet();//false
arr[2].isSet();//true and value==4
return 0;
}
à la syntaxe près...
edit: pour C style array, j'ai une fois de plus tord
http://www.cplusplus.com/doc/tutorial/arrays/ By default, regular arrays of local scope (for example, those declared within a function) are left uninitialized. This means that none of its elements are set to any particular value; their contents are undetermined at the point the array is declared.
edit, quant à C++, c'est aussi faux.
http://stackoverflow.com/questions/2376989/why-dont-stdvectors-elements-need-a-default-constructor Les el sont initialisés par copy ctor, sauf le premier qui appel le défaut ctor si vector ctor appelé avec un ordinal