alors oui "effective C++" (en francais: "le C++ eficace") est un livre a avoir lu. Il est vraiment bien, il donne 50 conseil de programmation en C++, en quelques sortes quel sont les pièges du C++.
Scott Meyers a d´ailleurs ecrit une suite qu´il a appelé "more effective C++" qui n´est a ma connaissance pas traduit en francais. je ne l´ai pas encore lu donc, je ne peux rien vous dire.
Pour info il a aussi ecrit "effective STL".
Pour revenir au probleme de base, oui, c´est assez moche ce qui a été fait..
une solution "a l´arrache" pour faire un peu plus performant que l´utilisation de vecteur:
class vecteur2D
{
int dimX, dimY;
int* data;
public:
vecteur2D(int dx, int dy):
dimX(dx), dimY(dy), data(new int[dx*dy])
{}
int* operator[] (int x)
{return data+x*dy;}
};
bon bien sur c´est codé a l´arrache; il faudrait mettre de la protection un peu partou histoire de ne pas faire trop n´importe quoi...
j´avais ecrit qqch d´un peu plus joli avec template et verification de bornes ici meme (chercher a tableau ou a allocation, je ne sais plus)
sinon, pourquoi ca marche
vecteur2d vet (3,4);
vet[3][4] = 42;
vet[3] renvoie un int*; on peut donc utiliser [] dessus...