Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

STL sortowanie i wyszukiwanie rekordów Vector

Ostatnio zmodyfikowano 2014-08-19 19:55
Autor Wiadomość
NiceFox
Temat założony przez niniejszego użytkownika
STL sortowanie i wyszukiwanie rekordów Vector
» 2014-08-15 19:44:51
Potrzebuje  w Vector sortować rekordy wg jednej wybranej kolumny, oraz wyszukiwać rekordy z zawartością kilu zmiennych.
Do funkcji sortf posyłam 2 zmienne typu float nie wiem dlaczego wywala błąd , czy funkcja musi zawierać całą strukturę classy?
Error 122 error C2664: 'Sygnal::sortf' : cannot convert parameter 1 from 'float' to 'Sygnal'
Error 123 error C2780: 'void std::sort(_RanIt,_RanIt)' : expects 2 arguments - 3 provided
C/C++
Class Signal // około 100 różne typy zmiennych  float, int, string (nie wklejam żeby nie zaciemniać)

bool Sygnal::sortf( Sygnal i, Sygnal j ) {
   
    return( i.hi > j.lo );
}

int main()

sort( syg.begin(), syg.end(), sygnal->sortf( syg[ z ].lo, syg[ z ].hi )
P-115537
pekfos
» 2014-08-15 19:50:47
C/C++
std::sort( syg.begin(), syg.end(), std::greater < Signal >() );
+nagłówki i operator>. Lub tak
C/C++
sort( syg.begin(), syg.end(), Signal::sortf )
std::sort ma otrzymać coś, co można wywołać. Lambdę, funkcję, obiekt, itp..
P-115538
1aam2am1
» 2014-08-15 19:51:06
Edit.
P-115539
NiceFox
Temat założony przez niniejszego użytkownika
» 2014-08-15 20:03:19
sort( iterator start, iterator koniec, cmp ); //cmp - funkcja porównująca

funkcja sort powinna mieć 3 argumenty nie 2  tak podają w turialach, kompilator vs2010, Nie wklejam całego kodu bo jest b.długi

no to mnie wyedytowałeś :)


Ta metoda też błąd wywala:
sort(syg.begin(), syg.end(),Sygnal::sortf(syg[ z ].lo, syg[ z ].hi));

Error 122 error C2664: 'Sygnal::sortf' : cannot convert parameter 1 from 'float' to 'Sygnal'
Error 123 error C2780: 'void std::sort(_RanIt,_RanIt)' : expects 2 arguments - 3


std::sort( syg.begin(), syg.end(), std::greater < Sygnal >() );

Error 131 error C2676: binary '>' : 'const Sygnal' does not define this operator or a conversion to a type acceptable to the predefined operator

Tutaj też błąd , powinien być jakiś iterator?
P-115540
pekfos
» 2014-08-15 20:18:43
funkcja sort powinna mieć 3 argumenty nie 2  tak podają w turialach
std::sort jest przeciążone dla 2 i 3 argumentów.

Ta metoda też błąd wywala:
sort(syg.begin(), syg.end(),Sygnal::sortf(syg[ z ].lo, syg[ z ].hi));
To co tu nawyrabiałeś to więcej niż niezbędne modyfikacje.
P-115542
NiceFox
Temat założony przez niniejszego użytkownika
» 2014-08-15 20:38:14
Po poprawkach też blędy

sort( syg.begin(), syg.end(), Sygnal::sortf );

Error 123 error C2780: 'void std::sort(_RanIt,_RanIt)' : expects 2 arguments - 3 provided

Error 122 error C3867: 'Sygnal::sortf': function call missing argument list; use '&Sygnal::sortf' to create a pointer to member
P-115543
pekfos
» 2014-08-15 20:42:28
Error 122 error C3867: 'Sygnal::sortf': function call missing argument list; use '&Sygnal::sortf' to create a pointer to member
sortf() musi być statyczne.
P-115544
NiceFox
Temat założony przez niniejszego użytkownika
» 2014-08-18 17:54:45
sortuje tą metodą :
C/C++
bool Greater( const Sygnal & a, const Sygnal & b ) {
   
    if( a.hi == b.hi )
         return( a.hi < b.hi );
   
}

sort( syg.begin(), syg.end(), Greater );
ale problem jest po program się wywala , info z debugera coś takiego

"Expression: vector subscript out of range" jakie mogą być przyczyny tego?
P-115696
« 1 » 2 3
  Strona 1 z 3 Następna strona