If the size of the grid is static (m x n), you can just hard-code it:
enum GridOccupant {EMPTY, PREY, PREDATOR};
GridOccupant Grid[m][n] = {EMPTY};
If the grid is dynamic, the question is whether you're allowed to use things from the Standard Template Library (STL), like std::vector[^], or whether you're supposed to allocate the memory yourself. When the user specifies the location of Prey or Predator, you create one and add it to PreyAnimals or PredatorAnimals. Again, the question is whether you're allowed to use the STL. Each Animal (the base class for Prey and Predator, if this helps your design) keeps track of its location in the Grid to make it easy to find. You might discover that you don't need Grid at all, only its dimensions (m x n).
Robust Services Core | Software Techniques for Lemmings | Articles
The fox knows many things, but the hedgehog knows one big thing.