[ anateus @ 12.05.2010. 18:07 ] @
problem je otprilike ovakav:
trazi se da unesem neki prirodan broj n i zatim niz toliko elemenata
dinamicki alociram niz od n pokazivaca na pokazivace (elementi niza su primjerci klase, pa uzmem dvojne pokazivace da bih kasnije brze islo)
i onda ih trebam sortirati po nekom kriteriju, izabrala sam sort iz bliblioteke algorithm
znam da se obicno uzima da funkcija sortira elemente izmedju pokazivaca na prvi i na onaj iza posljednjeg, ali me buni kako da to izvedem sa dvostrukim pokazivacima?
zahvaljujem :)
[ karas @ 13.05.2010. 09:00 ] @
sort() je deklarisan kao
Code:

template <class RandomAccessIterator, class Compare>
  void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);

Koliko razumem, imas neki vektor v<MojaKlasa**>, i radila bi poziv poput
Code:

sort(v.begin(), v.end(), comp)

Ostaje jos da definises komparator koji ce porediti elemente vektora v:
Code:

bool my_comp(MojaKlasa** x, MojaKlasa** y)
{
  return **x < **y;
}

Pri tome, pretpostavka je da objekti tipa MojaKlasa imaju definisan operator poredjenja.
Pisao sam iz glave, valjda sam ispratio niz pokazivaca na pokazivace...
[ anateus @ 13.05.2010. 09:15 ] @
krasno bi bilo kad bi mi bilo dozvoljeno koristiti vektore,
ne bi bilo potrebe za dinamickim alociranjem
ali, skontala sam sinoc nesto :)
hvala u svakom slucaju
[ deerbeer @ 13.05.2010. 09:22 ] @
Onda iskoristi bubble sort algoritam jer ti onda ne trebaju vektori a i najjednostavniji je za implementaciju .
http://en.wikipedia.org/wiki/Bubble_sort
[ karas @ 13.05.2010. 13:32 ] @
Obicni pokazivaci su takodje random access iteratori, tako da bi slican poziv trebalo da vazi i za nizove, nesto poput:
Code:

MojaKlasa* v[n];
...
sort(v, v + n - 1, comp);
[ Mihajlo Cvetanović @ 13.05.2010. 14:44 ] @
Nisam 100% siguran, ali mislim da ti ne treba ovo -1 u "v + n - 1". Tu se obično stavlja ono start() i end(), ali to end() ne daje poslednji element nego ono što je odmah posle poslednjeg elementa.
[ karas @ 13.05.2010. 15:16 ] @
Bice da si u pravu.
Gadni su ti prelazi sa C na C++ logiku.:)