出于测试目的,我试图创建自己的矢量类,但我无法弄清楚std::vector
大小缩减是如何工作的。
class A
{
A()
{ std::cout << "A constructed") << std::endl; }
~A()
{ std::cout << "A destroyed") << std::endl; }
}
main()
{
std::vector<A> vec(3, A());
vec.resize(2);
std::cout << "vector resized" << std::endl;
}
输出是
A constructed (1)
A constructed (2)
A constructed (3)
A destroyed (1)
Vector resized
A destroyed (2)
A destroyed (3)
当vec.resize(2)
被调用时,第三个元素被销毁,但向量的容量仍然是3。那么当vec
被销毁时,它的所有元素包括已经被销毁的元素都应该被销毁。怎么std::vector
知道他已经破坏了那个元素?如何在我的向量类中实现它?