C++のSTLテンプレート使用(機試打ちよ!)


STLテンプレートが使えるなら、コードを書くスピードは本当にup up up!しかし、使い方を覚えておくには、熟能生巧という方法でしょう.ここでまとめて、早速復習してみます.
  1、vector
  • ヘッダファイル#Include
  • vectorは長くなる配列と理解できる
  • 定義:vectorname;例えばvectorvi;2 D配列vectorviであれば[100].
  • 要素アクセス:1)下付きvi[index]2)反復器vector::iterator it;
    vector::iterator it = vi.begin();
    for(i=0;i<5;i++)
    {
       print("%d ",*(it+i));
    }
    

    begin()はvectorヘッダアドレス、end()はヘッダエレメントの次のアドレス(左閉右開)
  • for(vector::iterator it=vi.begin(); it!=vi.end();it++)  
     #   it!=vi.end()
    {
        print("%d ",*it);    
    }
  • vector関数
  • 1) push_back()vectorの後に要素xを追加(末尾に追加)
       v.push_back(x);
    2)pop_back()末尾要素の削除
    3)size()計算要素個数
    4)clear()クリア
    5)insert()insert(it,x)vector反復器itに要素を追加する
    vi.insert(vi.begin()+2,-1)#vi[2]の位置に-1を挿入
    6) erase()   
    erase(it)反復器をitの下付きに削除
    erase(first,last)[first,last]内のすべての要素vi.erase(vi.begin()+1,vi.begin()+4)を削除します.
    2、set内部自動並べ替え、重複要素を含まない
  • set nameを定義する.
  • 要素アクセス:反復器
  • のみ
  • 共通関数
  • 1)insert(x)
    2)find(x)setの要素がxの反復器を返す
    printf("%d",*(st.find(2));
    3)erase()  
    find()s.erase(it);
    3、string
  • 入出力cin>>cout<<
  • printf()を出力する場合は、printf("%c",s.c_str();
  • 共通関数
  • 1)+=2文字列の接続
    2)コンパレータ>=<=!=ディクショナリ順にソート
    3)長さsize()/length()
    4) insert()
    Insert(pos,str)文字列posの位置に文字列strを挿入する
    Insert(it,it 2,it 3)itは元の文字列が挿入したい位置であり、it 2とit 3は挿入される文字列の先頭と末尾の反復器である
    5)erase()
     erase(pos,str) 
    6)substr(pos,len)はpos番号ビットから長さlenのサブ列を返す
    7)find()
    find()string::npos/-1が見つかりませんでした
    str.find(str 2,pos)はstr 2のposからマッチングを開始し、str 2がstrで初めて現れる位置を返す
    8)replace()
    str.replace(pos,len,str 2)strをpos番号から始め、str 2を長さlenのサブストリングで置き換える
    str.replace(it 1,it 2,str 2)strの反復器[it 1,it 2]範囲のサブ列をstr 2に置き換える