Bonjours je voudrai si il est possible en c++ de faire un pointeur sur un vecteur et non vecteur de pointeur Merci.
Bonjours je voudrai si il est possible en c++ de faire un pointeur sur un vecteur et non vecteur de pointeur Merci.
Si cela a un sens, oui. Mais quel est ton problème exactement ?
Ressources proposées par 3DArchi - Les fonctions virtuelles en C++ - Cours et tutoriels C++ - FAQ C++ - Forum C++.
Salut,
Il est, effectivement, possible de déclarer (et d'instancier) un pointeur sur vecteur, mais, en toute honnêteté, ce n'est clairement pas recommandé.
D'abord parce que tu va te retrouver face à la problématique de gestion des pointeurs, ensuite parce que la classe vector s'accomode parfaitement de l'utilisation de références, enfin parce que tu dispose de la fonction membre empty() qui te permet de déterminer si le vecteur contient des éléments ou non... Sans oublier qu'il n'est généralement pas intéressant de faire dériver une classe perso des différentes classes de la S(T)L.
Bref, tu peux envisager de travailler avec un pointeur sur vecteur, mais, c'est comme de te tirer une balle dans le coude: tu peux le faire, mais est-ce que cela en vaut la peine![]()
A méditer: La solution la plus simple est toujours la moins compliquée
Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
Compiler Gcc sous windows avec MinGW
Coder efficacement en C++ : dans les bacs le 17 février 2014
mon tout nouveau blog
Peut être devrais tu alors changer ton fusil d'épaule et t'orienter vers une fonction prenant en paramètre... une référence (non constante) sur un vecteur
Car, de toute évidence, ce sera l'objet qui appelle la fonction qui sera responsable de la gestion de la durée de vie de ton vecteur... Autant qu'il en soit responsable jusqu'au bout (de la création à la destruction )
[EDIT] cela pourrait prendre une forme proche de
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 void fill(std::vector<type>& tab) { /* éventuellement vider le tableau avant */ tab.clear(); /* tout ce qu'il faut pour le remplir à nouveau */ }
A méditer: La solution la plus simple est toujours la moins compliquée
Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
Compiler Gcc sous windows avec MinGW
Coder efficacement en C++ : dans les bacs le 17 février 2014
mon tout nouveau blog
En fait, il faut surtout voir si le vecteur est une variable "libre" (manipulée pour l'occasion par la fonction) ou s'il s'agit d'un membre de classe...
En effet, s'il s'agit d'un membre de classe, il rentre de plein pied dans la catégorie des "détails d'implémentation", et il semblerait fortement opportun de plutot présenter les fonctions permettant d'obtenir un itérateur sur le premier élément et un autre sur la fin du vecteur, sous une forme proche de
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 class MyClass { typedef std::vector<int> internalTab; public: typedef internalTab::iterator iterator; typedef internalTab::const_iterator const_iterator; iterator begin(){return tab.begin();} iterator end(){return tab.end();} const_iterator begin() const{return tab.begin();} const_iterator end() const{return tab.end();} private: internalTab tab; };
A méditer: La solution la plus simple est toujours la moins compliquée
Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
Compiler Gcc sous windows avec MinGW
Coder efficacement en C++ : dans les bacs le 17 février 2014
mon tout nouveau blog
Partager