比方说我有:
vector<T *> vect;
Run Code Online (Sandbox Code Playgroud)
我知道这不是明显的方法,但我有一个API可以做到这一点,所以我不能决定使用它vector<T>.
所以当我把对象放进去的时候我会:
vect.push_back(new T);
Run Code Online (Sandbox Code Playgroud)
这段代码是否会确保此向量是连续对齐的,因为它是指针的向量?这个容器会决定new操作员的行为吗?
编辑:我还需要打电话给delete那些吗?
这个代码是否会确保这个向量是对齐的,因为它是指针的向量?
不确定你对这个上下文中的align的理解是什么,但是情况类似于指针数组,其中每个指针都被分配了动态内存.指针数组位于连续的位置,每个指针都指向位于堆上某处的内存.
在指针元素的向量的情况下,这同样适用.
我还需要打电话给delete那些吗?
是的,您需要delete明确地调用每个元素.
标准库容器不负责在元素为指针的情况下释放元素的内存.
好读:
vector :: erase()会破坏被删除的对象吗?