回答編集履歴

2

デバッグを勧める

2022/11/26 06:19

投稿

actorbug
actorbug

スコア2224

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

1

デバッグ方法の提案追加

2022/11/20 20:18

投稿

actorbug
actorbug

スコア2224

test CHANGED
@@ -8,3 +8,5 @@
8
8
 
9
9
  3つ目は、ヒープで最大値を求めなければならないのに、最小値を求めていることです。
10
10
  ヒープで最小値を求めているため、各々の`swap`で最小値を一番後ろに移動していくことになります。その結果、昇順ではなく降順にソートされてしまいます。
11
+
12
+ 前回もそうでしたが、vectorの添え字の範囲外アクセスに気づかないケースが多いように思います。コンパイルにg++を使っているなら、ソースの先頭に`#define _GLIBCXX_DEBUG`と入れることで、範囲外アクセスをチェックしてエラーにしてくれるようになるので、利用を検討してください。