Итераторы

В этой теме 2 ответа, 2 участника, последнее обновление  spoty76 9 мес., 2 нед. назад.

Просмотр 3 сообщений - с 1 по 3 (из 3 всего)
  • Автор
    Сообщения
  • #4939

    spoty76
    Участник
    Сообщений:19

    Зарегистрирован:
    23.03.2017

    Репутация:2

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

     

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

    #4940
    +1

    makish
    Участник
    Сообщений:14

    Зарегистрирован:
    04.06.2015

    Репутация:6

    Ну начнем с того, что возможно ты делаешь что-то неправильно, если тебе нужен текст в отдельном списке. Ведь твоя задача так и звучит: “Нужно чтобы у каждого врага был свой текст со своим здоровьем”, а как минимум это уже значит, что текст должен быть в классе врага.
    Но если вдруг возникла такая необходимость, то можно попробовать следующие варианты:

    1. Вместо std::list использовать std::deque. В нем можно получать доступ к элементам по их номеру, а значит можно сделать так:

      Но нужно знать, что в этом массиве доступ к элементу по оператору [i] происходит долго, а значит при большом количестве врагов и текста игра начнет тормозить.

    2. Использовать контейнер ключ-значение, в твоем случае подойдет std::unordered_map<Entity*, Up*>. Но циклы по этому контейнеру также очень медленные.
    3. Хранить в каждом объекте текста указатель на его врага(или наоборот). Например:

      тогда можно будет создать простой цикл:

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

    #4941

    spoty76
    Участник
    Сообщений:19

    Зарегистрирован:
    23.03.2017

    Репутация:2

    Я же говорил глупый вопрос, как я не додумался просто в классе врага текст делать, спасибо!

Просмотр 3 сообщений - с 1 по 3 (из 3 всего)

Для ответа в этой теме необходимо авторизоваться.