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;
}