2012-06-06 5 views
1

Так я посмотрел этот вопрос и использовали данные решения и придумал этот кусок кода:Итерация над списком пользовательских классифицируемых объектов

list<Projectile*>::iterator bullet; 
for(bullet = bullets.begin(); bullet != bullets.end(); bullet++) 
    . 
      . 
      .    
} 

Проблема: Нет оператора «=» соответствует этим операнды , ! То же самое с = ... Я невежественный, почему:/

+0

Каков тип 'bullets' в этом контексте? – vstm

+0

bullets; – qiuntus

+0

Я также предлагаю вам изменить инкрементную часть вашего цикла с «bullet ++» на «++ bullet», в некоторых случаях это может быть быстрее, это хорошая идея, чтобы получить эту практику. –

ответ

3

По крайней мере, на основе ваших комментариев, вы пытаетесь использовать list<Projectile *>::iterator где list<Projectile>::iterator необходимо.

В качестве альтернативы, 1) list редко является лучшим выбором контейнеров, и 2) в большинстве случаев вам лучше выполнять итерацию через коллекцию с предварительно упакованным алгоритмом вместо написания цикла.

+0

Спасибо, что сработало. Что касается выбора использования списка. Я прочитал документацию по Vectors, Deqeues и Lists, и это было наиболее целесообразно использовать, так как я собираюсь удалить случайные элементы из коллекции в любой момент времени, а также постоянно добавлять новые. Что вы подразумеваете под пред- пакетный алгоритм в этом случае? – qiuntus

+0

Нужно ли поддерживать порядок при добавлении/удалении элементов? Если нет, с вектором вы можете добавить до конца, и когда/если вам нужно удалить из середины, вы можете поменять элемент на последний, а затем удалить его с конца. Предварительно упакованный алгоритм будет похож на 'std :: for_each' или' std :: transform'. –

+0

Я не забочусь о заказе, но этот фрагмент текста из документов C++. «Для операций, связанных с вставкой или удалением элементов в позициях, отличных от конца, они выполняют хуже, чем оценки и списки, и имеют менее согласованные итераторы и ссылки, чем списки «. сказал мне использовать список, а не вектор. Что касается for_each, я просто вскочил в OpenGl, и код выглядел так «запутанным», что я хочу сохранить его простым на данный момент :) – qiuntus

Смежные вопросы