C++ 容器插入和刪除


插入方法:

1.  vector、list的insert用法:

        (1)iterator insert( iterator loc,  const TYPE &val )

        (2)void insert( iterator loc,  size_type num,  const TYPE &val )

        (3)void insert( iterator loc,  input_iterator start,  input_iterator end )

2.  map的insert用法:

      若map<string,int> m,插入方法如下:

        (1)m.insert(map<string,int>::value_type("hello",5));

        (2)m.insert(make_pair("hello",5));

   insert的返回類型為:

              pair<   map<string,int>::iterator,  bool   > 

                    pair的first參數是:  插入位置的迭代器(map<string,int>::iterator)

                    pair的second參數:插入是否成功的標志(bool)

 

刪除方法:

1. 刪除元素element,則:

    (1)vector刪除元素的用法:

             vi.erase(  remove(vi.begin(), vi.end(), element),  vi.end()  );        

    (2)list刪除元素的用法:

             li.remove(element);      

    (3)map刪除元素的用法:

             m.erase(element);      

2.刪除判斷函數 bool judge(int) 返回真的元素,則:

    (1)vector刪除元素的用法:

             vi.erase(  remove_if(vi.begin(), vi.end(), judge), vi.end()  );        

    (2)list刪除元素的用法:

             li.remove_if(judge);      

    (3)map刪除元素的用法:

         for(auto itor=m.begin(); itor!=m.end(); )
             {
                    /*注意:這里有三種方法避免erase(itor)后itor失效的問題*/
                    if( judge(itor->second) )       //當erase(itor)后,itor會失效,所以此處要用erase(itor++)
                    {
                          /*方法一*/
                           m.erase(itor++);             //參數處理優先於函數調用
                          /*方法二*/
                           auto itortmp = itor;       //模擬了方法一的過程
                           ++itor;
                           m.erase(itortmp);
                          /*方法三*/
                           itor = m.erase(itor);      //erase函數釋放itor后,會返回指向下一個元素的指針來獲取最新的itor
                    }
                    else
                        ++itor;
             }
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM