[c++] aide utilisation STL
Anais93
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour.
Je programme depuis plusieurs moi en C++ (enfin j'apprend ^^').
Et donc en ce moment j'essaye d'utiliser la classe vector.
Puisqu'on m'a dis que c'etais tres pratique pour gerer les allocation dynamique de mémoire.
J'avais concue une classe UnPixel et maintenant j'aimerais rajouter au constructeur un tableau qui stocke le X et le Y de chaque pixel (tableau a une dimension).
Mais voila je bloque sur une erreur je n'arrive pas a declarer la taille de mon tableau.
voici mon .cpp avec mon constructeur:
UnPixel::UnPixel(unsigned int telX,unsigned int telY,std::vector<unsigned> telPixel):leX(telX),leY(telY),telPixel(telX*telY) {
}//constructeur
l'erreur est:l'initialisation des constructeurs est uniquement permise dans la definition du constructeur.
Merci d'avance
Je programme depuis plusieurs moi en C++ (enfin j'apprend ^^').
Et donc en ce moment j'essaye d'utiliser la classe vector.
Puisqu'on m'a dis que c'etais tres pratique pour gerer les allocation dynamique de mémoire.
J'avais concue une classe UnPixel et maintenant j'aimerais rajouter au constructeur un tableau qui stocke le X et le Y de chaque pixel (tableau a une dimension).
Mais voila je bloque sur une erreur je n'arrive pas a declarer la taille de mon tableau.
voici mon .cpp avec mon constructeur:
UnPixel::UnPixel(unsigned int telX,unsigned int telY,std::vector<unsigned> telPixel):leX(telX),leY(telY),telPixel(telX*telY) {
}//constructeur
l'erreur est:l'initialisation des constructeurs est uniquement permise dans la definition du constructeur.
Merci d'avance
A voir également:
- [c++] aide utilisation STL
- Utilisation chromecast - Guide
- Télécharger gratuitement notice d'utilisation - Guide
- Manuel utilisation batigest connect pdf - Forum compta / gestion
- La ressource demandée est en cours d'utilisation ✓ - Forum Logiciels
- Family link temps d'utilisation ne fonctionne pas - Forum Contrôle parental
3 réponses
Tu peux définir une classe pour tes pixels, ou simplement utiliser les paires de la STL. Pour stocker tes pixels tu peux utiliser différents containers :
std::vector : recherche en O(n), accès en O(1)
std::list : recherche en O(n), accès en O(n)
std::set : recherche en O(log(n)), accès en O(log(n))
Ci dessous un exemple avec utilisation des flux ( opérateur <<), des iterators, bref ça me semble pas mal pour commencer ;-)
Bonne chance
std::vector : recherche en O(n), accès en O(1)
std::list : recherche en O(n), accès en O(n)
std::set : recherche en O(log(n)), accès en O(log(n))
Ci dessous un exemple avec utilisation des flux ( opérateur <<), des iterators, bref ça me semble pas mal pour commencer ;-)
#include <set> #include <iostream> typedef unsigned int coord_t; class pixel_t{ protected: coord_t x; coord_t y; // par exemple ici tu peux rajouter // quelque chose pour enregistrer la couleur // du pixel public: pixel_t(const coord_t & x0=0,const coord_t & y0=0):x(x0),y(y0){} inline const coord_t & get_x() const{ return x; } inline const coord_t & get_y() const{ return y; } inline void set_x(const coord_t & x0) const{ x = x0; } inline void set_y(const coord_t & y0) const{ y = y0; } }; int main(){ // Creer des pixels pixel_t p1(1,2),p2(1,3),p3(5,3); // Les sauver dans un ensemble std::set<pixel_t> mes_pixels; mes_pixels.insert(p1); mes_pixels.insert(p2); mes_pixels.insert(p3); // Afficher la collection de pixels { std::set<pixel_t>::const_iterator sit(mes_pixels.begin()), send(mes_pixels.end()); for(;sit!=send;++sit){ // pour chaque pixel const pixel_t & p = *sit; // le pixel courant std::cout << '(' << p.get_x() << ',' << p.get_y() << ')' << std::endl; } } return 0; }
Bonne chance
Salut,
Ton tableau ne stocke pas les X et les Y mais semble contenir le produit du X et du Y.
Si tu veux qu'à la "contruction" d'un pixel il soit contenu dans un vecteur,
passe la référence à ce conteneur.
Ensuite dans le code du constructeur, tu n'aura plus qu'à ajouter l'objet courant
(ou du moins une copie) dans le conteneur dont tu as passé la référence.
A+, crabs
Ton tableau ne stocke pas les X et les Y mais semble contenir le produit du X et du Y.
Si tu veux qu'à la "contruction" d'un pixel il soit contenu dans un vecteur,
passe la référence à ce conteneur.
Ensuite dans le code du constructeur, tu n'aura plus qu'à ajouter l'objet courant
(ou du moins une copie) dans le conteneur dont tu as passé la référence.
A+, crabs
Salut.
Peut être ceci fonctionnerai:
UnPixel::UnPixel(unsigned int telX,unsigned int telY,std::vector<unsigned> telPixel):leX(telX),leY(telY),telPixel(std::vector<unsigned>(telX*telY)) {
}//constructeur
J'ai l'impression que l'erreur te dit que cette initialisation devrai être dans le corps de la class.
Peut être ceci fonctionnerai:
UnPixel::UnPixel(unsigned int telX,unsigned int telY,std::vector<unsigned> telPixel):leX(telX),leY(telY),telPixel(std::vector<unsigned>(telX*telY)) {
}//constructeur
J'ai l'impression que l'erreur te dit que cette initialisation devrai être dans le corps de la class.