Автоматически увеличивающаяся переменная в классе

Итак, я пишу одну вещь на C ++, и я пытаюсь реализовать приоритетную очередь с кучей сопряжения. Я хочу, чтобы этот приоритет автоматически увеличивался с течением времени, чтобы, если элемент (класс) находился в куче, скажем, в течение 5 минут, его приоритет (переменная) увеличивался. И я понятия не имею, как это сделать.

Я мог бы реализовать функцию, которая проверяла бы длительность каждого элемента каждый заданный промежуток времени, но проблема в том, что довольно сложно проверить каждый элемент в куче. Поэтому я думаю, что мне нужно что-то делать внутри элементов, но я не уверен, что и как.

Есть ли простое решение для этого? Я чувствую, что, должно быть, что-то упустил, но если это не так, то мне лучше отказаться от этой идеи, потому что я должен закончить эту вещь довольно скоро.

UP: Эта программа предназначена для человеческой очереди, поэтому причина этой идеи — не заставлять людей ждать слишком долго. Приоритет произвольный, для каждого элемента, когда он добавлен, для каждого элемента установлены уровни приоритета, поэтому время для приоритета не является для меня решением.

0

Решение

Вы можете добавить элементы в связанный список:

  1. Новый элемент добавляется в конец списка

  2. Когда первый элемент находится в куче в течение 5 минут, его приоритет увеличивается, и он перемещается в конец списка.

Таким образом, вы можете проверить только первый элемент. Еще одним преимуществом является то, что вы можете установить таймер на значение, в котором должен быть зарегистрирован первый элемент. То есть нет необходимости делать ненужные периодические проверки.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]