#include <map>
#include <string>
#include <iostream>
int main() {
std::map<std::string, std::string> myMap{
{"John", "AA"}, {"Mary", "BBB"}, {"Mother", "A"}, {"Marlon", "C"}, {"Marla", "D"}
};
std::string prefix("Marl");
std::cout << "First match:" << std::endl;
auto it = myMap.lower_bound(prefix);
if (it != std::end(myMap) && it->first.compare(0, prefix.size(), prefix) == 0)
std::cout << it->first << ": " << it->second << std::endl;
std::cout << std::endl << "All matches:" << std::endl;
for (it = myMap.lower_bound(prefix); it != std::end(myMap) && it->first.compare(0, prefix.size(), prefix) == 0; ++it)
std::cout << it->first << ": " << it->second << std::endl;
return 0;
}
I2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKaW50IG1haW4oKSB7CiAgICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IG15TWFwewogICAgICAgIHsiSm9obiIsICJBQSJ9LCB7Ik1hcnkiLCAiQkJCIn0sIHsiTW90aGVyIiwgIkEifSwgeyJNYXJsb24iLCAiQyJ9LCB7Ik1hcmxhIiwgIkQifQogICAgfTsKICAgIHN0ZDo6c3RyaW5nIHByZWZpeCgiTWFybCIpOwoKICAgIHN0ZDo6Y291dCA8PCAiRmlyc3QgbWF0Y2g6IiA8PCBzdGQ6OmVuZGw7CgogICAgYXV0byBpdCA9IG15TWFwLmxvd2VyX2JvdW5kKHByZWZpeCk7CiAgICBpZiAoaXQgIT0gc3RkOjplbmQobXlNYXApICYmIGl0LT5maXJzdC5jb21wYXJlKDAsIHByZWZpeC5zaXplKCksIHByZWZpeCkgPT0gMCkKICAgICAgICBzdGQ6OmNvdXQgPDwgaXQtPmZpcnN0IDw8ICI6ICIgPDwgaXQtPnNlY29uZCA8PCBzdGQ6OmVuZGw7CgogICAgc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbCA8PCAiQWxsIG1hdGNoZXM6IiA8PCBzdGQ6OmVuZGw7CgogICAgZm9yIChpdCA9IG15TWFwLmxvd2VyX2JvdW5kKHByZWZpeCk7IGl0ICE9IHN0ZDo6ZW5kKG15TWFwKSAmJiBpdC0+Zmlyc3QuY29tcGFyZSgwLCBwcmVmaXguc2l6ZSgpLCBwcmVmaXgpID09IDA7ICsraXQpCiAgICAgICAgc3RkOjpjb3V0IDw8IGl0LT5maXJzdCA8PCAiOiAiIDw8IGl0LT5zZWNvbmQgPDwgc3RkOjplbmRsOwoKCXJldHVybiAwOwp9