map <string, vector <pair <int, int>>> возвращение в пару? - PullRequest
3 голосов
/ 14 апреля 2011

У меня есть эта 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 ]

4 голосов
/ 14 апреля 2011

Не уверен в вашей проблеме.

Следующий код прекрасно работает для меня:

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;
3 голосов
/ 14 апреля 2011

Сообщение указывает, что вы пытаетесь оттолкнуть std::map, а не пару. Как выглядит ваша data структура?

2 голосов
/ 14 апреля 2011

Векторы имеют метод push_back (). Скорее всего, data [x] .PAIR не относится к паре типов. Какой тип данных [x] .PAIR? Если вы преобразуете данные [x] .PAIR в пару, это должно сработать.

...