OVH Cloud OVH Cloud

affichage d un set

11 réponses
Avatar
horneta2005
je voudrais trier et afficher un set de vector
je n arrive pas a trier un set
et je n arrive pas a l afficher
soit le code suivant

std::vecor<int>MonVector
std::set<std::vector<int> >MonSet

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

merci de votre aide

1 réponse

1 2
Avatar
Fabien LE LEZ
À 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);


1 2