Presentation is loading. Please wait.

Presentation is loading. Please wait.

Generic programming と STL

Similar presentations


Presentation on theme: "Generic programming と STL"— Presentation transcript:

1 Generic programming と STL
H107034 神谷 真輝 H107124 山下 陽平

2 Generic programmingとは
データ型に依存しないプログラミングのこと たとえば   データ型に依存していると   →それぞれの型に対応したコードが必要   データ型に依存しないと   →コードは一つで十分

3 テンプレート テンプレート機能を使うことで 決まった型に依存しないプログラミングを! テンプレート関数
template <class T> 返り値の型 関数名(T& 引数) { T 変数名; // T型の変数を定義 }

4 テンプレート クラステンプレート 普通の関数、クラスと同じように扱える 引数、戻り値、ローカル変数が型に依存しない
template <class T> class クラス名 { メソッド名(const T prm_t) { m_t = pram_t} T m_t; };

5 STLとは Standard Template Libraryの略。 C++の標準ライブラリの一つである。 テンプレート機能を最大限構成をとっており、 コンテナ、イテレータ、アルゴリズム、 関数オブジェクトからなっている。

6 コンテナ データを格納するもの ヘッダファイル名は使うコンテナ名と同じ コンテナの一覧 …etc vector
実行時に配列の大きさを変えることができる配列 list 双方向にアクセス可能な線形リスト queue 先入れ先出し(FIFO)のキュー deque コンテナの両端からアクセスできるキュー stack 先入れ後出し(FILO)のスタック

7 イテレータ コンテナの各要素を参照するためのクラス (配列の添え字、ポインタに近い) イテレータの種類
 (配列の添え字、ポインタに近い) イテレータの種類 入力イテレータ、出力イテレータ、前方イテレータ 双方向イテレータ、ランダムアクセスイテレータ ※イテレータは変数として宣言して使用する  vector<class名>::iterator itr   = vect.begin();  vector<class名>::iterator itrEnd  = vect.end();

8 アルゴリズム 一般的なアルゴリズムの意味ではなく、 イテレータで指定したコンテナへの操作を行う関数 ヘッダファイル名はalgorithm
 イテレータで指定したコンテナへの操作を行う関数 ヘッダファイル名はalgorithm 使えるアルゴリズムは標準で100以上存在する  コピー、ソート、最大値最少値、カウント、探索  置換、削除、並べ替え    …etc 基本的なアルゴリズムはまず存在する  →コードが数行で済むというメリット

9 関数オブジェクト オブジェクトを関数であるかのように扱うことができる 例 #include <cstdio>
#include <functional> void Use_plus() { int i; std::plus<int> cPlus; // 関数オブジェクト i = cPlus( 100, 200 ); printf( "%d\n", i ); }

10 課題 Int型のvectorコンテナに5つ数字を格納し、イテレータ を用いて表示する。 Studentクラス型のvectorコンテナを作る。
 ・メンバに名前(文字列),学年(数字),学籍番号(文字列)  ・実行時、ユーザにメンバの値を入力させる。 Studentクラスをソートする  ・名前順  ・学年順にソートし同学年の場合は学籍番号順 の二つを行い結果を表示する。

11 参考サイト STL samples STL(ソースコードのサンプル) C++のリファレンス


Download ppt "Generic programming と STL"

Similar presentations


Ads by Google