問題CPP02203の解答例と解説 C++ Lv.3
map<int,string> 構築
<解答例 1>
F11キーでフルスクリーンモード、Escキーで元に戻ります。
これは問題文にあるコードをまねして続けて書いたものだよ。
<解答例 2>
F11キーでフルスクリーンモード、Escキーで元に戻ります。
これも正解だよ。map は常にキーの昇順でソートされた状態でデータを管理しているので、キーと値を追加する順番が変わっても find を実行するときはいつもキーの昇順に並んでいるから探索がバイナリサーチでできるんだ。だから map にキーと値を入れる順番は特に気にしなくても良いよ。
上のようにプログラムすると、multimapオブジェクトの中のすべての要素を標準出力することができるけれど、解答例1の場合と解答例2の場合は以下のように出力されるよ。
1994 | Lillehammer | |
1996 | Atlanta | |
1998 | Nagano | |
2000 | Sydney | |
2002 | Salt Lake City | |
2004 | Athens | |
2006 | Turin | |
2008 | Beijing | |
2010 | Vancouver | |
2012 | London | |
2014 | Sochi | |
2016 | Rio de Janeiro | |
2018 | Pyeongchang | |
2020 | Tokyo |
これは、map はキーと値のデータをいつもキーの昇順でソートされた状態で持っているからなんだ。
<解答例 3>
F11キーでフルスクリーンモード、Escキーで元に戻ります。
これも正解だよ。make_pairというのは、2つのデータを格納できるクラスである pair オブジェクトを作る関数で、map の中は実はこの pair でできているんだ。だから外側であらかじめ pair オブジェクトを作って、挿入することもできるんだ。
初めての方へ:このページは、このサイトで用意しているプログラミング問題の解答と解説のページです。このサイトではブラウザ上からプログラミングができます。会員登録(無料)して、プログラミングしてみませんか?
新規登録
新規登録