Collision-checking optimizations
If I'm understanding things correctly, (x,y) is an anchor point of your object (say, bottom left), and you're iterating over every single point that could be an anchor point for an object that it's in collision with, then checking if it's an actual anchor point of an existing object.

My suggestion (assuming that your shapes are small and circle/box-like) would be to check for exclusion rather than inclusion. If you consider that each obj has a bounding rectangle around it, then do the following checks:

curr-x &gt; test-x + test-width
curr-x + curr-width &lt;= test-x
curr-y &gt; test-y + test-height
curr-y + curr-height &lt;= test-y


If any of these are true, then you're no longer interested.

So your function then becomes something like:

typedef std::multimap&lt;Point2D, GameObj*&gt; ObjectSpace;
void World::checkForCollisions()
{
    for (int i = 0; i &lt; objectsVector; ++i) {
        GameObj* currObj = objectsVector[i];
        for ( ObjectSpace::iterator ito = objectsmap.begin(); ito != objectsMap.end(); ito++ ) {
            const GameObj* test = it-&gt;second;
            if ( test == currObj ) continue;
            if ( outsideBoundingRectangle( currObj, test ) ) continue;
            if ( checkCollision( currObj, test ) ) {
                    currObj-&gt;handleCollision( test );
            }
        }
    }
}


This may be enough for a reasonable speed.