Przy użyciu C++ i STL, czy ktoś wie, jak przechowywać tablice liczby całkowitej jako węzły na liście STL lub wektor? Mam nieznaną liczbę par liczb, które muszę przechowywać, a pochodząc z innych języków, myślałem, że będę używał jakiejś struktury danych typu listowego lub wektorowego ... ale mam pewne problemy. Jestem w 100% pewna, że popełniam oczywisty błąd dla początkujących w C++ i że ktoś, kto rzeczywiście zna ten język, rzuci okiem na to, co próbuję zrobić i będzie w stanie mnie wyprostować.Jak przechowywać tablice na liście STL?
Oto, co próbowałem. Deklarując listę jak działa tak:
stl::list<int[2]> my_list;
A potem mogę łatwo zrobić tablicę dwóch elementów, tak jak poniżej:
int foo[2] = {1,2};
To kompiluje i działa dobrze. Jednak jak tylko próbuję dodać foo
do mojej listy, tak jak poniżej:
my_list.push_back(foo);
dostaję cały gnarly zestaw błędów kompilatora, z których żadna nie naprawdę zrozumieć (moje C++ - fu jest prawie nieistniejąca):
/usr/include/c++/4.0.0/ext/new_allocator.h: In member function ‘void __gnu_cxx::new_allocator<_Tp>::construct(_Tp*, const _Tp&) [with _Tp = int [2]]’:
/usr/include/c++/4.0.0/bits/stl_list.h:440: instantiated from ‘std::_List_node<_Tp>* std::list<_Tp, _Alloc>::_M_create_node(const _Tp&) [with _Tp = int [2], _Alloc = std::allocator<int [2]>]’
/usr/include/c++/4.0.0/bits/stl_list.h:1151: instantiated from ‘void std::list<_Tp, _Alloc>::_M_insert(std::_List_iterator<_Tp>, const _Tp&) [with _Tp = int [2], _Alloc = std::allocator<int [2]>]’
/usr/include/c++/4.0.0/bits/stl_list.h:773: instantiated from ‘void std::list<_Tp, _Alloc>::push_back(const _Tp&) [with _Tp = int [2], _Alloc = std::allocator<int [2]>]’
test.cpp:5: instantiated from here
/usr/include/c++/4.0.0/ext/new_allocator.h:104: error: ISO C++ forbids initialization in array new
Więc ktoś ma pomysły co do tego, co robię źle tutaj? Wszelkie wskazówki (bez gry słów) byłyby najbardziej pomocne. Czy nie jest możliwe przechowywanie tablic na std :: list? Czy powinienem używać struct? Czy brakuje mi gdzieś numeru *
lub &
?
Definicja w standardzie nie zapewnia domyślnego typu dla drugiego typu, dlatego należy jawnie podać oba typy. –