2010-11-22 9 views
5

-je utiliser les avantages des ensembles de delphi comme « dans » en C++, mais je ne sais pas s'il y a une structure de données comme des ensembles en C++Quelle est la structure de données comme ensemble en C++

I sachez que je peux utiliser un tableau à la place, mais comme je l'ai dit je veux utiliser les avantages des ensembles comme "dans", donc y at-il une structure de données intégrée comme les ensembles en C++?

Si oui, s'il vous plaît expliquer comment l'utiliser, je suis toujours une entrée en C++

Si non, est-il possible de le représenter (tableau exepté depuis que je le sais).

merci à l'avance :)

+4

['std :: set'] (http://www.sgi.com/tech/stl/set.html) est un ensemble. Vous pouvez '#include ' pour l'obtenir. – birryree

+1

"set of" et ses opérateurs natifs (in, +, -, *) sont spécifiques à Pascal (et Delphi). C++ implémente quelque chose de la même manière en utilisant des templates, mais ils manquent de l'élégance de l'implémentation de Pascal (bien que les ensembles Pascal soient limités à 255 éléments) –

+2

@ldsandon: 256 éléments - 0..255. :-) –

Répondre

10

Il y a un conteneur de bibliothèque standard appelé std::set ... Je ne sais pas delphi, mais un simple élément dans le jeu opération serait mise en œuvre en utilisant la méthode find et comparer le résultat avec end:

std::set<int> s; 
s.insert(5); 
if (s.find(5) != s.end()) { 
    // 5 is in the set 
} 

D'autres opérations pourraient être mises en œuvre sous forme d'algorithmes dans la bibliothèque standard (std::union, std::difference ...)

0

Oui, il y a un conteneur C++ STL set classe des représenté sur p. 491 de TC++ PL de Stroustrup (édition spéciale).

2

En C++, rien n'est intégré de la même manière. Selon vos besoins, vous pouvez utiliser des drapeaux de bits et des opérations au niveau du bit ou le conteneur standard std::bitset (en plus de std :: set, bien sûr). Si vous utilisez C++ Builder, il existe également une classe qui simule les ensembles Delphi - search System.hpp pour quelque chose comme BaseSet ou SetBase ou similaire - je ne me souviens pas du nom exact.

0

algorithme STL a le suivant From MSDN

set_difference unit tous les éléments qui appartiennent à une plage de source triées, mais non à une seconde plage de source triées, en une seule plage de destination triée, où le critère de classement peut être spécifié par un prédicat binaire.

set_intersection unit tous les éléments qui appartiennent à la fois à la source varie triés en une seule plage de destination triée, où le critère de commande peut être spécifié par un prédicat binaire.

set_symmetric_difference unit tous les éléments qui appartiennent à l'un, mais pas les deux, les plages de la source triées en une seule plage de destination triée, où le critère de commande peut être spécifié par un prédicat binaire.

set_union unit tous les éléments qui appartiennent à au moins l'une des deux plages de la source triées en une seule plage de destination triée, où le critère de commande peut être spécifié par un prédicat binaire.

+0

Ce sont des algorithmes qui fonctionnent sur des conteneurs ordonnés (sur des paires d'itérateurs à des éléments ordonnés pour être précis), pas sur le conteneur lui-même. –

Questions connexes