0 Tage Serie
cpp / intermediate
Snippet

Eingrenzung des Variablen-Scopes in Bedingungen

C++17 führte bedingte Anweisungen mit Initialisierungen ein. Dies ermöglicht es, eine Variable innerhalb des Scopes der if-Anweisung zu initialisieren, was den Namensraum sauber hält und die versehentliche Wiederverwendung von Iterator-Variablen verhindert.

snippet.cpp
cpp
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <vector>
int main() {
std::vector<int> nums = {1, 2, 3};
if (auto it = nums.begin(); it != nums.end()) {
std::cout << "First element: " << *it << std::endl;
}
// 'it' is not accessible here
return 0;
}
Erklärung
1
if (auto it = nums.begin(); it != nums.end())
Initialisiert 'it' und prüft die Bedingung in einer Zeile; 'it' ist nur innerhalb des if/else-Blocks gültig.