没有插入功能的Multimap插入错误

Multimap insertion error without insert function

我不允许在向量或数组等多映射中插入值 使用 [ ] 运算符。有一个用于在多映射中插入值的插入函数,但是如何使用 [ ] 运算符插入值。

谢谢。

#include<bits/stdc++.h>
using namespace std;
int main()
{
    multimap<int,int> mp;

    mp[0] = -1;

    return 0;
}

multimap 的全部意义在于您可以在同一个键上有多个值。记住这一点,mp[0] 应该是什么意思?

std::map<>std::unordered_map<> 中,它仅表示“该键的值”,不用费力。但是 std::multimap<> 就没那么简单了。

如果 mp[0] 在使用 multimap 时要 return 某些东西,它必须是一些奇异的代理对象,松散地引用该特定键的项目“列表” ,这会很快变得混乱,特别是因为其他地图类型只是 return 一个简单的参考。完全没有那个运算符更简单。

如果您想在多地图中插入一个项目,请像您一直做的那样使用 insert()。顺便说一句,这对于常规地图也很有效,如果你知道你正在进行插入,而不是可能替换该键处已经存在的元素,实际上会稍微干净一些。

mp.insert(0, -1);

我建议您参考 map and multimap 的文档,了解每个容器可以做什么和不能做什么的具体细节。

在 multimap 中,您可以使用相同的键指向不同的值,因为有多个键您无法指定您需要哪个值。 键在数组中是唯一的,所以你可以准确地指向一个特定的值, 映射也是如此,并且不允许重复,只有唯一的键值对,所以使用 m[key]=value 是有意义的。 因此,在 multimap 中,您具有指向不同值的相同键,因此您不能使用此表示法来指向值。