stl map - could any one explain the o/p

class tst
{
   public:
      tst() {
         cout<<"ctor tst()\n";
      }
      tst(const tst& ob) {
         cout<<"cp ctor tst()\n";
      }
      ~tst()
      {
         cout<<"dtor tst()\n";
      }
};
map<string,tst> mp;
int main(void)
{
   mp["111"];
   //mp["111"]=tst();
}

output:

ctor tst()
cp ctor tst()
cp ctor tst()
dtor tst()
dtor tst()
dtor tst()

You create an object with tst(), which is later destroyed.
A temporary copy of it is made for some reason when assigning it to the map, which is later destroyed.
Another copy is created to be stored inside the map, which is later destroyed, and with it, the object.

C++'s structure tends to the redundant copying of the copied copy copies sometimes, so this isn't too suprising.