Ok, consider this common idiom that most of us have used many times (I assume):
class FooBarDictionary
{
    private Dictionary<String, FooBar> fooBars;
    ...
    FooBar GetOrCreate(String key)
    {
        FooBar fooBar;
        if (!fooBars.TryGetValue(key, out fooBar))
        {
            fooBar = new FooBar();
            fooBars.Add(key, fooBar);
        }
        return fooBar;
    }
}
Does it have any kind of established name?
(Yes, it's written in C#, but it can be "easily" transferred to C++. Hence that tag.)