Для вашей задачи я бы предположил, что у вас есть сравнительно короткий список врагов, например, менее тысячи. Если это так, вам не нужна настоящая сортировка, просто найдите самую маленькую запись:
minimal health found = health of first enemy
corresponding index of enemy = index of first enemy
for all enemies:
if health enemy < minimal health found:
minimal health found = health enemy
corresponding index of enemy = index enemy
Если, однако, по каким-то причинам вам все же нужно их отсортировать, самый простой способ - сохранить их в сортируемом контейнере (вы можете написать один, но просто используйте std::vector
или std::list
). Определите метод в классе врага, который определяет отношение «меньше чем» (bool health_lower(const PlayerObject& a, const PlayerObject& b)
), а затем используйте std::sort
с этим методом в качестве компаратора.
Другой способ заключается в том, что вы пишете класс, в котором хранится список врагов, и каждый раз, когда создается враг или изменяется его здоровье, класс раздувает этого конкретного врага как порядок остальных врагов для каждого из них. другое не меняется.