#include <iostream>
#include <map>
#include <tuple>
using namespace std;
int main() {
std::map<int, std::map<int,int>> m{
{ 1, { { 1, 11}, { 2, 12} } },
{ 2, { { 2, 22}, { 4, 24} } },
{ 3, { { 5, 35} } }
};
cout << "Less simple search: "<<std::endl;
auto r1 = m.find (1);
if (r1!=m.end()) {
auto r12 = r1->second.find(2);
if (r12!=r1->second.end())
std::cout<<"Found r1 -> "<< r12->second << std::endl;
else std::cout<<"second component for r1 not found"<<std::endl;
}
else std::cout<<"r1 not found !"<<std::endl;
cout << "Flexibilized range search: "<<std::endl;
int x=2;
auto r3 = m.find (x);
if (r3==m.end())
std::cout<<"r3 not found"<<std::endl;
else for (auto r : r3->second) {
std::cout<<"In range -> "<< r.second << std::endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8dHVwbGU+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKCQogICAgc3RkOjptYXA8aW50LCBzdGQ6Om1hcDxpbnQsaW50Pj4gbXsKICAgICAgICB7IDEsIHsgeyAxLCAxMX0sIHsgMiwgMTJ9IH0gfSwKICAgICAgICB7IDIsIHsgeyAyLCAyMn0sIHsgNCwgMjR9IH0gfSwgCiAgICAgICAgeyAzLCB7IHsgNSwgMzV9IH0gfQogICAgfTsKCiAgICBjb3V0IDw8ICJMZXNzIHNpbXBsZSBzZWFyY2g6ICI8PHN0ZDo6ZW5kbDsKICAgIGF1dG8gcjEgPSBtLmZpbmQgKDEpOwogICAgaWYgKHIxIT1tLmVuZCgpKSB7CiAgICAJYXV0byByMTIgPSByMS0+c2Vjb25kLmZpbmQoMik7IAogICAgCWlmIChyMTIhPXIxLT5zZWNvbmQuZW5kKCkpCiAgICAgICAgICAgIHN0ZDo6Y291dDw8IkZvdW5kIHIxIC0+ICI8PCByMTItPnNlY29uZCA8PCBzdGQ6OmVuZGw7CiAgICAgICAgZWxzZSBzdGQ6OmNvdXQ8PCJzZWNvbmQgY29tcG9uZW50IGZvciByMSBub3QgZm91bmQiPDxzdGQ6OmVuZGw7IAogICAgfQogICAgZWxzZSBzdGQ6OmNvdXQ8PCJyMSBub3QgZm91bmQgISI8PHN0ZDo6ZW5kbDsKCiAgICBjb3V0IDw8ICJGbGV4aWJpbGl6ZWQgcmFuZ2Ugc2VhcmNoOiAiPDxzdGQ6OmVuZGw7CiAgICBpbnQgeD0yOyAKICAgIGF1dG8gcjMgPSBtLmZpbmQgKHgpOwogICAgaWYgKHIzPT1tLmVuZCgpKSAKICAgICAgICBzdGQ6OmNvdXQ8PCJyMyBub3QgZm91bmQiPDxzdGQ6OmVuZGw7IAogICAgZWxzZSBmb3IgKGF1dG8gciA6IHIzLT5zZWNvbmQpIHsKICAgICAgICBzdGQ6OmNvdXQ8PCJJbiByYW5nZSAtPiAiPDwgci5zZWNvbmQgPDwgc3RkOjplbmRsOwogICAgfQogCiAgICByZXR1cm4gMDsKfQ==