Я не мог понять, почему внезапно изменилось целое число. Если это из-за стирания, разве это не должно происходить сразу после того, как я его стираю? Тогда это будет вызвано манипулированием массивом домов houses[a[*j].household_id].agent_id.insert(i);
? Но это не изменило *j
или family_set[2]
. Я запуталась ....
class env
{
set<int> agent_id;
}
class agent
{
int household_id;
}
unordered_set<int> *family_set=new unordered_set<int>[4];
....
family_set[2].insert(12472);
....
env **houses=new env*[no_area];
agent **agents=new agent*[no_area];
for(int j=0;j<no_area;j++)
{
houses[i]=new env[j];
agents[j]=new agent[population[j]];
}
auto j=family_set[2].begin();
cout<<*j<<endl;
family_set[2].erase(*j);
cout<<*j<<endl;
houses[a[*j].household_id].agent_id.insert(i);
cout<<*j<<endl;
Вывод:
12472
12472
6505440
Я пытался стереть * j в самом конце, этого не происходит ....
auto j=family_set[2].begin();
cout<<*j<<endl;
houses[a[*j].household_id].agent_id.insert(i);
cout<<*j<<endl;
family_set[2].erase(*j);
cout<<*j<<endl;
Вывод:
12472
12472
12472
Означает ли это, что *j
стирается не мгновенно, а через некоторое время становится случайным числом?