For simplicity, it's easier to have one vector/array that has all the objects that are alive. You don't want to check if they are alive in order to update them. That list represents the objects that need to be updated. Have a second vector/array, a stack if you will, that you add "dead" objects to once they are not needed for the time being. Once you need to reuse them simply pop them back into your vector that you're calling an update on.
If you're going by this approach might be interesting to read on object-pools
Of course you could also just remove them from memory and create new objects by instantiating them when needed. Eitherway, it's cleaner if you only hold your objects that actually need updating. All your objects that don't need to be updated( because they are inactive/dead) shouldn't be there.