Witam
W grze komputerowej (zaznaczam grze, czyli można przeczytać między słowami że szybkość wykonywania kodu jest dla mnie najważniejsza kosztem quality kodu) mam wektor któremu po naciśniściu przycisku podaje się klasę Plan a ta z kolei przybiera parametry. Chodzi o to że uzytkownik naciśka przycisk i w odpowiedzi mój kod ustala co postać na ekranie komputera zrobi, np. obróci się zgodnie ze strzalkami a następnie pobiegnie przez 2 sekundy.
Jakby nie zależało mi na szybkości działania programu i nie miał C++11 to bym zadeklarował wektor tak:
vector<plan*> mPlannedState;
mPlannedState.push_back(new PlanObrotu(TURN_OVER));
mPlannedState.push_back(new PlanBiegniecia(RUN, 2_S));
//TURN_OVER i RUN należą do tego samego enuma
```
Zależy mi na szybkości, toteż mam 1 klasę, akurat dla planu obrotu zmienna czasu jest nieużywana no i mogę pozbyć się operatora new:
vector<plan> mPlannedState;
mPlannedState.push_back(Plan(TURN_OVER));
mPlannedState.push_back(Plan(RUN, 2_S));
```
Mam C++11 to przekształcam kod do szybszej wersji:
vector<plan> mPlannedState;
mPlannedState.emplace_back(TURN_OVER);
mPlannedState.emplace_back(RUN, 2_S);
```
Czy da radę jednak jakoś mieć tutaj 2 klasy planObrotu i biegnięcia i nie używać operatora new, ani też inteligentnych wskaźników no bo wiadomo wywołanie operatora new kosztuje czas?