Instrukcja switch, czy da sie podac zakres dla case np 0-10 to wypisuje cos itp.. czy trzeba robic case 1: case 2:.... case 10: ?
Nie da się, trzeba robić każdy case.
Ewentualnie, jeśli przedziały są równe i regularne (np. 1-10, 11-20, 21-30 itp.) możesz wprowadzić jakąś zmienną pomocniczą, która będzie miała wartość "dziesiątek" (czyli dla 1-10 będzie miała 0, 11-20 wartość 1, 21-30 wartość 2 itp.) a potem zrobić switch
ale podając tą drugą zmienną jako wartość porównywaną.
Jeśli te przedziały są różnych rozmiarów, albo z innego powodu nie da się ich tak prosto określić, to zamiast robić case 1: case 2: itp.
, lepiej zrobić coś w stylu if (X>0 && X<11)
.
GCC ma takie rozszerzenie
#include <iostream>
int main(int argc, char **argv) {
int i = 10;
switch(i) {
case 0 ... 100:
std::cout << "OK\n";
break;
default:
std::cout << "NOT OK\n";
}
}
$ g++ test.cpp -o test
$ ./test
OK
Wyjątki (liczby spoza zakresów) zrób jako poszególne case'y. A w default zrób if'ami zakresy.
Ja bym zrobił unorderewd_map na zakresy, następnie unordered_map na metody
Jak to ogromne zakresy to moze zwykla mapa i szukanko lower_bound.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.