dポイントプレゼントキャンペーン実施中!

問題文↓
http://www.deqnotes.net/acmicpc/p0105/ja
答え↓
http://www.deqnotes.net/acmicpc/p0105/p0105-deq- …
です。


自分で調べたのですが、答えの中の


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の条件を作っているのかなとは思うのですが。

どなたか、上に挙げたふたつの部分の解説をしていただきたいです。

A 回答 (3件)

「演算子のオーバーロード」を調べてください。



通常の < 演算子は、 a < b → aがbより小さければ1,そうでなければ0 という演算をします。

通常は数値同士の場合しか使えませんが、これをクラス等にも使えるようにするのが「演算子のオーバーロード」です。
なんでも定義できますが、元の演算子と同じ動作をさせるべきでしょう。
Event x,y ;なら
x < y → xがyより「小さい」ならば1,そうでなければ0
という関数にするのが妥当です。


> <(const Event &a) constの部分は、<で引数が二つということを表しているのですか。

表していません。
「operator <」 がセットです。
引数は1つです。

> そして、{}内は、returnする内容を表しているのですか

聞かないとわからないことですか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/03/09 17:43

STL.



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

push_back は「最後尾に要素を追加する」メンバー関数です.

この回答への補足

ありがとうございます。STLについて調べました。

int operator<(const Event &a) const {
return time != a.time ? time < a.time
: type > a.type;
}

では、上記の<(const Event &a) constの部分は、<で引数が二つということを表しているのですか。
そして、{}内は、returnする内容を表しているのですか。

補足日時:2013/03/09 00:07
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/03/09 17:42

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

この回答への補足

>c++の理解度

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

補足日時:2013/03/08 14:05
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!