質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

2回答

1702閲覧

C++ vector<pair<int, int>> をソート したい

encho

総合スコア182

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/08/05 12:06

編集2021/08/05 12:08

C++ vector<pair<int, int>> をソート したい

pairの和の降順にソートをしたいです

C++

1vector<pair<int,int>> vp; 2sort(vp.begin(), vp.end(), [](pair<int, int> x, pair<int, int> y) {return x.first+x.second > y.first+y.second;});

上のコードでvector内に存在する各要素をpairの和の降順にソートできているのでしょうか?
もし間違っていた場合にアドバイスをいただけると幸いです。

1, 2
3, 4,
2, 2
4, 5
のような入力の場合には

4, 5
3, 4
2, 2
1, 2

にしたいということです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

SaitoAtsushi

2021/08/05 17:42

解決すべき問題は何ですか? Teratail の理念としては「まずは実際に作業に取り組み、つまづいたところで投稿をしてみてください」ということになっています。 https://teratail.com/help/avoid-asking 起きてもいない問題を探すのはデバッグ依頼に相当すると思いますし、曖昧な前提ではそれも難しいです。 おそらくなんらかの想定漏れがないか不安だという意味の質問だと思うのですが、想定の中で正しく動作するかというのは技術的に判断できても、想定が正しいか、想定漏れがないかというのは回答者には判断のしようがありません。 提示されたプログラムの断片の使い方の想定は質問者が提示すべきことであって、回答者は情報を持たないからです。 その上でよくある事例や起こりそうなことを助言することは可能ではありますが、結局は空想の「かもしれない」の話になってしまいますからね……。
guest

回答2

0

上のコードでvector内に存在する各要素をpairの和の降順にソートできているのでしょうか?

確認/検証しましたか? その上での質問ですか?
どこに疑問を感じるのでしょうか?

投稿2021/08/05 12:13

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

encho

2021/08/05 12:16

ご回答ありがとうございます。 入力 20 10 20 20 20 30 ソート後 20 30 20 20 20 10 となっていることは確認しました。
episteme

2021/08/05 12:18 編集

では、質問の意図は? 比較ファンクタ(ラムダ式)があなたの意図のとおりであれば問題ないのでは?
guest

0

問題が起こる可能性を粗さがしするならば、私が見つけられた問題は int 同士の足し算の結果が int の範囲に収まらないことはありうる (その場合の結果は未定義) ことです。 入力されるデータが int で表現可能なあらゆる値を取りうるという想定であればそのような未定義を踏んでしまう可能性があるので一旦 int より大きい整数型にキャストして演算すればより安全です。

入力の段階で値の範囲をチェックしていて極端に大きい値が入ることがあり得ないなどの事情があるのであればソートの段階でオーバーフローを心配する必要はありません。

投稿2021/08/05 17:40

SaitoAtsushi

総合スコア5466

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問