• 締切済み

ICPCの過去問

問題文↓ http://www.deqnotes.net/acmicpc/p0105/ja 答え↓ http://www.deqnotes.net/acmicpc/p0105/p0105-deq-sim.cpp です。 自分で調べたのですが、答えの中の int operator<(const Event &a) const { return time != a.time ? time < a.time : type > a.type; と、 ev.push_back(start); ev.push_back(end); の意味がよくわかりませんでした。 int operatorに関しては、sortの条件を作っているのかなとは思うのですが。 どなたか、上に挙げたふたつの部分の解説をしていただきたいです。

みんなの回答

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

「演算子のオーバーロード」を調べてください。 通常の < 演算子は、 a < b → aがbより小さければ1,そうでなければ0 という演算をします。 通常は数値同士の場合しか使えませんが、これをクラス等にも使えるようにするのが「演算子のオーバーロード」です。 なんでも定義できますが、元の演算子と同じ動作をさせるべきでしょう。 Event x,y ;なら x < y → xがyより「小さい」ならば1,そうでなければ0 という関数にするのが妥当です。 > <(const Event &a) constの部分は、<で引数が二つということを表しているのですか。 表していません。 「operator <」 がセットです。 引数は1つです。 > そして、{}内は、returnする内容を表しているのですか 聞かないとわからないことですか?

bcbcbc
質問者

お礼

回答者様たちのアドバイスのおかげで解決しました!ありがとうございました!

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

STL. sort は, 結果として得られる列において a, b の順に隣接する要素が (ちょっと不正確ですが) a < b を満たすように並べ替えるんだけど, 内部的に x < y という比較をするために演算子 < が必要です (ただし比較関数を与える 3引数バージョンもあって, そっちを使うことにすればこの演算子はなくてもいい). push_back は「最後尾に要素を追加する」メンバー関数です.

bcbcbc
質問者

お礼

回答者様たちのアドバイスのおかげで解決しました!ありがとうございました!

bcbcbc
質問者

補足

ありがとうございます。STLについて調べました。 int operator<(const Event &a) const { return time != a.time ? time < a.time : type > a.type; } では、上記の<(const Event &a) constの部分は、<で引数が二つということを表しているのですか。 そして、{}内は、returnする内容を表しているのですか。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

C++ をどのくらい理解できていますか?

bcbcbc
質問者

補足

>c++の理解度 基本的な入出力と、クラスについての基本的なことは理解できていると思います。 今回質問したことに関しては、何を理解すればよいのか、何を勉強すればよいのかがわかりませんでした。