qsort
とstd::sort
でソートすると、結果が異なる可能性が非常に驚いています。qsortとstd :: sortの動作が異なる
qsort
使用:// the following comparator was used for sort int cmpr(const tpl &l, const tpl &r) { if (l.fhf < r.fhf) return -1; else if (l.fhf == r.fhf) { if (l.nhf == r.nhf) return 0; else if (l.nhf > r.nhf) return 1; else return -1; } else return 1; } // and sort statement looks like : sort(tlst, tlst + len, cmpr);
:ソートを使用して
// the following comparator has been used in qsort. // if l<r : -1, l==r : 0 , l>r 1 int cmpre(const void *l, const void *r) { if ((*(tpl *)l).fhf < (*(tpl *)r).fhf) return -1; else if ((*(tpl *)l).fhf == (*(tpl *)r).fhf) { if ((*(tpl *)l).nhf == (*(tpl *)r).nhf) return 0; else if ((*(tpl *)l).nhf > (*(tpl *)r).nhf) return 1; else return -1; } else return 1; } // and sort statement looks like : qsort(tlst, len, sizeof(tpl), cmpre);
完全なコードリンク=> http://ideone.com/zN87tX
私は、次のスニペットの動作を説明する助けが必要完全なコードリンク=> http://ideone.com/37Dc2S
あなたは後にして、操作をソートする前に、リンク上の出力を見ることができますし、2つのタプルを比較するために使用compr
とcompre
方法をチェックアウトすることをお勧めします。私はなぜsort
が配列をソートすることができないのか理解していませんが、qsort
はそうすることができます。
'qsort'と' sort'の比較関数の仕様は_different_です。 – timrau