Oleg Fedorov пишет

Интересный глюк в std::sort

2 мар 2007 09:31
0
Недавно напоролись.
Дано:
Предикат сравнения для сортировки
// sort visibles by dist to camera
struct VisiblesCamDistSort
{
VisiblesCamDistSort( const Vector3& cPos ) : camPos( cPos ) {}
bool operator()( Scene::Visible* a, Scene::Visible* b ) const
{
float dist1Sq=(a->getBoundCenter()-camPos).SquaredLength();
float dist2Sq=(b->getBoundCenter()-camPos ).SquaredLength();
return dist1Sq > dist2Sq;
}
const Vector3 camPos;
};
И вызов сортировки:
std::sort(it, itEnd, VisiblesCamDistSort(cam.GetEyePos()));

Результат:
В конфигурациях без оптимизации - всё работает.
При включении оптимизаций начинает падать внутри сортировки в разных ситуациях (но при большом числе сортируемых объектов).

Интересно, кто-нибудь еще с таким сталкивался?
Решение есть, но хочется других послушать :)
Блог персоны

Copyright © 2021 ООО "ДТФ.РУ". Все права защищены.

Воспроизведение материалов или их частей в любом виде и форме без письменного согласия запрещено.

Замечания и предложения отправляйте через форму обратной связи.

Пользовательское соглашение