Próbuję zmienić domyślną kolejność elementów w zbiorze liczb całkowitych być leksykograficzny zamiast numeryczna, i nie mogę uzyskać następujące skompilować z g ++:Korzystanie zwyczaj std :: set komparator
file.cpp:
bool lex_compare(const int64_t &a, const int64_t &b)
{
stringstream s1,s2;
s1 << a;
s2 << b;
return s1.str() < s2.str();
}
void foo()
{
set<int64_t, lex_compare> s;
s.insert(1);
...
}
pojawia się następujący błąd:
error: type/value mismatch at argument 2 in template parameter list for ‘template<class _Key, class _Compare, class _Alloc> class std::set’
error: expected a type, got ‘lex_compare’
co robię źle?
faktycznie mój problem pojawił się dodatkowy zamykania> w zgłoszeniu zbioru. Zamykam pytanie jako fałszywe. (używając prostej funkcji zamiast funktora jest całkowicie w porządku dla STL) –
kod w pytaniu jest prostszy niż proponowany (dla prostego komparatora funkcji) i działa dobrze. –
@Omry: Byłbym zainteresowany wiedząc, jakiego kompilatora używasz: http://codepad.org/IprafuVf –