18

次のプログラムは VC++ 2012 でコンパイルされています。

#include <algorithm>

struct A
{
    A()
        : a()
    {}

    bool operator <(const A& other) const
    {
        return a <= other.a;
    }

    int a;
};

int main()
{
    A coll[8];
    std::sort(&coll[0], &coll[8]); // Crash!!!
}

に変更return a <= other.a;するとreturn a < other.a;、プログラムは例外なく期待どおりに実行されます。

なんで?


正しい関数は get_terms http://codex.wordpress.org/Function_Reference/get_termsです。

$categories = get_terms( array( 'category'), array('name__like' => "a", 'order' => 'ASC') );
4

3 に答える 3

29

std::sorthereで説明されている厳密な弱い順序付けルール を満たすソーターが必要です

したがって、あなたの比較者は、厳密な弱い順序付けルールに従わないa < b場合、アルゴリズムが無限ループに入るため、アルゴリズムがクラッシュする可能性があると言っています。a == b

于 2013-08-17T17:53:55.600 に答える