-3

以下をパラメーターとして (この順序で) 受け取る find という関数を実装します。

配列内で検索するオブジェクト ANY 型の動的配列 配列のサイズ この関数は、配列内で指定された要素を検索し、要素のインデックス位置を返す必要があります。要素が存在しない場合、関数は -1 を返す必要があります。

私が持っているコードは次のとおりです。

template<typename t>
t find(t objectInArray, t *array, int arraySize)
{
   array = new t[arraySize];

   for(int index = 0; index < arraySize; index++){
      if(array[index] == objectInArray){
         cout << index;
         return index;
       }
   }
     return -1;
}

テンプレートなしで int を使用してメインでこのコードを実行したところ、完全に機能しました。私は実際に自分のコードの何が問題なのか困惑しています。

4

1 に答える 1

1

ポインターを再割り当てしないでください。この行を削除します。

array = new t[arraySize];

返したいのはインデックスです。したがって、戻り値の型は であってはなりませんt。整数型を返します。


サイドノート:

おそらく、式を使用して動的配列を作成するように先生や本から言われているでしょうnew。メイン関数に書いているかもしれません。学生には通常選択肢がありませんが、メモリリークの危険性があるため、これはコミュニティの一般的なアドバイスに反していることを指摘しなければなりません。を使用する必要がある場合はnew、対応する を忘れずに指定してdeleteください。

于 2016-09-12T01:34:54.190 に答える