[multiset.insert] comportement étrange
Bonjour tout le monde,
prenons le bout de code suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #include <set>
#include <iostream>
using namespace std;
struct Element
{
Element(int n):num(n){cout<<"new"<<endl;}
~Element(){cout<<"delete"<<endl;}
int num;
bool operator < ( const Element & elt ) const { return ( num < elt.num ); }
};
int main()
{
multiset<Element> theSet;
cout << "--> insert" << endl;
theSet.insert( Element(1) );
cout << "--> clear" << endl;
theSet.clear();
cout << "--> termine" << endl;
return 0;
} |
La sortie est:
Citation:
--> insert
new
delete
--> clear
delete
--> termine
Nous voyons donc que:
-> lors de l'insertion, le destructeur est appelé
-> on a, en tout, 1 new et 2 delete
Comprenez-vous ce qu'il se passe? Est-ce normal?