今回は
utilityに属するpairをつつくピヨ♪このテンプレートは、
1つの組となる値を保持する構造体を提供するものピヨォ♪。例えば、IDと名前を保持する構造体をプログラムで使いたい場合や、誰と誰が恋人同士なのかを保持する構造体が欲しい時とかに使用するピヨ♪
前置きはこれぐらいにして、お楽しみのサンプルをお見せするピヨ♪
//#define TEST
#include
#include
#ifdef TEST
#include "utility.h"
using namespace indre;
#else
#include
using namespace std;
#endif
//テスト用のPairクラス
typedef pair< int, char > Pair_Foo;
int main() {
//引数を持たないコンストラクタのテスト
Pair_Foo p1;
assert ( p1.first == 0 );
assert ( p1.second == 0 );
std::cout << "引数を持たないコンストラクタの初期値は、first = " <<
p1.first <<
" second = " << p1.second << " です。\n";
//引数を持つコンストラクタのテスト
int param1 = 0;
char param2 = 'test';
Pair_Foo p2 = Pair_Foo ( param1, param2 );
assert ( p2.first == param1 );
assert ( p2.second == param2 );
std::cout << "引数を指定してコンストラクタを呼び出しました。\n" <<
"値はfirst = " << p2.first <<
" second = " << p2.second << " です。\n";
//演算子のテスト
assert ( p1 != p2 );
std::cout << "p1とp2は等価ではありません。\n";
assert ( p1 < p2 );
std::cout << "p1はp2未満です。\n";
assert ( p1 <= p2 );
std::cout << "p1はp2以下です。\n";
assert ( p1 == p1 );
std::cout << "当たり前ですが、p1とp1は等価です。\n";
assert ( p2 > p1 );
std::cout << "p2はp1より超えています。\n";
assert ( p2 >= p1 );
std::cout << "p2はp1以上です。\n";
}
このサンプルを実行したら、
utility::pairが比較も出来る便利な構造体を作ってくれるという事が分かるピヨ♪プログラミングをしていると、組で扱えたら便利だと思うオブジェクトが結構あるから便利だね♪えっ?何でアサートとかあるかって?それはねぇ、この記事がSTLをつつき彫るシリーズと連動しているからなんだピヨッ♪STLを実装したらテストが必要だから、そのテストを有効利用するためにこのシリーズを書く事にしたんだ。一石二鳥だね♪