sd::vector::push_back(val) stores a copy of val in the vector.
If your vector would store pointers, then each element in the vector would refer to some memory location, and could be dereferenced. The down-side is that you have to manage those memory locations somehow.
Word "parent" is often interchangeable with word "owner". While this is "just" semantics, it can affect how we communicate and approach problems.