I don't believe that will call the constructor, this will however.
delete vec[0];
vec[0] = new Ccustom1(2);
If you ever need to see whether something is being destructed, either place a breakpoint inside constructor, or just go:
~Ccustom1()
{
std::cout << "Destructed" << std::endl;
}
Alternatively, check out boost. The STL only cleans up the resources that it allocates internally. Generally if you call operator new then it is up to you to call operator delete. the vector, in that case, only allocates memory to hold pointers but doesn't know where the memory for the objects pointed to came from. http://www.boost.org/doc/libs/1_45_0/libs/ptr_container/doc/ptr_container.html