J'ai deux cartes STL Je veux trouver si la barre est un sous-ensemble de FOO. P>
Étant donné que les éléments sont triés sur la carte, je penserais
Pour trouver le premier élément de la barre de FOO, puis trouvez des éléments consécutifs
du bar à foo de cet endroit. p>
Le problème ici est que je ne suis pas capable de trouver un moyen de le faire avec des cartes STL au CPP.
Puis-je réduire la plage de recherche sur la carte pour chaque trouvaille d'un emplacement sur carte à la fin de la carte? P>
J'espère que j'ai expliqué le problème. P> std :: map
std :: map
3 Réponses :
Vous pouvez extraire des ensembles de clés ( voir SET1 code> et
SET2 code>) des deux cartes (
FOO code> et
bar code>), Et tant qu'ils sont triés, vous pouvez procéder comme suit:
std :: Comprend code>
. p> p>
Pourquoi extraire les clés? Vous pouvez le faire à la volée, voir ma réponse.
Un moyen simple consiste à utiliser boost. Gamme en combinaison avec Voici comment un programme complet complet pourrait ressembler (les valeurs mappées sont ignorées): p> voici un live Exemple em> strong> . p> p> boost :: Comprend code>
:
Utilisez std :: Comprend code>
algorithme avec un comparateur personnalisé qui se compare Seules les clés:
Si ceux-ci sont des cartes, énumérez-vous les clés? Ou les types de valeur? Ou sont-ils ensembles?
Votre carte ressemble à set
Désolé pour la confusion. Ce sont des clés, la carte est la "carte". Je suis intéressé à trouver si la deuxième carte a des clés sous réserve de clés dans la première carte.
@ H2CO3 - J'ai abandonné celui-ci. Apparemment, "STL" est maintenant pour la bibliothèque standard.
@Petebecker peut-être que je vais abandonner une journée aussi (mais pas encore!)
@ H2CO3: Nitpicking absurde ... STL est un terme bien connu et il n'est pas utilisé de manière incorrecte ici. Ce n'est pas comme s'il avait appelé
std :: iostream code> stl.