cpp / intermediate
Snippet
Initialisierung mit begrenztem Gültigkeitsbereich in Bedingungen
Seit C++17 ermöglicht die 'if'-Anweisung mit Initialisierer das Deklarieren und Initialisieren einer Variable, deren Gültigkeitsbereich streng auf die 'if'- und 'else'-Zweige beschränkt ist. Dies verhindert, dass Variablen in den umgebenden Bereich „durchsickern“, was die Codesicherheit und Lesbarkeit erhöht.
snippet.cpp
cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>#include <map>int main() {std::map<std::string, int> scores = {{"Alice", 10}, {"Bob", 20}};// C++17 'if' with initializer: 'it' is only visible inside this blockif (auto it = scores.find("Alice"); it != scores.end()) {std::cout << "Found: " << it->second << std::endl;} else {std::cout << "Not found" << std::endl;}return 0;}
Erklärung
1
if (auto it = scores.find("Alice"); it != scores.end())
Deklariert 'it' und prüft die Bedingung in einer Zeile. 'it' existiert nur innerhalb dieses 'if/else'.