Рейтинг:
9
CPallini
Вы забыли list
Попробуйте, например
#include <iostream>
#include <map>
#include <tuple>
#include <list>
using namespace std;
int main()
{
std::map<int, list<std::tuple<int, int> >> groups;
groups[0] = list<std::tuple<int,int>>{make_tuple(3,4)};
cout << get<1>(groups[0].front()) << endl;
}
Philippe Mori
Отсутствует какая-либо нового прежде чем конструктор списка...
Member 11807654
когда я пишу " groups[0] = list<std::tuple<int,int> {make_tuple(3,4)};", это дает ошибку:"имя типа не разрешено", а когда я пишу "groups[0] = new list< std::tuple<int, int> {make_tuple(3,4)};" это дает ошибку:"ошибка C2679: binary '=' : не найден оператор, который принимает правый операнд типа 'std::list< _ty> *' (или нет приемлемого преобразования)"
CPallini
Зачем нам нужно выделять список в куче?
CPallini
Какую версию Visual Studio вы используете?
Такой фрагмент кода компилируется и отлично работает как в Linux с g++ 5.4, так и в Windows с CL 18.00 (Visual Studio 2013).
Member 11807654
visual studio 2012
Member 11807654
Я просто хочу создать словарь, а затем использовать его. есть ли другой способ сделать это?
CPallini
Возможно, такая версия компилятора не поддерживает равномерную инициализацию. Попробуй
#include <iostream>
#включать
#включить & lt;кортеж>
#включить & lt;список>
использование пространства имен std;
тап_п()
{
СТД::МАП&ЛТ;инт, список<СТД::кортеж&ЛТ;инт инт&ГТ; &ГТ;&ГТ; группы;
список<СТД::кортеж&ЛТ;инт инт&ГТ;&ГТ; л = список<СТД::кортеж&ЛТ;инт инт&ГТ;&ГТ;();
l. push_front (make_tuple(3, 4));
группы[0] = l;
соиь <&ЛТ; вам&ЛТ;1&ГТ;(групп[0].стойка()) &ЛТ;< епси;
}
Во всяком случае, я бы использовал более современный компилятор.
Member 11807654
большое спасибо. это прекрасно работает и для меня :)
Philippe Mori
Ну, я не обратил внимания, что это была ценность. Обычно, когда у меня есть такой встроенный контейнер, я бы использовал push_back (или push_front, если требуется обратный порядок), подобный комментарию CPallini ниже. Обычно нет особого смысла заменять весь список целиком, так как обычно вы хотите обновить существующий список.
Member 11807654
Большое спасибо!. согласно вашему объяснению, я должен использовать push_back :)
Member 11807654
извините меня. знаете ли вы, как я могу найти максимум вторых значений в одном элементе словаря? Например, если группы[0] этого словаря имеют кортежи {2,3},{4,2}, {5,7}, я хочу найти max{3,2,7}=7.