3

NTL-Library から定義された任意の長さの整数ベクトルに std::set を使用しようとしていますが、何らかの理由で機能しません。ライブラリで定義された ZZ 整数で問題なく動作します。

#include <NTL/ZZ.h>
#include <NTL/vec_ZZ.h>
#include <set>

NTL_CLIENT

int main(void){


    std::set<ZZ> foo;
    foo.insert(to_ZZ(1)); //works without problems

    std::set<vec_ZZ> vectorFoo;
    vec_ZZ vec;
    vectorFoo.insert(vec);  //causes compiler to crash

    return 0;
}

最初の挿入が機能し、2 番目の挿入が機能しない理由を知っている人はいますか?

4

1 に答える 1

2

std::set<T>はによって順序付けられます。std::less<T>デフォルトはbool operator<(T,T)。です。ZZ適切なものを定義しますoperator<(注文されます)が、定義vec_ZZしません。実際、ほとんどのNTLクラスはそうではなく、そうでさえありませんZZ_p。したがってstd::set<ZZ_p>、同様に無効です。

于 2012-01-27T14:05:04.590 に答える