Schleifen über ein Array in C++
-
Verwenden einer
for
-Schleife zur Iteration über ein Array - Bereichsbasierte Schleife zur Iteration über ein Array verwenden
-
Verwendung von den
std::for_each
Algorithmus zur Iteration über ein Array
In diesem Artikel wird erklärt, wie man mit verschiedenen Methoden in C++ über ein Array iteriert.
Verwenden einer for
-Schleife zur Iteration über ein Array
Die scheinbare Methode, über Array-Elemente zu iterieren, ist eine for
-Schleife. Sie besteht aus einer dreiteiligen Anweisung, die jeweils durch Kommata getrennt ist. Zuerst sollten wir die Zählervariable - i
initialisieren, die per Design nur einmal ausgeführt wird. Der nächste Teil deklariert eine Bedingung, die bei jeder Iteration ausgewertet wird, und wenn die falsche zurückgegeben wird, hört die Schleife auf zu laufen. In diesem Fall vergleichen wir den Zähler und die Größe des Arrays. Der letzte Teil inkrementiert den Zähler, und er wird ebenfalls bei jedem Schleifenzyklus ausgeführt.
#include <array>
#include <iostream>
using std::array;
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main() {
array<string, 10> str_arr = {"Albatross", "Auklet", "Bluebird", "Blackbird",
"Cowbird", "Dove", "Duck", "Godwit",
"Gull", "Hawk"};
for (size_t i = 0; i < str_arr.size(); ++i) {
cout << str_arr[i] << " - ";
}
cout << endl;
return EXIT_SUCCESS;
}
Ausgabe:
Albatross - Auklet - Bluebird - Blackbird - Cowbird - Dove - Duck - Godwit - Gull - Hawk -
Bereichsbasierte Schleife zur Iteration über ein Array verwenden
Die bereichsbasierte Schleife ist die lesbare Version der traditionellen for
-Schleife. Diese Methode ist eine leistungsfähige Alternative, da sie eine einfache Iteration über komplizierte Container bietet und trotzdem die Flexibilität für den Zugriff auf jedes Element beibehält. Das folgende Code-Beispiel ist die exakte Reimplementierung des vorhergehenden Beispiels:
#include <array>
#include <iostream>
using std::array;
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main() {
array<string, 10> str_arr = {"Albatross", "Auklet", "Bluebird", "Blackbird",
"Cowbird", "Dove", "Duck", "Godwit",
"Gull", "Hawk"};
for (auto &item : str_arr) {
cout << item << " - ";
}
cout << endl;
return EXIT_SUCCESS;
}
Verwendung von den std::for_each
Algorithmus zur Iteration über ein Array
for_each
ist ein leistungsfähiger STL-Algorithmus, um auf Bereichselementen zu operieren und benutzerdefinierte Funktionen anzuwenden. Die ersten beiden Parameter sind das Anfangs- und das letzte Iterationsobjekt des Bereichs, der dritte Parameter ist das Funktionsobjekt. In diesem Fall deklarieren wir ein Funktionsobjekt als lambda
-Ausdruck, der die berechneten Ergebnisse direkt an die Konsole ausgibt. Schließlich können wir die Variable custom_func
als Argument an die Methode for_each
übergeben, um auf Array-Elementen zu operieren.
#include <array>
#include <iostream>
using std::array;
using std::cin;
using std::cout;
using std::endl;
using std::for_each;
using std::string;
int main() {
array<int, 10> int_arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
auto custom_func = [](auto &i) { cout << i * (i + i) << "; "; };
;
for_each(int_arr.begin(), int_arr.end(), custom_func);
cout << endl;
return EXIT_SUCCESS;
}
Ausgabe:
2; 8; 18; 32; 50; 72; 98; 128; 162; 200;
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