【问题标题】:map<string, vector <pair<int, int> > > pushing back into pair?map<string, vector <pair<int, int> > > 推回成对?
【发布时间】:2011-04-13 20:29:52
【问题描述】:

我有这个map&lt;string, vector &lt;pair&lt;int, int&gt; &gt; &gt; 变量并且我正在推回一个值,但是code::blocks 告诉我该pair 没有名为push_back 的成员函数。我应该怎么做才能让它推回对而不是pair&lt;&gt;.push_back()

这基本上就是我在做的事情:

map<string, vector <pair<int, int> > > T;
for(int x = 0; x < data.size(); x++)
     T[data[x].str].push_back(data[x].PAIR)

错误是:

error: no matching function for call to 'std::vector<std::pair<int, int>,
  std::allocator<std::pair<int, int> > >::push_back(std::map<int, int, 
    std::less<int>, std::allocator<std::pair<const int, int> > >&)'

【问题讨论】:

  • 似乎您正试图将 map 推送到 pairvector 上。那是行不通的。
  • 哦,拍摄。我找到了。原来 T 是一张地图。哇
  • 请标出答案。
  • @pcbabu 请不要坏死

标签: c++ vector stdmap std-pair push-back


【解决方案1】:

不确定你的问题。

以下代码对我来说很好用:

map<string, vector <pair<int, int> > > T;
pair<int, int> p;
p.first = 1;
p.second = 10;
T["Hello"].push_back(p);
cout << T["Hello"][0].first << endl;

【讨论】:

    【解决方案2】:

    该消息表明您正在尝试回推std::map,而不是一对。你的data 结构是什么样的?

    【讨论】:

    • 它只是一堆公共变量(我知道这不是好的做法)。这里的两个变量是string daypair &lt;int, int&gt; T
    【解决方案3】:

    向量确实有 push_back() 方法。最有可能的 data[x].PAIR 不是类型对。 data[x].PAIR 是什么类型?如果您将 data[x].PAIR 转换为配对,它应该可以工作。

    【讨论】:

      猜你喜欢
      • 2023-03-15
      • 2014-03-03
      • 1970-01-01
      • 2011-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多