Частичное совпадение ключа a std :: map

У меня есть std :: map , и я хочу найти ключ с помощью подстроки. Например, у меня есть следующий код:

#include <iostream>
#include <map>
#include <string>
using namespace std;

typedef std::map<std::string, std::string> TStrStrMap;
typedef std::pair<std::string, std::string> TStrStrPair;

int main(int argc, char *argv[])
{
    TStrStrMap tMap;

    tMap.insert(TStrStrPair("John", "AA"));
    tMap.insert(TStrStrPair("Mary", "BBB"));
    tMap.insert(TStrStrPair("Mother", "A"));
    tMap.insert(TStrStrPair("Marlon", "C"));

    return 0;
}

Теперь я хочу найти позицию, которая содержит подстроку «Marl», а не «Marlon», если «Marla» хранится на карте. Я хочу найти что-то, что начинается на «Марл». Мне нужно найти не более одной позиции. Это возможно? Если да, то как?

Я не хочу использовать какие-либо библиотеки Boost!

23
задан honk 12 September 2019 в 11:18
поделиться