do
{......
MonSet.insert(MonVector);//a chaque fois un Monvector different est
inserer dans le Set
....
}
while ()
je veut maintenant le trier (le set )et l afficher
c est la que sa coince
Sort (MonSet.begin(),Monset.end());
copy (MonSet.begin(),Monset.end(),affichage());//je n arrive pas
a ecrire affichage
Note qu'indépendamment de la norme, tu ne voudrais jamais créer un << pour std::vector<int> dans du vrai code de production.
"AG" a demandé :
Pourquoi ?
Imagine un instant qu'à plusieurs endroits dans ton code, tu utilises des std::vector<int> pour des raisons différentes, et qu'à chaque fois tu définisses un opérateur <<. Dans le meilleur des cas, le compilo ou le linker renvoie une erreur ; dans le pire des cas, tu crois appeler une des versions de cet opérateur et en fait tu en appelles une autre.
En gros, si dans un programme tu as deux fonctions ayant le même nom et les mêmes arguments[*], c'est le souk.
Tu peux essayer de contourner le problème en mettant les deux fonctions dans deux namespaces différents, mais quand un des arguments est dans un troisième namespace (ici, std::), avec le Koenig Lookup qui vient s'ajouter à tout ça, c'est casse-gueule.
[*] Attention aux typedef ! Les fonctions ci-dessous sont les mêmes :
typedef int MonEntier; void f (int); void f (MonEntier);
À la remarque de James :
Note qu'indépendamment de la norme, tu ne voudrais jamais créer
un << pour std::vector<int> dans du vrai code de production.
"AG" a demandé :
Pourquoi ?
Imagine un instant qu'à plusieurs endroits dans ton code, tu utilises
des std::vector<int> pour des raisons différentes, et qu'à chaque fois
tu définisses un opérateur <<.
Dans le meilleur des cas, le compilo ou le linker renvoie une erreur ;
dans le pire des cas, tu crois appeler une des versions de cet
opérateur et en fait tu en appelles une autre.
En gros, si dans un programme tu as deux fonctions ayant le même nom
et les mêmes arguments[*], c'est le souk.
Tu peux essayer de contourner le problème en mettant les deux
fonctions dans deux namespaces différents, mais quand un des arguments
est dans un troisième namespace (ici, std::), avec le Koenig Lookup
qui vient s'ajouter à tout ça, c'est casse-gueule.
[*] Attention aux typedef ! Les fonctions ci-dessous sont les mêmes :
typedef int MonEntier;
void f (int);
void f (MonEntier);
Note qu'indépendamment de la norme, tu ne voudrais jamais créer un << pour std::vector<int> dans du vrai code de production.
"AG" a demandé :
Pourquoi ?
Imagine un instant qu'à plusieurs endroits dans ton code, tu utilises des std::vector<int> pour des raisons différentes, et qu'à chaque fois tu définisses un opérateur <<. Dans le meilleur des cas, le compilo ou le linker renvoie une erreur ; dans le pire des cas, tu crois appeler une des versions de cet opérateur et en fait tu en appelles une autre.
En gros, si dans un programme tu as deux fonctions ayant le même nom et les mêmes arguments[*], c'est le souk.
Tu peux essayer de contourner le problème en mettant les deux fonctions dans deux namespaces différents, mais quand un des arguments est dans un troisième namespace (ici, std::), avec le Koenig Lookup qui vient s'ajouter à tout ça, c'est casse-gueule.
[*] Attention aux typedef ! Les fonctions ci-dessous sont les mêmes :
typedef int MonEntier; void f (int); void f (MonEntier);