Russian Qt Forum
Ноябрь 23, 2024, 18:05 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 [3]   Вниз
  Печать  
Автор Тема: Преждевременный вызов деструктора  (Прочитано 17377 раз)
BRE
Гость
« Ответ #30 : Март 14, 2012, 14:27 »

Наверное, еще лучше так: Улыбающийся
Код
C++ (Qt)
inline bool operator==(const Point &p1, const Point &p2)
{
   return (p1.xp == p2.xp) && (p1.yp == p2.yp);
}
 
Записан
BRE
Гость
« Ответ #31 : Март 14, 2012, 14:29 »

Напр удалить повторы из такого сортированного массива мы не сможем
Почему?  Смеющийся
Какое отношение имеет оператор < к операции удаления повторов?
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #32 : Март 14, 2012, 14:31 »

Наверное, еще лучше так: Улыбающийся
Код
C++ (Qt)
inline bool operator==(const Point &p1, const Point &p2)
{
   return (p1.xp == p2.xp) && (p1.yp == p2.yp);
}
 


 Смеющийся
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #33 : Март 14, 2012, 14:37 »

Код:
    // или так:
    /*
    return (norm(p1-p2) <= epsilon);
    norm = x^2+y^2
   */
}
А вот так нельзя потому что нетранзитивно. За это я получал по дюнделю, и вынужден признать: MSVC говорит что такая сортировка некорректна

Не понял, почему это его нельзя разыменовывать?
end - итератор на элемент которого может и не быть. А если у Вас end нечто другое - тем хуже для Вас, такую стойкую ассоциацию менять не нужно
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #34 : Март 14, 2012, 14:43 »

Код:
    // или так:
    /*
    return (norm(p1-p2) <= epsilon);
    norm = x^2+y^2
   */
}
А вот так нельзя потому что нетранзитивно. За это я получал по дюнделю, и вынужден признать: MSVC говорит что такая сортировка некорректна

Не понял, почему это его нельзя разыменовывать?
end - итератор на элемент которого может и не быть. А если у Вас end нечто другое - тем хуже для Вас, такую стойкую ассоциацию менять не нужно

Да, транзитивность нарушается, но это не трагедия. (Во всяком случае, если не водить ещё и операторы < >)

end - итератор на элемент который в данной реализации всегда есть. (end это фактически result)
Код
C++ (Qt)
*result=*first;
   OutputIterator begin = result;
   while (++first != last) {
       if (!isContains(begin, result, *first)) // end будет равен result
         *(++result) = *first;
   }
   return ++result;
 
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #35 : Март 14, 2012, 15:02 »

Почему?  Смеющийся
Какое отношение имеет оператор < к операции удаления повторов?
Во многих случаях мы рассчитываем что в сортированном массиве одинаковые элементы (для которых == вернет true) идут подряд. Зачем же определять такой < при котором это не так?

Что-то Вы уж очень издалека заходите  Улыбающийся
Записан
BRE
Гость
« Ответ #36 : Март 14, 2012, 15:05 »

Во многих случаях мы рассчитываем что в сортированном массиве одинаковые элементы (для которых == вернет true) идут подряд. Зачем же определять такой < при котором это не так?
А разве при использовании моего оператора < для сортировки, это условие
Цитировать
одинаковые элементы (для которых == вернет true) идут подряд
не будет выполняться?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #37 : Март 14, 2012, 15:15 »

Нет, оператор == сортировке до лампочки
Записан
BRE
Гость
« Ответ #38 : Март 14, 2012, 15:31 »

Нет, оператор == сортировке до лампочки
Эээ, а при использовании твоего оператора это измениться?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #39 : Март 14, 2012, 15:37 »

Эээ, а при использовании твоего оператора это измениться?
Да, он в масть с == типа (a < b == c < d). Давайте с этим закругляться, неудобно занимать так много места
Записан
BRE
Гость
« Ответ #40 : Март 14, 2012, 15:45 »

Да, он в масть с == типа (a < b == c < d). Давайте с этим закругляться, неудобно занимать так много места
Ну раз в масть, то конечно, жаль математика об этом ничего не знает.
Записан
Страниц: 1 2 [3]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.126 секунд. Запросов: 23.