【问题标题】:Using vector as an argument in STL map在 STL 映射中使用向量作为参数
【发布时间】:2019-08-30 08:12:58
【问题描述】:

我一直在尝试用 1 个键链接 2 个值,而我发现的一种方法是使用向量来做同样的事情。我写了以下代码

#include<iostream>
#include<vector>
#include<map>
#include<stdlib.h>

using namespace std; 

map<int,vector<int> map1;

void insertInMap(int q,int a,int b)
{
    vector<int> v1;
    v1.push_back(a);
    v1.push_back(b);
    map1.insert(q,v1);
}
int main()
{
    return 0;
}

insertinmap 函数是创建一个向量作为地图的参数。我在初始化列表时遇到错误

错误 - 模板 2 参数无效,模板 4 参数无效。

【问题讨论】:

  • map&lt;int,vector&lt;int&gt; map1; 应该是 map&lt;int,vector&lt;int&gt;&gt; map1;
  • 您可以使用std::pair 插入,例如map1.insert(std::pair&lt;int, vector&lt;int&gt;&gt;(q, v1));

标签: c++ vector stl containers stdmap


【解决方案1】:

在地图中,insert() 期望插入一个元素作为参数。映射的元素是由键和值组成的一对。所以:

map1.insert(make_pair(q,v1));

在地图中插入元素更方便的方法是使用赋值运算符结合索引:

map1[q] = v1; 

注意:您忘记了地图定义中的结束 &gt;,但我想这是一个错字

【讨论】:

  • map1.emplace(q, v1);
  • @Galik 确实!
  • @Jejo 如果向量总是只有 2 个元素,那么这对绝对是更好的选择。在我的回答中,我想继续关注阻止 OP 的 insert() 的具体用法。
猜你喜欢
  • 2012-02-12
  • 2019-10-19
  • 2011-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多