cpp / intermediate
Snippet
Initialisierungen in Auswahl-Anweisungen
C++17 führte die Möglichkeit ein, eine Variable direkt innerhalb der Bedingung einer 'if'- oder 'switch'-Anweisung zu initialisieren. Dies beschränkt den Gültigkeitsbereich der Variablen auf den Block, verhindert die Verschmutzung des Namensraums und macht den Code robuster und lesbarer.
snippet.cpp
cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>#include <vector>#include <algorithm>int main() {std::vector<int> data = {1, 5, 8, 12, 15};// C++17 'if' with initializerif (auto it = std::find(data.begin(), data.end(), 8); it != data.end()) {std::cout << "Found value at index: " << std::distance(data.begin(), it) << "\n";} else {std::cout << "Value not found\n";}// 'it' is no longer in scope herereturn 0;}
Erklärung
1
if (auto it = std::find(data.begin(), data.end(), 8); it != data.end())
Initialisiert 'it' und prüft die Bedingung in einer Zeile; 'it' ist nur innerhalb der if/else-Blöcke gültig.