Ali obstaja način, kako ugotoviti, koliko vrednosti ima polje? Prav tako bi lahko ugotovil, ali sem dosegel konec polja ali ne.
Če imate v mislih polje v slogu C, lahko naredite nekaj takega:
int a[7];
std::cout << "Length of array = " << (sizeof(a)/sizeof(*a)) << std::endl;
Vendar to ne deluje pri kazalcih, tj. ne bo delovalo za nobenega od naslednjih primerov:
int *p = new int[7];
std::cout << "Length of array = " << (sizeof(p)/sizeof(*p)) << std::endl;
ali:
void func(int *p)
{
std::cout << "Length of array = " << (sizeof(p)/sizeof(*p)) << std::endl;
}
int a[7];
func(a);
Če želite takšno obnašanje, morate v C++ uporabiti razred vsebnika; verjetno std::vector
.
Z vnosom sizeof( myArray )
boste dobili skupno število dodeljenih bajtov za to polje. Število elementov v polju lahko nato ugotovite tako, da ga delite z velikostjo enega elementa v polju: sizeof( myArray[0] )
Ali obstaja način, kako ugotoviti, koliko vrednosti ima polje?
Da!
Poskusite sizeof(array)/sizeof(array[0])
Delovalo bi tudi ugotavljanje, ali sem dosegel konec polja ali ne.
Ne vidim nobenega načina za to, razen če je vaše polje polje znakov (tj. niz).
P.S: V C++ vedno uporabljajte std::vector
. Obstaja več vgrajenih funkcij in razširjena funkcionalnost.