jest “vector v” zawierający wskaźniki do obiektów klasy MyClass (podanej poniżej). Klasa ta posiada pole int index.
Chciałbym najlepiej za pomocą metody “sort ( RandomAccessIterator first, RandomAccessIterator last )” (z bibl. algorithm) posortować wskaźniki w tym vectorze ALE w kolejność wyznaczonej przez wartości pola index obiektu na który wskazują.
struct MyClass{
int index;
char* inne;
MyClass(int idx){
index = idx;
}
};
//...
vector v;
MyClass* mc1 = new MyClass(2);
MyClass* mc2 = new MyClass(1);
v.push_back(mc1);
v.push_back(mc2)
//Kolejnosc wskaznikow w wektorze to {mc1, mc2}
sort(v.begin(), v.end());
//Teraz chciałbym dostać {mc2, mc1} bo mc1->index > mc2->index
Przeciążenie operatorów porównań dla klasy MyClass nic nie daje, trzeba by raczej przeciążyć operatory porównań dla wskaźników MyClass*. Czy jest to możliwe? Proszę o pomoc.
Nie można przeciążyć operatorów dla wskaźników jakiegoś typu. O ile dobrze pamiętam to kontenery STL ogólnie nie nadają się do przechowywania wskaźników – pewnym rozwiązaniem jest boost::shared_ptr lub boost:ptr_vector, zobacz: http://www.boost.org/doc/libs/1_45_0/li … rence.html Jednak czy ptr_vector rozwiąże sprawę – nie mam pojęcia.