Why not std::map<GroupId, GroupState>?