C++編で扱っている C++ は 2003年に登場した C++03
という、とても古いバージョンのものです。C++ はその後、C++11 -> C++14
-> C++17 -> C++20 -> C++23 と更新されています。
なかでも C++11 での更新は非常に大きなものであり、これから C++
の学習を始めるのなら、C++11
よりも古いバージョンを対象にするべきではありません。特に事情がないなら、新しい
C++ を学んでください。 当サイトでは、C++14 をベースにした新C++編を作成中です。
問題① たとえば 100 と “abc” という値のペアを管理する pair があるとき、標準出力へ “100, abc” という形式で出力する汎用的な関数を作成してください。
std::cout には、直接 pair を渡せません。ここでは関数化してみます。
#include <iostream>
#include <utility>
#include <string>
template <typename T1, typename T2>
void PrintPair(std::pair<T1, T2> p)
{
std::cout << p.first << ", " << p.second << std::endl;
}
int main()
{
std::pair<int, double> a(10, 3.5);
std::pair<int, std::string> b(10, "abc");
(a);
PrintPair(b);
PrintPair}
実行結果:
10, 3.5
10, abc
問題② pair の pair を試してみてください。
#include <iostream>
#include <utility>
#include <string>
int main()
{
typedef std::pair<int, std::pair<std::string, std::string> > NamesPair;
(0, std::make_pair("Tanaka", "Takuya"));
NamesPair a
std::cout << a.first << ", " << a.second.first << " " << a.second.second << std::endl;
}
実行結果:
0, Tanaka Takuya
ID のような整数値と、苗字・名前を管理する pair の pair を想定しています。pair の pair は、型名が非常に長くなるので、typedef を使って簡潔な型名を定義するのがセオリーです。
出力している行を見ると分かるように、「a.second.first」のような、一見して意味が分かりづらい記述になるのが大きな欠点でしょうか。
新規作成。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |