скорее всего на ваших настройках компилятор хорошо понял, что происходит для обычного итератора, но плохо понял, что происходит для обратного. для отладочной сборки абсолютно нормальная ситуация если хотите сортировать по убыванию - обращайте не итераторы (это семантически неестественно), а компаратор: std::sort(..., std::greater<>{});
Нет, дело не в оптимизации
Про семантически неестественно - согласен
Хм Попробовал так set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0"): Time to sort = 19[millisec] Time to sort rbegin-rend = 787[millisec] и так set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3"): Time to sort = 20[millisec] Time to sort rbegin-rend = 64[millisec]
Обсуждают сегодня