回答編集履歴

1

fix

2016/11/11 09:19

投稿

yohhoy
yohhoy

スコア6189

test CHANGED
@@ -10,14 +10,8 @@
10
10
 
11
11
 
12
12
 
13
- いずれのコンテナも何も指定せず(デフォルトコンストラクタで)変数宣言する場合は "空っぽ" の状態で初期化されます。つまり`temp`は空すから、この状態で`temp[0]`などにアクセスすると、未初期化領域へのアクセスと実行時にプログラムクラッシュしたりします。
13
+ 直接的な問題は`void sort_input(vector<int>* a)`関数内で`a[n]`アクセスした場合、「vectorのn番目の要素」ではなく、「"vectorの配列"があったしてそのn番目のvector」になってしまいます。そのようなデータ領域は存在しいため、プログラムは実行時にクラッシュします。
14
14
 
15
15
 
16
16
 
17
- ```C++
18
-
19
- // 空(empty)のコンテナを初期化
20
-
21
- vector<int> temp;
17
+ 修正方法としては、A)関数引数を参照型`vector<int>& a`とするか、B)要素アクセス時に`a->at(n)`に変更する必要があります。C++プログラムの設計としてはA)の方が自然だと思います。
22
-
23
- ```