std :: mapear correspondência parcial para a chave

Eu tenho um std :: map e quero procurar uma chave usando uma substring. For exampe

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

Quero pesquisar a posição que contém a subcadeia "Marl" e não "Marlon". É possível? Quão

EDIT: sem bibliotecas de impulso!

questionAnswers(8)

yourAnswerToTheQuestion