Wyszukiwanie i zwracanie wartości w mapie za pomocą wyrażenia lambda

0

Witam, mam nastepujące pytanie. Chciałbym przechować pewne powiązane ze sobą wartości w mapie, a następnie wyszukać.
Konkretnie, mam 3 wartości, czas, tryb pracy i zasięg. Tryb pracy jest powiązany z zasięgiem więc przechowuję to w parze, natomiast dana para wartości jest powiązana z czasem. I teraz tak, otrzymuję dane TRYB - ZASIĘG i chciałbym, żeby zwróciło mi odpowiednią wartość czasu.
Czy da się to zrobić jakoś prościej, zwięźlej (wyrażenia lambda?) niż za pomocą pętli for i porównywania przekazanych stringów, tak jak to napisałem poniżej?

#include <iostream>
#include <map>

using namespace std;

int retTime(const std::map<int, std::pair<string, string>> &foo, string a, string b) {

    for (auto &x : foo) {
        if (x.second.first == a && x.second.second == b)
            return x.first;
    }
    
    return -1;
}

int main(int argc, char** argv) {

    std::map<int, std::pair<string, string>> foo = {
        {100,  {"A", "1"}},
        {200,  {"B", "2"}},
        {300,  {"C", "3"}},
        {400,  {"D", "4"}},
        {500,  {"E", "5"}},
        {600,  {"F", "6"}}
    };
    
    cout << retTime(foo, "E", "5") << endl;

    return 0;
}
2

odwroc mape... miej pair<> jako klucz i niech mapa szuka po tym pair i zwroci Ci czas

0

Eh.. dzięki, bangla wszystko.

1 użytkowników online, w tym zalogowanych: 0, gości: 1