[c++] aide utilisation STL
Fermé
Anais93
Messages postés
1
Date d'inscription
samedi 16 septembre 2006
Statut
Membre
Dernière intervention
16 septembre 2006
-
16 sept. 2006 à 15:16
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 20 sept. 2006 à 08:33
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 20 sept. 2006 à 08:33
A voir également:
- [c++] aide utilisation STL
- Notice d'utilisation - Guide
- Utilisation chromecast - Guide
- Family link temps d'utilisation ne fonctionne pas - Forum Contrôle parental
- La ressource demandée est en cours d'utilisation - Forum Téléphones & tablettes Android
- Votre compte a été désactivé pour violation de nos conditions d’utilisation - Guide
3 réponses
mamiemando
Messages postés
33333
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
31 octobre 2024
7 800
20 sept. 2006 à 01:18
20 sept. 2006 à 01:18
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
crabs
Messages postés
908
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
3 août 2008
507
16 sept. 2006 à 17:58
16 sept. 2006 à 17:58
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
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
20 sept. 2006 à 08:33
20 sept. 2006 à 08:33
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.