私には 2 つの問題があります。1 つ目は、メモリまたは初期化されていない場所のエラーが原因で、以下のコードがランダムに終了することです。第二に、アルゴリズムが正しいかどうか確信が持てません。(このアルゴリズムは、関心のある人のために、ハンベリー ブラウン ツイッスのフォトニクス実験をシミュレートすると想定されています)
ベクトルは直線的に増加するタイム スタンプで構成され、停止信号は 180 秒遅延されます。i_th の開始信号が i_th の停止信号よりも小さい場合、タイマーは開始し、タイマーが停止信号に遭遇するまですべての開始信号を無視します。逆に、タイマーが停止している場合は、開始が登録されるまですべての停止を無視する必要があります。コードは、これらの開始/停止間の時間差をバケットソートする必要があります。
-この種の名前がある場合は、以下に投稿してください。
以下のコードは、これらの塗りつぶされたベクトルを取得し、このプロセスをシミュレートしようとします。しかし、アルゴリズムの修正に戻る前に、メモリの問題の何が問題なのかわかりません。
これは私が持っているコードで、常に機能するとは限りません。10,000 double より小さい開始/停止ベクトルで機能しますが、最大 100,000 double まで繰り返す必要があります。
while( starts.size() > 5 && stops.size() > 5 ){
if( start.at(0) >= stop.at(0) ){
thisStart = starts.at(0);
}
j=0;
while( stops.at(j) <= starts.at(0) ){
j++;
}
stops.erase(stops.begin(), stops.begin() + j + 1 );
thisStop = stops.at(0);
j=0;
while( starts.at(j) <= thisStop){
j++;
}
starts.erase(starts.begin(), starts.begin() + j+1 );
bucketSort(thisStop - thisStart, bins, &counts);
}