std :: pair是否会破坏其动态分配的对象?

gho*_*ear 4 c++ stl

例如,像容器之类的容器std::vector<T*>销毁了所有由其添加的元素push_back(new T)。不会std::pair<T1*, T2*>做同样的,当你初始化它像{ new T1, new T }

我有这个问题,因为这std::pair是一种与类容器不同的结构(它仍然没有任何意义)。我找不到有关它的任何信息。

编辑:尽管我认为容器是delete它们动态分配的元素,但这是错误的。

use*_*751 11

没有。

std::vector不会销毁其指针已添加到其上的对象push_back(new T)

也没有std::pair


eer*_*ika 10

向量和配对均会破坏其元素。

向量和对都不破坏或取消分配其元素所指向的对象。

一些例子:

{
    std::vector<int> v {42};
}
Run Code Online (Sandbox Code Playgroud)

向量是动态分配的,并已释放。

{
    std::vector<int*> v {new int};
}
Run Code Online (Sandbox Code Playgroud)

向量是动态分配的,并已释放。我动态分配,并且泄漏了分配。

{
    std::pair<int, int> v {42, 24};
}
Run Code Online (Sandbox Code Playgroud)

没有任何动态分配。大。

{
    std::pair<int*, int*> v {new int, new int};
}
Run Code Online (Sandbox Code Playgroud)

我动态分配了两次,两次都泄漏了。

{
    std::pair<int*, int*> v {new int, new int};
    delete v.first;
    delete v.second;
}
Run Code Online (Sandbox Code Playgroud)

没有泄漏...。但是不要这样做。避免不必要的动态分配,并且不要使用拥有的裸指针。