std::vector 的基础 class 与派生对象

std::vector of Base class with Derived objects

我有一个 std::shared_ptr 的双端队列声明有一个基 class 的双端队列(我们称它为多边形),但我在它上面存储了指向派生对象(例如三角形)的指针。我现在正在考虑将数据结构更改为 std::vector 以使用 vector 确保相邻内存这一事实,但我在这里有几个问题:

1) 即使物体有不同的大小,这也可能吗?或者可能会发生由于派生对象大于基础对象,它们将在内存中重叠?

2) 存储std::shared_ptr 我不会将它们直接放在内存中,只是指针是真的吗?还是我错了?

谢谢

Is this possible even if the objects have different sizes? Or can happen that due to the derived objects are bigger than the base one they are going to overlap in memory?

这很好。即使 Derived 可以大于 Base 你实际上并没有将它们存储在向量中。您正在存储指向它们的指针,并且指针的大小始终相同。

Storing std::shared_ptr I'm not going to have them literally together in memory just the pointers is it true? Or am I wrong?

正确,指针将在向量中并排放置,但它们指向的内容可能在内存中的任何位置。