Le contexte
J'ai récemment trouvé cette question car je cherchais un moyen de lister toutes les méthodes disponibles dans une classe, j'ai donc commencé à expérimenter avec la méthode ptype
ce qui m'a amené à poser cette question
Considérons le fichier suivant
#include <array>
#include <vector>
#include <list>
int main() {
std::array <int, 1> a;
std::vector <int> v;
std::list <int> l;
return 0;
}
Je peux dresser la liste de toutes les méthodes présentes dans le array
en procédant comme suit
g++ -g main.cpp && \
gdb -q -batch -ex 'break 10' -ex 'run' -ex 'ptype a' ./a.out
Breakpoint 1 at 0x1179: file main.cpp, line 10.
Breakpoint 1, main () at main.cpp:10
10 return 0;
type = struct std::array<int, 1> [with _Tp = int] {
std::__array_traits<_Tp, 1>::_Type _M_elems;
public:
void fill(reference);
void swap(std::array<_Tp, 1> &);
iterator begin(void);
iterator begin(void) const;
iterator end(void);
(... more methods ...)
Cependant, cela ne se produit pas avec le vector
y list
(voir ci-dessous).
Exécution ptype
sur une instance du vector
classe
g++ -g main.cpp && \
gdb -q -batch -ex 'break 10' -ex 'run' -ex 'ptype v' ./a.out
Breakpoint 1 at 0x1179: file main.cpp, line 10.
Breakpoint 1, main () at main.cpp:10
10 return 0;
type = std::vector<int>
Exécution ptype
sur une instance du list
classe
g++ -g main.cpp && \
gdb -q -batch -ex 'break 10' -ex 'run' -ex 'ptype l' ./a.out
Breakpoint 1 at 0x1179: file main.cpp, line 10.
Breakpoint 1, main () at main.cpp:10
10 return 0;
type = std::list<int>
La question
¿Por qué ptype
imprime toutes les méthodes présentes dans le array
mais ne fait pas de même avec la classe vector
y list
classes ?