STL之map实现(五)

来源:互联网 发布:powerdvd源码输出 编辑:程序博客网 时间:2024/06/11 04:00

接下来,实现插入函数

void SortedMap<K,E>::insert(const pair<const K,E>& thePair)

{

    //找到你插入的位置

     pairNode<K,E>* p =firstNode ,*tp=NULL;

   //不能存在重复的key,如果出现重复的key后面的会覆盖掉前面的

    while(p!=NULL&& p->element.first<thePair.first){

       tp=p;

       p=p->next;

      }


     //判断是否存在

     if(p!=NULL&&p->element.first==thePair.first)

    {

        //存在相同的键值,让后面的覆盖前面的

         p->element.second=thePair.second;

         return ; 

     }


      //不存在----创建新的一个结点插进去   (tp是插入位置上一个,p和tp相邻,即在p和tp之间插入)

      //newNode=thePair ,next=p;

      pairNode<K,E>*   newNode=new pairNode<K,E>(thePair,p);

       if(tp==NULL)

       {

            //意味着是第一个结点

            firstNode=newNode;

        }

     else

      {

        tp->next=newNode;

       }

        dSize++;

}

好了,插入功能就实现,就是这么简单,不用着急,其他功能和源码明天附上。





0 0