0 Tage Serie
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 block
if (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'.