オブジェクトが存在しないときにキーを使用してマップ コンテナー内のオブジェクトにアクセスしようとすると、デフォルトのコンストラクターを使用して自動的に構築されます。
たとえば、1つのパラメーターで別のコンストラクターを使用する方法はありますか?
私は個人的にこの動作は奇妙だと思いますが、本当にそうしたい場合は、あなたが望むものを明示的に書くことをお勧めします:
例えば:
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;
}
}
自動挿入に依存しないでください。