отображение<строка, вектор <пара > > возврат в пару?

#c #vector #stdmap #std-pair #push-back

#c #вектор #stdmap #std-pair #возврат

Вопрос:

У меня есть эта map<string, vector <pair<int, int> > > переменная, и я возвращаю значение, но code::blocks сообщает мне, что у pair нет функции-члена с именем 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> > >amp;)'
  

Комментарии:

1. Похоже, вы пытаетесь переместить a map в vector pair . Это не сработает.

2. о черт. я нашел это. оказывается, это была карта. вау

3. Пожалуйста, отметьте, какой из них является ответом.

4. @pcbabu пожалуйста, не отключайте

Ответ №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 структура?

Комментарии:

1. это просто набор общедоступных переменных (я знаю, что это не очень хорошая практика). двумя переменными здесь являются string day и pair <int, int> T

Ответ №3:

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