相关疑难解决方法(0)

如何将std :: map与没有默认构造函数的值一起使用?

我有一个我想要放入地图的值类型.它有一个很好的默认复制构造函数,但没有默认的构造函数.

我相信只要我远离使用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++

6
推荐指数
1
解决办法
651
查看次数

标签 统计

c++ ×1