C++プログラミング必須神器STL——容器編

9667 ワード

STLはC++内蔵の標準テンプレートライブラリで、その中には多くの私たちがよく使うデータ構造とアルゴリズムが内蔵されています.日常のプログラミングとコンテストのプログラミングで合理的に使用できれば、私たちのプログラミング効率を大幅に向上させます.今日、ブロガーは私たちが最もよく使うSTLコンデンサとその内部に含まれる一般的な方法を簡単に紹介します.
stl容器共通操作
ConstType c  //             
ConstType c1(c2)  //        
ConstType c(beg,end)  //  [beg,end]     ,      
c.size()  //         
c.empty()  //        
c.max_size()  //          
c1.swap(c2)  //  c1 c2  
c.begin()  //       ,      
c.end()  //       ,           
c.rbegin()  //         ,             
c.rend()  //         ,                 
c.insert(pos,elem)  // elem        pos ,        
c.erase(beg,end)  //  [beg,end]        
c.clean()  //      ,    
ConstType<xxxxxx>::iterator pos//       ,             (pos=c.find(3) pos->first     ,pos->second     )

Vector特殊操作
vector c  //      Elem     vector
c.assign(n,elem)  //  n elem,   c
c.assign(beg,end)  //   [beg,end]      c
c.front()  //       
c.back()  //        
c.insert(pos,n,elem)  // pos   n elem  
c.insert(pos,beg,end)  // pos   [beg,end]  
c.push_back(elem)  //       elem  
c.pop_back()  //        

SetsとMultisets
//set multiset          ,       (        ,           )
//multiset       set     
set&lt;Elem> c  //  set,       
set&lt;Elem,Op> c  //  set, Op     
c.count(elem)  //     elem     
c.find(elem)  //     elem      ,        c.end()
c.lower_bound(elem)  //  elem         ,      >=elem      
c.upper_bound(elem)  //  elem          ,      >elem      
c.equal_range(elem)  //  elem             ,      ==elem     

MapsとMultimaps
//map multimap key/value pair    ,    ,     key            ,      key  ,        
//multimap     map     
map c  //    map,       
map c  //    map, Op     
c[key]  //    reference,     key   ,      ,      
// set, count,find,lower_bound,upper_bound,equal_buond

Pair
pairvalue> c(key,value)  //    pair,   c,    key,value
c.first()  //      
c.second()  //      
//   make_pair(key ,value)      pair
//  pair     ,           ,                  ,                

Stacks
//LIFO(    )    <stack>   
stack st;
st.push()  //       stack 
st.top()  //      
st.pop()  //      ,       
st.size() //        
st.empty()  //       

Queues
//FIFO(    )    <queue>   
queue Q;
Q.push()  //           
Q.front()  //        
Q.back()  //        
Q.pop()  //        
Q.empty()  //        
Q.size()  //         

Priority Queues
//   Queue                      ,             (        )
priority_queue pQ;
pQ.push()  //          ,       
pQ.top()  //               
pQ.pop()  //               
pQ.size()  //      
pQ.empty()  //      

String
string s(str)  //  str     
string s(str,stridx)  // str   stridx     s   
string s(str,stridx,strlen)  // str   stridx      strlen     s   
string s(beg,end)  //   [beg,end]        
s.substr(stridx)  //   stridx     
s.substr(beg,end)  //  [beg,end]      
s.substr(strlen,find(value))  //       char          strlen      
s.find()  //      value     
s.rfind()  //       value     (    )
s.find_first_of()  //      value         
s.find_last_of()  //       value        
s.find_first_not_of()  //      value         
s.find_last_not_of()  //       value         
s.begin()  //       
s.end()  //        
s.append(beg,end)  //           s  
s.assign(beg,end)  //           s
s.insert(pos,c)  // pos     c,           
s.insert(pos,num,c)  // pos   num c,               
s.insert(pos,beg,end)  // pos      [beg,end]        
s.erase(pos)/(beg,end)  //  pos    /        
s.replace(bag,end,str)  // str          
s.replace(beg,end,num,c)  // num c          
s.replace(beg,end,nbeg,nend)  // [nbeg,nend]  [beg,end]        
s.empty()  //  s    
s.length()/size()  //