12/20 標準テンプレートライブラリ(STL)

課題1

以下は標準テンプレートライブラリ(STL) の queue の使用例である。 int 以外のオブジェクトでも動作を確認しなさい。
#include<iostream>
#include<queue>
using namespace std;

int main ( ) 
{

  queue<int> q;

  q.push(3);
  q.push(1);
  q.push(2);

  while ( ! q.empty() ) {
     cout << q.front() << endl;
     q.pop();
  }

  return 0;
}

課題2

以下は標準テンプレートライブラリ(STL) の priority_queue の使用例である。 string 型のデータを格納する priority_queue を使ってみなさい。
#include<iostream>
#include<queue>
using namespace std;

int main ( ) 
{

  priority_queue<int> pq;

  pq.push(3);
  pq.push(1);
  pq.push(2);

  while ( ! pq.empty() ) {
     cout << pq.top() << endl;
     pq.pop();
  }

  return 0;
}

課題3

以下は標準テンプレートライブラリ(STL) の map の使用例である。 これを参考にして、 12/13 課題1(外部チェイン法によるハッシュ表) の Maplinear を STL map で置き換え、実行してみなさい。
#include<iostream>
#include<map>
#include<string>
using namespace std;

int main( )
{

   map<string,int> m;

   m["May"] = 3;     // データの登録 
   m["July"] = 7;
   m["April"] = 4;

   map<string,int>::iterator itr;  // イタレータとはポインタみたいなもの 
   // このプログラムでは先頭に typename は付けないが、
   // 他のテンプレート中で、map のイタレータを使うときは以下のように
   // 先頭に typename を付ける。
   // typename map<string,int>::iterator itr; 

   itr = m.find("April");     // データの検索 
   if ( itr != m.end() )
      cout << itr->first << " " << itr->second << endl;
   else
      cout << "not found " << endl; 

   itr = m.find("June");
   if ( itr != m.end() )
      cout << itr->first << " " << itr->second << endl;
   else
      cout << "not found " << endl;

   cout << endl;

   for( itr = m.begin(); itr != m.end(); itr ++ )   // 全データの参照 
      cout << itr->first << " " << itr->second << endl;

   itr = m.find("July");   //  データの削除 
   if ( itr != m.end() )
      m.erase( itr );

   cout << endl;

   for( itr = m.begin(); itr != m.end(); itr ++ )
      cout << itr->first << " " << itr->second << endl;

}