2018年01月19日
《その244》 クラステンプレート pair (追加)
クラステンプレート pair に関して、少しだけ付け足しておきます。
◆"pair<string, double>" に typedef名 "str_dbl"を与えました。
やっぱり、 typedef名は便利ですね ◝(^O^)
◆デフォルトコンストラクタを利用した場合( プログラムの(6) )の結果から、
2つの要素 first、second には、それぞれ string(), double() が与えられていることがわかります。
◆等価演算子や関係演算子も、ちゃんと使えます。
2つの型が string と double なので扱ってもらえましたが、
pair に自作の型を持ち込んだら無理ですね。その場合は、必要な演算子を多重定義するしかありません。
以下は、プログラムです。
#include <utility>
#include <string>
#include <iostream>
using namespace std;
int main() {
// typedef名 : str_dbl
typedef pair<string, double> str_dbl;
// デフォルトコンストラクタを使用
str_dbl a1;
cout << "(1) " << a1.first << '\n';
cout << " " << a1.second << "\n\n";
cout << a1.first.length() << '\n';
// コンストラクタを使用
str_dbl a2("xyz", 2.71828);
cout << "(2) " << a2.first << '\n';
cout << " " << a2.second << "\n\n";
// コピーコンストラクタを使用
str_dbl a3(a2);
cout << "(3) " << a3.first << '\n';
cout << " " << a3.second << "\n\n";
// 代入演算子を使用
a2 = a1;
cout << "(4) " << a2.first << '\n';
cout << " " << a2.second << "\n\n";
// 等価演算子 「 == 」, 「 != 」
cout << "(5) " << (a1 == a2) << '\n';
cout << " " << (a1 != a2) << '\n';
cout << " " << (a1 == a3) << '\n';
cout << " " << (a1 != a3) << "\n\n";
// デフォルトコンストラクタによる初期化の確認
str_dbl c1;
string s = string(); double d = double();
str_dbl c2(s, d);
cout << "(6) " << (c1 == c2) << "\n\n";
// 関係演算子 「 < 」, 「 > 」, 「 <= 」, 「 >= 」
str_dbl b1("ABC", 1.2);
str_dbl b2("ACB", 1.0);
str_dbl b3("ABC", 1.0);
cout << "(7) " << (b1 < b2) << '\n';
cout << " " << (b1 <= b3) << '\n';
cout << " " << (b1 > b3) << '\n';
}
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/7215289
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック