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 ;-)
#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