我有一个我想要放入地图的值类型.它有一个很好的默认复制构造函数,但没有默认的构造函数.
我相信只要我远离使用operator[],一切都会好的.
但是我最终得到了像这样的非常丑陋的结构来实际插入一个对象.(我认为如果已经存在该键的值,则插入失败).
// equivalent to m[5]=x but without default construction
std::map<int,X>::iterator it = m.find(5);
if( it != m.end() )
{
m->second = x;
}
else
{
m->insert( std::make_pair(5,x) );
}
Run Code Online (Sandbox Code Playgroud)
我相信它会扫描地图两次,看起来也很难看.
是否有更简洁/更有效的方法来做到这一点?
c++ ×1