2015年3月31日火曜日

C++のテンプレートクラスの勉強 リングバッファを利用したキューの実装

今回はC++のテンプレートクラスについて学習したことと, 実際に使用した例としてリングバッファを利用したキューの実装について扱います.

テンプレートクラスについて

C++のテンプレートクラスはクラスを定義するときに複数回出てくるような型を一般的な形で
<class T>のように書いておき(Tが後から指定して使い回したい型)後で型Tを指定する文法です.
要は型は違いますが, 操作は同じものをもったクラス達をまとめて作るために使うものです.  主に
スタックやキューなどのデータ構造の実装に威力を発揮するでしょう.

キューの実装

テンプレートクラスを利用して以下のようなリングバッファを利用したキューを作ってみました.
キューを使う場合に
  • 動的にメモリを確保してバッファを作る場合
  • あらかじめ確保しておいた領域をバッファとして利用したい場合
のようなシチュエーションが考えられるので, コンストラクタでこれらの選択ができるようにしてあります.  2つめのシチュエーションはnew演算子を用いてメモリの確保を行うことにかかる時間を節約したいという場合です.  予めRAMの一部をバッファ専用に割り当ててしまうので動的に使えるRAMは減ってしまいますが, 速さが求められる場合には有効です.  2つのシチュエーションの間には速さとメモリのトレードオフがあるわけです.    

0 件のコメント:

コメントを投稿