大文字の(mainvect)のstruct infoオブジェクト(約8million要素)が重複しています。 pid、およびuid。未処理の例外.. Microsoft C++の例外:メモリ位置のstd :: bad_alloc
struct info
{
int pid;
string uid;
}
私は別のベクトルを有する各PIDとmainvectにおけるその発生vect1のサイズが420K要素
struct pidInfo
{
int pid;
int numofoccurence;
}
である(検索特定の指標ではない全ての主VECTそのヘルプ)の情報を含む(
vect1)
mainvectにunqiue要素を格納する場合は、vect2にしてください。
.
.
// sort mainvect based on pid
sort(mainvect.begin(), mainvect.end(), sortByPId());
int start = 0;
int end = 0;
vector <string> temp; // to store uids with a specific pid
for (int i = 0; i < vect1.size(); i++)
{
end = end + vect1[i].numofoccurence;
for (int j = start; j < end; j++)
{
temp.push_back(mainvect[j].uid);
}
start = start + vect1[i].numofoccurence;
// remove duplicate uid
sort(temp.begin(), temp.end());
temp.erase(unique(temp.begin(), temp.end()), temp.end());
// push remaining unique uids
for (int k = 0; k < temp.size(); k++)
{
info obb;
obb.pid = vect1[i].pid;
obb.uid = temp[k];
vect2.push_back(obb);
}
// empty the temp vector to use in next i iteration
temp.erase(temp.begin(), temp.end());
}
.
.
メモリが不足しています。 – Justin
@ジャスティン理由は、ベクトルのサイズが大きいですか?またはコード内の論理エラー? – noor
'temp.erase(temp.begin()、temp.end());を' temp.clear() 'に置き換えることができますか?また、割り当てようとしているデータの実際のサイズとそれらのベクトルの実際のサイズはどれくらいですか? – VTT