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

How to let map container create a new object using different constructor?

本文关键字:创建 一个 对象 新对象 构造函数 映射      更新时间:2023-10-16

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

我想知道是否有一种方法可以使用另一个构造函数,例如,只有一个参数?

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

例如:

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

不要依赖于自动插入

相关文章: