In my opinion, it may be useful to have both.
When you set the position of your game objects on the map, if you manage to compute the tile(s) that are containing it (which is quite straight-forward), then it is a good solution to have your tiles owning reference to these items so that you can directly check the tile(s) that your character is on.
However, you could also at some point in your game have to iterate through all the objects on your map for whatever reason. In that case, it would be better to have a container having a reference to all of these objects. This container could be a std::vector, but it also could be a more advanced data model like a binary/quad tree to spacially divide your map and accessing faster to specific game objects for example.
So yeah, both solutions are good, it really depends on your game and what you want to achieve with it.