Братишки хелп. Пишу леталку стрелялку. Чисто по приколу. На SFML , C++ . Так вот, для создания пуль используется этот алгоритмif ((Keyboard::isKeyPressed(Keyboard::Space))&&(timerok > 1)) { bullets.push_back(new Bullet(x,y,time)); timerok = 0;} и потом где-нибудьfor(it = bullets.begin(); it != bullets.end();) { Bullet b = it; if ((* it)->getRect().intersects(En.getRect(100,100,En.PosX(time),300,time))) { b->life = false;} if (b->life == false) { it = bullets.erase(it); delete b; } else it++; }Так то всё работает, код верный, ибо я его скатал. И он работает. Но ! С 1400 фпс при выполнении строчки bullets.push_back(new Bullet(x,y,time)); фпс падает до 200 и мне это очень не нравится. Я бы с удовольствием сделал пули объектами , которые создаются вызовом функций, типа void(вся херня); но не знаю как. Собственно вопрос, как исправить это, или как по-другому создавать пули ? Кстати, зацените идею, враги вызываются не списком, а являются кучей функций, которые меняют значения при каком-нибудь life == 0; таким образом враги не создаются и удаляются , а перерождаются. ^^
>>742600 (OP)Нужно использовать ПАТТЕРН ПУЛ ОБЪЕКТОВ.
Нахуя тебе пули в виде указателя? Используй vector<Bullet>, а не vector<Bulltet*>, и с освобождением памяти проблем не будет, и с аллокацией. Если нужен все-таки указатель, используй fast_pool_allocator из буста.
>>742615так а там list <Bullet > bullets; list <Bullet >::iterator it;без звездочки оно не хочет, можно на примерчике простеньком каком-нибудь? Я просто учусь только по ходу дела .
>>742667Там звездочка короч. Она не отпечатывается че т. после Bullet
>>742600 (OP)Чисто по приколу лучше на юнити писать, особенно таким оленям, которые не понимают языка, на котором пишут.