teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

fix

2016/11/11 09:19

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -4,9 +4,6 @@
4
4
 
5
5
  その中でも一番利用頻度が高いのが`std::vector`でしょう。こちらは「実行時に要素を追加/削除できる可変長配列」と捉えればOKです。
6
6
 
7
- いずれのコンテナも、何も指定せず(デフォルトコンストラクタで)変数宣言する場合"空っぽ" の状態で初期化されます。つまり`temp`は空すから、この状態で`temp[0]`などにアクセスすると、未初期化領域へのアクセスと実行時にプログラムクラッシュしたりします。
7
+ 直接的な問題、`void sort_input(vector<int>* a)`関数内で`a[n]`アクセスした場合、「vectorのn番目の要素」ではなく、「"vectorの配列"があったしてそのn番目のvector」になってしまいます。そのようなデータ領域は存在しいため、プログラムは実行時にクラッシュします。
8
8
 
9
- ```C++
10
- // 空(empty)のコンテナを初期化
11
- vector<int> temp;
9
+ 修正方法としては、A)関数引数を参照型`vector<int>& a`とするか、B)要素アクセス時に`a->at(n)`に変更する必要があります。C++プログラムの設計としてはA)の方が自然だと思います。
12
- ```