Al usar C++ y el STL, ¿alguien sabe cómo almacenar matrices de enteros como nodos en una lista o vector STL? Tengo una cantidad desconocida de pares de números que necesito almacenar, y al venir de otros idiomas, lo primero que pensé fue utilizar algún tipo de estructura de datos similar a una lista o vector ... pero me estoy metiendo en problemas. Estoy 100% seguro de que estoy cometiendo un error obvio de C++ para principiantes, y que alguien que realmente conozca el idioma echará un vistazo a lo que estoy tratando de hacer y podrá aclararme.¿Cómo almaceno arreglos en una lista STL?
Por lo tanto, esto es lo que he intentado. La declaración de una lista como tal funciona:
stl::list<int[2]> my_list;
Y entonces puedo hacer fácilmente una serie de dos elementos, así:
int foo[2] = {1,2};
Esto compila y funciona muy bien. Sin embargo, tan pronto como intento agregar foo
a mi lista, así:
my_list.push_back(foo);
me sale todo un conjunto retorcido de errores del compilador, ninguno de los cuales realmente entiendo (mi C++ - fu es casi inexistente):
/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
Entonces, ¿alguien tiene ideas sobre lo que estoy haciendo mal aquí? Cualquier puntero (sin juego de palabras) sería de gran ayuda. ¿No es posible almacenar matrices en una std :: list? ¿Debo usar una estructura? ¿Me falta un *
o &
?
La definición en el estándar no proporciona un tipo predeterminado para el segundo tipo, por lo que debe proporcionar explícitamente ambos tipos. –