回答編集履歴
2
デバッグを勧める
test
CHANGED
@@ -10,3 +10,7 @@
|
|
10
10
|
ヒープで最小値を求めているため、各々の`swap`で最小値を一番後ろに移動していくことになります。その結果、昇順ではなく降順にソートされてしまいます。
|
11
11
|
|
12
12
|
前回もそうでしたが、vectorの添え字の範囲外アクセスに気づかないケースが多いように思います。コンパイルにg++を使っているなら、ソースの先頭に`#define _GLIBCXX_DEBUG`と入れることで、範囲外アクセスをチェックしてエラーにしてくれるようになるので、利用を検討してください。
|
13
|
+
|
14
|
+
---
|
15
|
+
|
16
|
+
プログラムが意図通りに動かない場合にやるべきことは、「サンプルコードを参照しながら怪しい部分を書き換えました。」ではなく「デバッグ」です。意図通りの動作にならない原因を調査しないまま修正すると、かえって正解から離れていく恐れがあります。変数の値が意図通りになっているか確認しつつ、1行ずつ実行していけば、どこで想定外の事象が発生しているか原因がはっきりします。デバッグ環境の整え方は検索すれば見つかると思います。
|
1
デバッグ方法の提案追加
test
CHANGED
@@ -8,3 +8,5 @@
|
|
8
8
|
|
9
9
|
3つ目は、ヒープで最大値を求めなければならないのに、最小値を求めていることです。
|
10
10
|
ヒープで最小値を求めているため、各々の`swap`で最小値を一番後ろに移動していくことになります。その結果、昇順ではなく降順にソートされてしまいます。
|
11
|
+
|
12
|
+
前回もそうでしたが、vectorの添え字の範囲外アクセスに気づかないケースが多いように思います。コンパイルにg++を使っているなら、ソースの先頭に`#define _GLIBCXX_DEBUG`と入れることで、範囲外アクセスをチェックしてエラーにしてくれるようになるので、利用を検討してください。
|