So finden Sie die Array-Größe in C++
-
Verwenden Sie den
sizeof
-Operator, um die Größe eines Arrays im C-Stil in C++ zu berechnen -
Verwenden Sie den
std::array
Container, um Array-Daten zu speichern und ihre Größe zu berechnen -
Verwenden Sie den
std::vector
Container, um Array-Daten zu speichern und ihre Größe zu berechnen -
Verwendung von die
std::size
Methode zur Berechnung der Array-Größe
Dieser Artikel stellt vor, wie man die Array
-Größe mit verschiedenen C++-Methoden erhält.
Verwenden Sie den sizeof
-Operator, um die Größe eines Arrays im C-Stil in C++ zu berechnen
Sehen wir uns zunächst einmal an, was passiert, wenn wir versuchen, die Größe von Arrays im C-Stil zu ermitteln. Für dieses Beispiel definieren wir eine c_array
-Variable und initialisieren sie mit 10 Integer-Werten. Um die Größe dieses Arrays zu berechnen, verwenden wir den sizeof
-Unary-Operator, der die Objektgröße in Bytes zurückgibt. Im Grunde teilen wir die Anzahl der Bytes, die benötigt werden, um das c_array
-Objekt zu speichern, durch die Größe seines einzelnen Elements c_array[0]
:
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
int main() {
int c_array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
cout << "array size: " << sizeof c_array / sizeof c_array[0] << endl;
return 0;
}
Ausgabe:
array size: 10
Wie Sie sehen können, scheint die Ausgabe korrekt zu sein. Lassen Sie uns nun versuchen, eine separate Funktion zu definieren, die das gleiche für uns tut:
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
int get_array_size(int arr[]) { return sizeof arr / sizeof arr[0]; }
int main() {
int c_array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
cout << "array size: " << get_array_size(c_array) << endl;
return 0;
}
Ausgabe:
array size: 2
Wir erhalten die falsche Nummer. Die Verwendung des sizeof
-Operators ist keine zuverlässige Methode, um dieses Problem zu lösen. Damit der sizeof
-Operator korrekt funktioniert, sollte das Array nicht als Funktionsparameter empfangen und nicht dynamisch (auf dem Heap) zugewiesen werden. Um die fehlerhafte Verwendung von sizeof
zu erkennen, werden IDEs normalerweise die fehleranfälligen Code-Abschnitte mit Fusseln versehen, aber Sie können auch Compiler-Flags für die Warnungen angeben, die während der Kompilierung angezeigt werden sollen (z. B. -Wsizeof-pointer-div
oder -Wall
zusammen mit gcc
).
Es gibt keinen universellen Weg, die Größe von Arrays im C-Stil zu berechnen, ohne sich um viele Randfälle zu kümmern, und deshalb gibt es die Klasse std::vector
.
Verwenden Sie den std::array
Container, um Array-Daten zu speichern und ihre Größe zu berechnen
Bevor wir uns mit der Verwendung von std::vector
beschäftigen, sollten wir std::array
erwähnen, mit dem Sie Arrays fester Größe speichern können. Es ist ressourceneffizient und verfügt über eine eingebaute Methode zum Abrufen der Größe namens size()
.
#include <array>
#include <iostream>
using std::array;
using std::cin;
using std::cout;
using std::endl;
int main() {
array<int, 10> arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
cout << "array size: " << arr.size() << endl;
return 0;
}
Verwenden Sie den std::vector
Container, um Array-Daten zu speichern und ihre Größe zu berechnen
Der std::vector
Container kann verwendet werden, um dynamische Arrays zu speichern, und er bietet mehrere Methoden für verschiedene Operationen, einschließlich size()
.
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::vector;
int main() {
vector<int> int_array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
cout << "vector size: " << int_array.size() << endl;
return 0;
}
Verwendung von die std::size
Methode zur Berechnung der Array-Größe
Die std::size
Methode ist Teil der <iterator>
Bibliothek und kann sowohl mit std::array
Daten als auch mit std::vector
arbeiten, wobei die Anzahl der Elemente zurückgegeben wird.
#include <array>
#include <iostream>
#include <vector>
using std::array;
using std::cin;
using std::cout;
using std::endl;
using std::size;
using std::vector;
int main() {
vector<int> int_array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
array<int, 10> arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
cout << "vector size: " << size(int_array) << endl;
cout << "array size: " << size(arr) << endl;
return 0;
}
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook