【发布时间】:2016-05-23 21:02:12
【问题描述】:
为什么std::map 不支持如下插入:
std::map<obj1, obj2> map_int;
void insert_map(obj1 &key, obj2 &val)
{
map_int.insert(key, val);
}
我知道上面是不正确的。我想知道是什么阻止了这样设计插入功能。它比创建一对 IMO 更直观。
【问题讨论】:
-
这不是
map[key] = val所做的吗? -
FWIW,使用 C++11,你应该可以使用
map.intsert({key, val});。 -
@Barmar,如果存在具有给定键的项目,它将替换该值。如果有给定键的项目,
insert将不会替换该值。 -
@Barmar 这还涉及到默认构造一个值——这可能是不可取的或不可能的。
标签: c++ c++11 std c++-standard-library