So finden Sie die Array-Größe in C++

Jinku Hu 12 Oktober 2023
  1. Verwenden Sie den sizeof-Operator, um die Größe eines Arrays im C-Stil in C++ zu berechnen
  2. Verwenden Sie den std::array Container, um Array-Daten zu speichern und ihre Größe zu berechnen
  3. Verwenden Sie den std::vector Container, um Array-Daten zu speichern und ihre Größe zu berechnen
  4. Verwendung von die std::size Methode zur Berechnung der Array-Größe
So finden Sie die Array-Größe in C++

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;
}
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

Verwandter Artikel - C++ Array