std :: map具有成员函数
template <class P> pair<iterator,bool> insert (P&& val);
我们使用的像这样:
my_map.insert(std::make_pair(k, v));
问题是,为什么没有insert()
的变体只需要一个密钥和一个值,即
pair<iterator,bool> insert (K&& key, V&& value);
(当然K和V是地图的模板参数)我们将使用例如像这样:
my_map.insert(k, v);
在我看来,完全合理。
答案 0 :(得分:2)
在C ++ 11中添加了所有容器的emplace
成员,map
具有签名
template< class... Args >
std::pair<iterator,bool> emplace( Args&&... args );
答案 1 :(得分:0)
如果您正在寻找更明显的语法,您可以使用键和值作为单独的实体执行相同的插入,如下所示:
my_map[k] = v;
当然,这是两个独立的操作。插入后跟一个赋值,因此它可能不如单个插入一样有效。但是,地图商店再次将其条目存储为成对,因此调用insert(k, v)
函数可能最终会创建pair<k, v>
。