無差別に技術をついばむ鳥

情報処理技術全般を気まぐれにつつくゆるいブログです

STLをつつき彫る1−pairテンプレート。何時も仲良し♪

記念するべき第一弾はutilityに属するpairをつつき彫るピヨッ♪実装を見た方が話しが早いと思うから、早速実装をお見せするピヨ♪


//utility.hファイルへ実装 #ifndef UTILITY_ #define UTILITY_ #include <iosfwd> namespace indre { /----------------------------------------------------------------------- 二つの対となる値を保持する構造体。 -----------------------------------------------------------------------/ template< class T1, class T2 > struct pair { //フィールド typedef T1 first_type; typedef T2 second_type; //引数を持たないコンストラクタ pair() : first( T1( ) ), second( T2( ) ) { } //引数を持つコンストラクタ pair( const T1& V1, const T2& V2 ) : first( V1), second( V2 ) { } //テンプレートクラス template< class U1, class U2 > pair( const pair<U1, U2>& X ) : first( X.first ), second( X.second ) { } T1 first; T2 second; }; /----------------------------------------------------------------------- pairテンプレートの各種演算子。 -----------------------------------------------------------------------/ template< class T1, class T2 > inline bool operator == ( const pair< T1, T2 >& X, const pair< T1, T2 >& Y ) { return (X.first == Y.first && X.second == Y.second ); } template< class T1, class T2 > inline bool operator != ( const pair< T1, T2 >& X, const pair< T1, T2 >& Y ) { return ( ! ( X == Y ) ); } template< class T1, class T2 > inline bool operator < ( const pair< T1, T2 >& X, const pair< T1, T2 >& Y ) { return ( X.first < Y.first || ! ( Y.first < X.first ) && X.second < Y.second ) ; } }

うーん。本と同じになってしまったピヨォッ!
変えようと思ったんだけど、コードが少なすぎて変更できなかったorz
それは、さておき、例の本を読んでいない人は、演算子の定義が気になると思う。例えばここ、

return ( X.first < Y.first || ! ( Y.first < X.first ) && X.second < Y.second ) ;
一見すると不思議な実装だけど、STLの実装には無駄なんて無く、これにも意味があるピヨ。この様に一つの演算子のみを使用した方が効率がいいからなんだ。詳しい説明は難しいから今後日を改めてするピヨ♪
実装したら早速テストしよう!テストプログラムは、STLをつつく1−pairテンプレート。仲良く行こう♪の記事にあるサンプルを使ってね♪その際、//#define TEST のコメントを解除しよう。これでテストが行えるピヨ♪
今回はこれ以上何も囀る事がないからこれでおしまい。

バサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサ

別窓 | C++ | コメント:0 | トラックバック:0 | ∧top | under∨
<<ネットワークをつつく0−ネットワークって何?食べられるの? | 無差別に技術をついばむ鳥 | STLをつつく1−pairテンプレート。仲良く行こう♪>>

この記事のコメント

∧top | under∨

コメントの投稿

 

管理者だけに閲覧
 

この記事のトラックバック

∧top | under∨
| 無差別に技術をついばむ鳥 |