• [^] # Re: heuuuu

    Posté par . En réponse au journal Si si, le C++ peut parfois être plus rapide que le C. Évalué à 1.

    Les version C et C++ ne sont surtout pas du tout équivalentes:

    Sans blague. L'interface requise pour bsearch() et std::equal_range() n'est pas du tout la même. Donc les fonctions ne font pas la même chose. T'en a d'autres comme ça des portes ouvertes à enfoncer ?

    La plupart des algorithmes de la bibliothèque standard réclament une fonction de comparaison qui introduit un ordre strict faible. Pour les non-matheux, ça veut dire une fonction booléene compare(a,b) qui doit retourner vrai si a est strictement en dessous de b. On teste l'égalité trivialement avec not compare(a,b) and not compare(b,a), même si en pratique, c'est souvent testé en même temps que les inégalités à coup de branches du style :

    if (compare(a,b)) { /* a en dessous de b */ }
    else if (compare(b,a)) { /* a au dessus de b */ }
    else { /* a équivalent à b */ }

    Par défaut, ça utilise std::less (donc a<b). Là le monsieur doit avoir un tableau d'entiers trié par ordre décroissant, et à choisi de ré-implémenter std::greater plutôt que d'utiliser celui qui est dans la bibliothèque standard.