prädikat zum vector vergleichen
-
steh grad sowas von auf dem schlauch...
warum funktioniert das nicht?
error C2664: 'compStruct': Konvertierung des Parameters 1 von 'std::_Vector_iterator<_Myvec>' in 'const teststruct &' nicht möglich#include<iostream> using namespace std; #include <iterator> #include <vector> struct teststruct{ int val1; int val2; }; bool compStruct(const teststruct& v1, const teststruct& v2){ return v1.val1<v2.val2; } int main(){ vector<teststruct> i; teststruct v; v.val1=1; v.val2=15; i.push_back(v); v.val1=12; i.push_back(v); compStruct(i.begin(), i.end()); return 0; }
-
begin() und end() sind Iteratoren. Ein Iterator ist kein teststruct. end() ist auch nicht das letzte Element, sondern zeigt auf das Element *hinter* dem letzten.
du könntest std::sort verwenden:
std::sort(i.begin(), i.end(), compStruct);
wenn du unbedingt das erste und letzte Element haben möchtest, kannst du std::vector::front() und std::vector::back() verwenden.
-
das ganze is nur n kleiner ausschnit aus einer template funktion
isSorted(TItor begin, TItor end, func f)
hab zwei iteratoren un muss dies per prädikat vergleichen
f(*begin, *end) funktioniert auch nicht
(ob es jetzt begin, end oder willkürlicher iterator aus dem container ist, ist irrelevant
thx für die schnelle antwort
-
beispielsweise
std::equal überprüft doch auch auf
f(*iter1, *iter2)
wenn dieser einen vector<mystruct> bekommt müsste das doch auch nicht funktionieren oder?
-
kk
vl. bin ich nur ziemlich übernachtig
f(*iter, *iter) funktioniert doch
ka. wo vorher der fehler war....
thx trotzdem!!!