Muszę połączyć kilkadziesiąt poleceń które mają być wykonywane w konsoli na wzór basha w sensie że nazwa polecenia, opcje i wszystkie parametry mają być podawane w 1 linii np find C:\ szukany_plik. I teraz jak to widzę - wczytuje komendę do stringa, sprawdzam odpowiednia maską ( boost::regex ), wyciągam ze stringa 1 człon który jest nazwą polecenia, dalej przeszukuje std::vector w którym przechowuje wszystkie polecenia( vector dlatego że oferuje najszybsze wyszukiwanie ) i teraz chciałbym wywołać odpowiednią metodę przekazując jej pozostałe parametry jak w tym przypadku połączyć odpowiednią metodę z nazwą plecenia? przechowywać w vectorze std::pair a w nim nazwę polecenia i wskaźnik na metodę? czy jest lepszy sposób? Prosiłbym o jakieś nakierowanie czy sposób w jaki chce to wykonać jest prawidłowy

- Rejestracja:ponad 12 lat
- Ostatnio:ponad 4 lata
- Postów:2412
http://www.cplusplus.com/reference/unordered_map/unordered_map/
http://en.cppreference.com/w/cpp/utility/functional/mem_fn
Polecalbym taka kombinacje. Ew. mem_fn
mozesz zastapic jakims wzorcem Command.

- Rejestracja:około 21 lat
- Ostatnio:prawie 3 lata
- Lokalizacja:Space: the final frontier
- Postów:26433
przeszukuje std::vector w którym przechowuje wszystkie polecenia( vector dlatego że oferuje najszybsze wyszukiwanie )
mam nadzieję że żartujesz albo miałeś na myśli std::set albo std::unordered_set...
vector przeszukasz w O(n), set w O(logn) a unordered_set w O(1)...
Wiązanie nazwy z funkcją zrób za pomocą mapy, tak jak napisano wyżej.
- Rejestracja:prawie 13 lat
- Ostatnio:ponad 10 lat
- Postów:271
"Dostęp do poszczególnych elementów w std::vector jest szybki - odbywa się w czasie stałym 0(1), w kontenerze set w czasie logarytmicznym 0(log(N)) czyli wolniej niż w vectorze..." I żeby nie było że się kłócę ! ;) Raczej słucham tego co mówią starsi stażem koledzy ;) ale w tym wypadku to co mówicie jest sprzeczne z tym co mówi dokumentacja...
edit ::
rozumiem - jeżeli znam miejsce gdzie znajduje się szukany element to szybszy jest vector ale mylące jest to "Dostęp / wydajność szukania" ;)

- Rejestracja:około 21 lat
- Ostatnio:prawie 3 lata
- Lokalizacja:Space: the final frontier
- Postów:26433
Panie, to ty po prostu nie rozumiesz co czytasz. DOSTĘP to znaczy odwołanie się wektor[1] albo wektor[10]. Tak jak w zwykłej tablicy wykonujesz to w czasie stałym. Ale WYSZUKANIE czegoś w tablicy to jest zupełnie co innego! Żeby sprawdzić czy element znajduje się w tablicy/wektorze musisz przelecieć każdy jej element czyli wykonać O(n) operacji. W zbiorze opartym o drzewo wystarczy O(logn) operacji a w zbiorze opartym o tablicę hashującą O(1). Gdybyś miał posortowany wektor/tablicę to mógłbyś to też zrobić w czasie O(logn) za pomocą szukania połówkowego, ale wstawianie byłoby wtedy bardziej kosztowne.
A potem słucha sie marudzenia studentów "a po co mam się uczyć o tych algorytmach i strukturach danych skoro to już wszystko jest zaimplementowane", a tu sie okazuje że nie dość że ktoś nie wie jak to jest zaimplementowane to jeszcze nie potrafi używać...
Shalom