У меня одна проблема. У меня есть вектор указателей, который выглядит так:

vector < Pice*> popisPica;

(Объект Pice имеет метод int kolikoLjudiZeli (), который возвращает целое число.)

У меня есть несколько объектов в этом векторе, которые мне нужно отсортировать. Но когда я пытаюсь это сделать, моя программа ничего не делает.

У меня есть метод

sort()
{
   for (int i=0; i<popisPica.size(); i++)
        {
            for (int j=0; j<popisPica.size()-1; j++)
            {
                if (popisPica[j]->kolikoLjudiZeli() < popisPica[j+1]->kolikoLjudiZeli())
                {
                    Pice *temp;
                    temp = popisPica[j];
                    popisPica[j] = popisPica[j+1];
                    popisPica[j] = temp;
                }
            }
        }
}

Вы можете помочь мне найти ошибку? Я невежественен.

Спасибо

c++
-3
Kristijan Delivuk 3 Апр 2014 в 22:37
1
Нужно ли писать свою сортировку или можно использовать стандартную библиотеку?
 – 
juanchopanza
3 Апр 2014 в 22:38
Мне нужно написать свой собственный
 – 
Kristijan Delivuk
3 Апр 2014 в 22:39
1
Нам нужен минимальный компилируемый пример, который воспроизводит проблему.
 – 
Karoly Horvath
3 Апр 2014 в 22:40
2
Вы не имели в виду popisPica[ j + 1] = temp; ?
 – 
4pie0
3 Апр 2014 в 22:46
1
@KristijanDelivuk: позвольте мне подчеркнуть и другую часть... минимальный компилируемый пример. знаете, код.
 – 
Karoly Horvath
3 Апр 2014 в 22:50

2 ответа

Лучший ответ
popisPica[j+1] = temp;   // instead of popisPica[j]
2
Beowulf 3 Апр 2014 в 22:48

Посмотри, что ты здесь натворил:

            Pice *temp;
            temp = popisPica[j];
            popisPica[j] = popisPica[j+1]; // not important
            popisPica[j] = temp; // assign popisPica[j] to popisPica[j] after all
0
4pie0 3 Апр 2014 в 22:52