1. Das Casten nach
int solltest du dir sparen, völlig unnötig. Jedenfalls ist das nicht das, was du willst.
2.
abs ist ebenfalls unnötig, da du quadrierst. Da ist es egal, ob die Zahl positiv oder negativ ist, weil x² = (-x)².
3. Die Wurzel muss man nur einmal ziehen (kannst du direkt in deinen "Zwischenwert" integrieren).
4. Eigentlich muss man die Wurzel überhaupt nicht ziehen, denn aus
§\sqrt{x} \leq y§ kannst du
§x \leq y^2§ machen. Das zu testen geht schneller.
5. Quadrieren mit
pow finde ich unschön, lieber einfach durch Multiplikation mit sich selbst (Variablen für Differenzen in x und y nutzen).
6. Die Iterator-Variable musst du nicht vor der Schleife definieren, am besten innerhalb des
for (à la
for(int x = 0; x < 10; ++x)).
7. Benutze
++it statt
it++, das hat theoretisch einen kleinen Performance-Vorteil.
8. Eigentlich brauchst du gar keinen Iterator. Stattdessen benutze
range-based for loops mit konstanten Referenzen.
9. Du kopierst in jedem Durchlauf die
SDL_Rect-Instanz. Benutze stattdessen eine konstante Referenz, d.h.
const SDL_Rect&, auch bei
GetRect.
10. Du übergibst deiner Funktion den Parameter
m_pDummylist als
Wert, nicht als Zeiger oder Referenz. Dadurch wird die Liste bei jedem Aufruf komplett kopiert.
11. Dass es anfing zu ruckeln, lag sicher nicht an der Schleife, auch wenn sie sehr viel Luft nach oben hat. Hier solltest du mit einem Profiler arbeiten und wirklich messen, was wie viel Zeit braucht.