質問: iv.size() - 5; s < iv.size(); s++){ cout << iv[s] << endl; } return 0; ```
回答: > > void sort_input(vector *a){ > > > まず、`sort_input`関数への`vector`オブジェクトの渡し方に誤りがあります。ポインタ渡しではなく参照で渡してください。ポインタで渡しているため、まったく見当違いの処理になってしまい、アクセス違反が発生しているものと思われます。 参照渡しは`&a`と書きます。参照渡しした変数は通常の変数と同様`a.size()`のようにピリオドでメンバを指定してください。 C++では、ポインタ渡しでなければ困る理由がない限り、参照渡しにしてください。 変数`temp`は`vector`ではなく、配列の要素である`int`型で定義してください(引数をポインタ渡しにしているためおかしなことになっています)。 それと、バブルソートだと思いますが、ソートのアルゴリズムが正しく実装されていません。 > > for (t = 0; t < a->size(); t++){ > > > 二つの値を比較しながらループを進めるため、外側のループは、最後の要素の1個手前になるようにします。`t < a.size() - 1`としてください。 > > for(u = a->size() - 1; u > t - 1; u++) > > > ループの中の処理からすると、後ろから進めて`u`を`t`の一つ後ろになるまでループさせたいので、終了条件に`- 1`は不要で`u > t`としてください。そして、前方向にインデックスを進めるので`u--'としないといけません。