map <string,vector =“”<pair <int,=“”int =“”>&gt; &GT;推回成对?</string,>

时间:2011-04-13 20:29:52

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

我有这个map<string, vector <pair<int, int> > >变量并且我正在推回一个值,但是code :: blocks告诉我该对没有一个名为push_back的成员函数。我该怎么做才能让它推回而不是pair<>.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> > >&)'

3 个答案:

答案 0 :(得分:4)

不确定你的问题。

以下代码对我来说很好:

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;

答案 1 :(得分:3)

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

答案 2 :(得分:2)

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