当我们尝试使用键访问映射容器中的对象而该对象不存在时,它会使用默认构造函数自动构造。
我想知道有没有办法使用另一个构造函数,例如,一个参数?
我个人认为这种行为很奇怪,但如果你真的想这样做,我建议明确写下你想要的:
例如:
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;
}
}
不要依赖自动插入。