IMO I doubt any syntatic change you make will matter so long as the predicates are the same and the overall result of the expressions are the same, the compiler will almost certainly reorganise your statements to maximize things you arn't even worrying about yet (cache, BPU hit rate, instr. pipeline/mem stalls etc)
On a side note, and just out of interest.
This is an excellent candidate for paralleling.
PS> this is off the top of my head, probably won't compile
typedef std::vector< Player >::iterator player_iter;void heal_thread_func(player_iter begin, player_iter end) { for( player_iter i = begin; i != end; ++i ) { if( i->GetTeam() == 2 && i->GetHP() < 75 && i->IsAlive() ) { i->Heal(); } }}void heal() { boost::thread_group* tg = new boost::thread_group(); const int c = player.size() / 3; tg->create_thread( boost::bind(&heal_thread_func, player.begin(), player.begin() + 1*c ); tg->create_thread( boost::bind(&heal_thread_func, player.begin() + 1*c, player.begin() + 2*c ); tg->create_thread( boost::bind(&heal_thread_func, player.begin() + 2*c, player.end() ); tg->join_all();}