immer die Anzahl der Elemente in einer struct
Habe ich ein struct:
struct KeyPair
{
int nNum;
string str;
};
Sagen wir, ich meine initialisieren struct:
KeyPair keys[] = {{0, "tester"},
{2, "yadah"},
{0, "tester"}
};
Ich würde, indem Sie mehrere Instanzen der struct mit verschiedenen Größen. Also für mich nutzen zu können, die es in einer Schleife und Lesen den Inhalt, aber ich habe, um die Anzahl der Elemente in einer struct. Wie bekomme ich die Anzahl der Elemente in der Struktur? In diesem Beispiel habe ich sollten immer 3, da ich initialisiert 3 Paare.
3 von was? (Polsterung)
Warum nicht std::map und Sie erhalten alle Iteratoren, mit zu arbeiten.
Ich denke, Sie wollen die Anzahl der Elemente im array
Sie möchten die Größe der Struktur oder Größe des Arrays? Es ist verwirrend...
Warum nicht std::map und Sie erhalten alle Iteratoren, mit zu arbeiten.
Ich denke, Sie wollen die Anzahl der Elemente im array
keys
, richtig?Sie möchten die Größe der Struktur oder Größe des Arrays? Es ist verwirrend...
InformationsquelleAutor Owen | 2010-11-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werden, wenn Sie versuchen, um berechnen Sie die Anzahl der Elemente der
keys
array können Sie einfach tunsizeof(keys)/sizeof(keys[0])
.Der Punkt ist, dass das Ergebnis
sizeof(keys)
ist die Größe in bytes des Schlüssel-array im Speicher. Dies ist nicht die gleiche wie die Anzahl der Elemente des Arrays, es sei denn, die Elemente sind 1 byte lang. Um die Anzahl der Elemente, die Sie benötigen, dividieren Sie die Anzahl von bytes durch die Größe der element-Typ, diesizeof(keys[0])
zurückgeben wird, die Größe des Datentyps vonkey[0]
.Der wichtige Unterschied hier ist, zu verstehen, dass
sizeof()
verhält sich anders mit arrays und Datentypen. Kombinieren Sie die beiden zu erreichen, was Sie brauchen.http://en.wikipedia.org/wiki/Sizeof#Using_sizeof_with_arrays
sizeof nicht zurück Größe in bytes pro der standard. Der C++ - standard definiert ein "byte" als char. (Dies ist nicht die Bedeutung von "byte", die Sie gewohnt sind, aber der standard ist einheitlich.)
InformationsquelleAutor Luca Matteis
InformationsquelleAutor T33C
Werden, wenn Sie versuchen zu zählen, die Elemente des Arrays haben, können Sie ein makro machen
InformationsquelleAutor Alex Budovski
Du meinst die Anzahl der Elemente in
keys
? In einem solchen Fall können Sieint n = sizeof(keys)/sizeof(keys[0]);
InformationsquelleAutor Naveen
In C++ generell ist es nicht möglich, dies zu tun. Ich schlage vor, mit std::vector.
Den anderen Lösungen zu arbeiten, die in Ihrem spezifischen Fall haben, aber getan werden muss zur compile-Zeit. Arrays, die Sie new oder malloc wird nicht in der Lage sein, diese zu benutzen, tricks.
InformationsquelleAutor robert
Das kann nicht sein, eine allgemein gute Lösung, auf Grund der Struktur Polsterung.
InformationsquelleAutor noname