特定の入力値が見つかった配列のインデックスを含む配列を返すプログラムを試みましたが、実行するたびにエラーが発生し、無限の実行時間のようです。エラーは、見つかった最後のインデックスを出力した直後に発生しているようです。
誰でも助けることができますか?(補足: ポインターを使い終わったときにポインターを削除することについて、複数のページを見てきました。ここでそれを行う必要がありますか?)
言及するのを忘れました-返された配列の最初のスロットに配列のサイズを保存して、後でプログラムで簡単にアクセスできるようにします
#include <iostream>
#include <vector>
using namespace std;
int* linearSearch(int* n, int k, int f) {
// Input: Index 0 Address ; Size of Array; Element to Search
// Output: Array of Found Indicies
vector <int> a;
int* b;
for(int i = 0; i < k; i++)
if(n[i] == f)
a.push_back(i);
*b = a.size();
for(int i = 0; i < a.size(); i++)
b[i + 1] = a[i];
return b;
}
int main() {
int c[10] = {4, 4, 6, 3, 7, 7, 3, 6, 2, 0};
int* k = linearSearch(&c[0], sizeof(c)/sizeof(int), 4);
for(int i = 0; i < k[0]; i++) {
cout << "Found at index: " << k[i + 1] << endl;
}
return 0;
}