STL сортировка в векторе
От: olimp200  
Дата: 28.10.14 17:34
Оценка: -1
Описание проблемы
Условие задачи.
На судоремонтный завод для докового ремонта одновременно пришло N кораблей. В док на ремонт может зайти только одно судно. Необходимое время стоянки в доке для каждого судна разное. После ремонта судно сразу идет в рейс.
Составить программу, определяющую порядок постановки кораблей в док, при которой суммарное время, в течение которого корабли ждут своей очереди, минимальное.
Представление данных:
typedef int duration_t;//время
typedef int identifier_t;//номер корабля

typedef std::pair<duration_t, identifier_t> ship_t; // для лексикографического порядка - длительность должна быть доминантной, т.е. первой компонентой


ship_t make_ship(identifier_t id, duration_t dur) { return ship_t(dur,id); } //создание пары
identifier_t ship_id(ship_t ship) { return ship.second; }                    //возврат номера корабля

std::vector<ship_t> ships;                                                    //вектор для хранения пар


Автор описанного выше кода указывает, что

Оператор сравнения для пар уже определён, а кроме того, если есть корабли с равной длительностью, то они упорядочатся по возрастанию номеров.

Так в действительности и получается.
Вопрос: а если вместо
std::pair

использовать
struct

тогда: возможен тот же эффект со сравнениями или это выполняется только для stl библиотеки и только для пары?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.