cpp / intermediate
Snippet
Auswahlanweisungen mit bereichsbeschränkten Initialisierern
C++17 hat die Möglichkeit eingeführt, eine Variable direkt innerhalb der 'if'- oder 'switch'-Anweisung zu initialisieren. Dies beschränkt den Gültigkeitsbereich der Variable auf den Bedingungsblock, verhindert eine Verschmutzung des Namensraums und macht den Code robuster.
snippet.cpp
cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <map>#include <iostream>#include <string>void find_user(int id) {std::map<int, std::string> users = {{42, "Alice"}};if (auto it = users.find(id); it != users.end()) {std::cout << "Found: " << it->second << "\n";} else {std::cout << "ID " << id << " not present.\n";}// 'it' is not accessible here}
Erklärung
1
if (auto it = users.find(id); it != users.end())
Initialisiert 'it' und prüft die Bedingung in einer einzigen Zeile.
2
it != users.end()
Der Bedingungsteil verwendet die im Initialisierer definierte Variable.