comment comparer deux std::set?

- Je faire une telle comparaison de deux std::set

#include <cstdlib>
#include <cstdio>
using namespace std;

#include <vector>
#include <set>


int main(int argc, char** argv)
{
    int myints1[]= {10,20,30,40,50};
    int myints2[]= {50,40,30,20,10};
    std::set<int> s1 (myints1,myints1+5);
    std::set<int> s2(myints2,myints2+5);
    if(s1==s2){
        printf("sets: true");
    }else printf("sets: false");
    std::set<int>::iterator it2=s2.begin();
    for(std::set<int>::iterator it1=s1.begin();it1!=s1.end();it1++){
                printf("\ns1: %d  s2: %d",*it1,*it2);
        it2++;
    }
}

de sortie:

sets: true
s1: 10  s2: 10
s1: 20  s2: 20
s1: 30  s2: 30
s1: 40  s2: 40
s1: 50  s2: 50

Question:

Est-ce la bonne façon de le faire? Ou est de toute autre (spécial) de la comparaison de deux ensembles?

  • Si std::set implémente operator== je m'attends à être correct.
  • Il n'en œuvre, et il fait la bonne chose. Mais est-ce la question? Ou êtes-vous demandé si la forboucle est correcte?
  • Si vous êtes à la recherche d'un moyen de déterminer les éléments s1 et s2 n'ont pas en commun, vous pouvez regarder la std::set_symmetric_difference à partir de la <algorithm> en-tête.
  • Je ne suis pas sûr si std::set implémente == (cplusplus.com/reference/set/set). Si vous avez un objet (qui n'a pas == surchargé) au lieu de int, je ne sais pas si vous aurez le même résultat
  • J'utilise l'opérateur == s1==s2, je me demande si c'est correct si oui, merci de la réponse, je l'accepte, sinon comment faut-il le faire?
  • Sinon, effectuer une itération sur les ensembles (similaire à ce que vous avez), et de comparer chaque élément. Je pense qu'il est plus sûr de cette façon.
  • De tous les intervenants qui ont répondu correctement, vous obtenez le meilleur parti d'une réputation de bosse. 🙂 Pensez à publier que comme une réponse.
  • Belle façon de regarder... de toute façon, trop tard...
  • non , jamais à la fin!

InformationsquelleAutor | 2013-04-24