【问题标题】:Multimap insertion error without insert function [closed]没有插入功能的多图插入错误[关闭]
【发布时间】:2021-08-19 21:05:17
【问题描述】:

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

谢谢。

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

    mp[0] = -1;

    return 0;
}

【问题讨论】:

  • 哦,谢谢,那就说明multimap中没有支持这个operator[]的功能

标签: c++ stl dsa


【解决方案1】:

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

std::map&lt;&gt;std::unordered_map&lt;&gt; 中,它只是意味着“那个键的值”,没有汗水。但是对于std::multimap&lt;&gt;,事情就没有那么简单了。

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

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

mp.insert(0, -1);

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

【讨论】:

  • 哦,谢谢,那就说明multimap中没有支持这个operator[]的功能
  • @Gaurav 正确,该运算符根本不存在。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    • 1970-01-01
    • 2021-05-15
    • 2018-01-26
    • 2016-06-20
    • 2016-07-16
    • 2021-12-07
    相关资源
    最近更新 更多