如何让map容器使用不同的构造函数创建一个新对象?

时间:2013-03-29 06:23:53

标签: c++ stl

当我们尝试使用键访问地图容器中的对象而该对象不存在时,它将使用默认构造函数自动构造。

我想知道有没有办法使用另一个构造函数,例如,使用一个参数?

1 个答案:

答案 0 :(得分:2)

我个人认为这种行为很奇怪,但如果你真的想这样做,我建议明确写出你想要的东西:

例如:

typedef std::map<int, std::string> MapType;

std::string FindSomething(int key, const std::string& extraParameter)
{
    MapType::iterator It = TheMap.find(key);

    if (It == TheMap.end())
    {
        TheMap.insert(std::make_pair(key, extraparameter));

        return extraParameter;
    }
    else
    {
        return It->second;
    }
}

不要依赖于自动插入。