Итак, я пишу одну вещь на C ++, и я пытаюсь реализовать приоритетную очередь с кучей сопряжения. Я хочу, чтобы этот приоритет автоматически увеличивался с течением времени, чтобы, если элемент (класс) находился в куче, скажем, в течение 5 минут, его приоритет (переменная) увеличивался. И я понятия не имею, как это сделать.
Я мог бы реализовать функцию, которая проверяла бы длительность каждого элемента каждый заданный промежуток времени, но проблема в том, что довольно сложно проверить каждый элемент в куче. Поэтому я думаю, что мне нужно что-то делать внутри элементов, но я не уверен, что и как.
Есть ли простое решение для этого? Я чувствую, что, должно быть, что-то упустил, но если это не так, то мне лучше отказаться от этой идеи, потому что я должен закончить эту вещь довольно скоро.
UP: Эта программа предназначена для человеческой очереди, поэтому причина этой идеи — не заставлять людей ждать слишком долго. Приоритет произвольный, для каждого элемента, когда он добавлен, для каждого элемента установлены уровни приоритета, поэтому время для приоритета не является для меня решением.
Вы можете добавить элементы в связанный список:
Новый элемент добавляется в конец списка
Когда первый элемент находится в куче в течение 5 минут, его приоритет увеличивается, и он перемещается в конец списка.
Таким образом, вы можете проверить только первый элемент. Еще одним преимуществом является то, что вы можете установить таймер на значение, в котором должен быть зарегистрирован первый элемент. То есть нет необходимости делать ненужные периодические проверки.
Других решений пока нет …