Question

J'essaie d'utiliser STD :: Ensemble pour des vecteurs entier de longueur arbitraire définis par la Bibliothèque NTL et pour une raison quelconque, cela ne fonctionne pas.Il fonctionne totalement bien avec les entiers zz définis par la bibliothèque:

#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;
}

Est-ce que quelqu'un sait pourquoi la première insertion fonctionne et le second n'est pas?

Était-ce utile?

La solution

std::set<T> is ordered by std::less<T>, which defaults to bool operator<(T,T). ZZ does define a proper operator< (they're ordered) but vec_ZZ doesn't. In fact, most NTL classes don't, not even ZZ_p. Therefore std::set<ZZ_p> is equally invalid.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top