Vecteur de pointeurs partagés , des problèmes de mémoire après avoir franchi le vecteur

J'ai réalisé qu'après l'appel de vector.clear() qui détiennent partagé les pointeurs, les destructeurs de l'objet qui est le propre par shared_ptr n'est pas publié.

Exemple de Code peut être vu ci-dessous . Même vector.clear() être appelé, destructeur appelé après pointeur partagé va au-delà de la portée.Ma question est - ce que je dois supprimer tous les pointeurs intelligents à l'intérieur du vecteur manuellement par la réinitialisation? Est-il un moyen plus facile que vous pouvez conseiller ?

Output :   

constructor
I am here
destructor

Code:

#include <vector>
#include <iostream>
#include <memory>

using namespace std;

class A
{
public:
    A(){cout << "constructor" << endl;};
    ~A(){cout << "destructor"  << endl;};
};

int main( )
{
    shared_ptr<A> sharedptr (new A);
    std::vector<shared_ptr<A> > test;
    test.push_back(sharedptr);

    test.clear();
    cout << "I am here" << endl;
}

OriginalL'auteur Kadir Erdem Demir | 2013-10-12