J'ai passé beaucoup de temps à coder dans l'algorithme d'intersection rapide de Baeza-Yates pour l'une de mes applications. Bien que je l'ai fait marginalement sur-performer la STL set_intersect, le fait que j'avais besoin que l'ensemble résultant soit trié est retiré à chaque fois que j'avais gagné de l'implémentation de mon propre algorithme après avoir trié la sortie. Etant donné que le fichier STL set_intersect fonctionne bien, quelqu'un peut-il me signaler l'algorithme qu'il implémente réellement? Ou met-il en œuvre le même algorithme de Baeza-Yates mais de manière beaucoup plus efficace?Question curieuse: quel algorithme est implémenté par STL set_intersect?
Baeza-Yates: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.91.7899&rep=rep1&type=pdf
+1 Je commençais à écrire une réponse, et j'ai copié ceci, mais votre réponse semble assez bonne, donc je vais la coller ici à la place, l'exigence spécifique est: "Complexité: Au plus 2 * ((last1 - first1) + (last2 - first2)) - 1 comparaisons. " –
Facilement le voir, bien sûr Comprendre comment cela fonctionne avant que votre tête n'explose? –
@PigBen, si vous êtes curieux de connaître ces types Je suppose que le seuil d'explosion de votre tête est un peu plus élevé que la plupart de mes limites, mon propre seuil est beaucoup plus bas que je le souhaiterais. –