Generic programming と STL

Slides:



Advertisements
Similar presentations
アルゴリズムとデータ構造 第2回 線形リスト(復習).
Advertisements

プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
5.データ構造入門 5-1.連結リスト(Linked List) 5-2.スタック(Stack) 5-3.キュー(Queue)
プログラミング言語としてのR 情報知能学科 白井 英俊.
オブジェクト指向プログラミング(4) 静的分析(2)
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
第13回構造体.
ファーストイヤー・セミナーⅡ 第8回 データの入力.
第12回構造体.
アルゴリズムとプログラミング (Algorithms and Programming)
2章 データ構造.
情報工学概論 (アルゴリズムとデータ構造)
プログラミング演習II 2004年10月19日(第1回) 理学部数学科・木村巌.
オペレーティングシステムJ/K 2004年11月4日
第8回 プログラミングⅡ 第8回
クラス図(1) 後半 FM13010 村上 太一.
アルゴリズムとデータ構造 2011年6月13日
構造体.
プログラミング演習II 2004年12月 21日(第8回) 理学部数学科・木村巌.
情報理論2 第6回 小林 学 湘南工科大学 2011年11月15日 〒 神奈川県藤沢市辻堂西海岸1-1-25
アルゴリズムとデータ構造 第4回 配列によるスタックとキュー.
①データ構造 ②アルゴリズム ③プログラム言語 ④マークアップ言語
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
2009/10/16 いろいろなデータ構造 第3講: 平成21年10月16日 (金) 4限 E252教室 コンピュータアルゴリズム.
プログラミング論 関数ポインタ と 応用(qsort)
ちょっとした練習問題① 配列iroを['R', 'W', 'R', 'R', 'W' , 'W' , 'W']を宣言して、「W」のときの配列の番号をprintfで表示するようなプログラムを記述しなさい。
プログラミング 4 記憶の割り付け.
画像処理プログラムの説明.
第7回 プログラミングⅡ 第7回
第11回 プログラミングⅡ 第11回
C#言語ソースプログラムの原型 C言語 C#言語 Hello World! Hello Students! オマジナイ! 適当なクラス名
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
岩村雅一 知能情報工学演習I 第12回(C言語第6回) 岩村雅一
明星大学 情報学科 2012年度 後期   情報技術Ⅱ   第8回
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
スタックとキュー データ構造とプログラミング (第5回).
6.データ構造入門 6-1.連結リスト(Linked List) 6-2.スタック(Stack) 6-3.キュー(Queue)
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング 3 2 次元配列.
C#プログラミング実習 第3回.
アルゴリズムとデータ構造 2012年6月11日
アルゴリズムとプログラミング (Algorithms and Programming)
オペレーティングシステムJ/K (管理のためのデータ構造)
11.1 標準ライブラリ関数 11.2 関数呼び出しのオーバーヘッド 11.3 大域変数 11.4 プロトタイプ宣言 11.5 関数引数
アルゴリズムとデータ構造1 2009年6月15日
ネットワーク・プログラミング Cプログラミングの基礎.
第5回 プログラミングⅡ 第5回
情報処理Ⅱ 2007年12月3日(月) その1.
cp-2. 属性,アクセサ (C++ オブジェクト指向プログラミング入門)
情報工学科 3年生対象 専門科目 システムプログラミング 第3回 makeコマンド 動的リンクライブラリ 情報工学科 篠埜 功.
プログラミング 4 文字列.
アルゴリズムとデータ構造 2010年6月17日
岩村雅一 知能情報工学演習I 第12回(後半第6回) 岩村雅一
情報工学科 3年生対象 専門科目 システムプログラミング 第3回 makeコマンド 動的リンクライブラリ 情報工学科 篠埜 功.
ソフトウェア工学 知能情報学部 新田直也.
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
関数と再帰 教科書13章 電子1(木曜クラス) 2005/06/22(Thu.).
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
プログラミング演習II 2004年11月 16日(第5回) 理学部数学科・木村巌.
プログラミング演習II 2004年11月 2日(第3回) 理学部数学科・木村巌.
プログラミング入門2 第5回 配列 変数宣言、初期化について
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
TList リスト構造とは? 複数のデータを扱うために、 データの内容と、次のデータへのポインタを持つ構造体を使う。
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
Presentation transcript:

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

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

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

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

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

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

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

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

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

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

参考サイト STL samples http://www.s34.co.jp/cpptechdoc/reference/stl_samples/ STL(ソースコードのサンプル) http://www.ne.jp/asahi/yamashita/programming/tips/stl.html C++のリファレンス http://www.cppll.jp/cppreference/index.html