0 Tage Serie
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.