A l'aide de C++ et de la STL, quelqu'un sait-il comment stocker des tableaux entiers sous forme de nœuds dans une liste ou un vecteur STL? J'ai un nombre inconnu de paires de nombres que je dois stocker, et venant d'autres langues, ma première pensée a été d'utiliser une sorte de structure de données semblable à une liste ou à un vecteur ... mais j'ai des problèmes. Je suis sûr à 100% que je fais une erreur évidente de débutant en C++, et que quelqu'un qui connaît réellement la langue jettera un coup d'oeil à ce que j'essaye de faire et sera capable de me mettre d'accord.Comment stocker des tableaux dans une liste STL?
Alors, voici ce que j'ai essayé. Déclarant une liste comme si fonctionne:
stl::list<int[2]> my_list;
Et puis je peux facilement faire un tableau à deux éléments, comme ceci:
int foo[2] = {1,2};
Cette compile et fonctionne très bien. Cependant, dès que j'essaie d'ajouter foo
à ma liste, comme suit:
my_list.push_back(foo);
Je reçois un ensemble noueux d'erreurs du compilateur, aucune dont je comprends vraiment (mon C++ - fu est presque inexistante):
/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
Alors, quelqu'un a des idées sur ce que je fais mal ici? Tout pointeur (sans jeu de mots) serait très utile. Est-il simplement impossible de stocker des tableaux dans une liste std ::? Dois-je utiliser une structure? Suis-je en train de manquer un *
ou un &
quelque part?
La définition dans la norme ne fournit pas un type par défaut pour le second type, vous devez donc fournir explicitement les deux types. –