私はプログラムを作成し、vector.h #include、イテレータなどを使用しています...しかし、プログラムを実行すると、特定の状況下で(私はまだそれらが何であるかを理解しようとしています)、アサーションを取得しますvector.hの98行目を参照してエラーが発生しました。vector.hの98行目に移動し、次のように取得しました。
#if _HAS_ITERATOR_DEBUGGING
if (this->_Mycont == 0
|| _Myptr < ((_Myvec *)this->_Mycont)->_Myfirst
|| ((_Myvec *)this->_Mycont)->_Mylast <= _Myptr)
{
_DEBUG_ERROR("vector iterator not dereferencable");
_SCL_SECURE_OUT_OF_RANGE;
}
誰かがこれが何を意味するのか、そして私のプログラムの何がこの主張を引き起こしているのか教えてもらえますか?
注意:レコードの98行目は、「_ DEBUG_ERROR("vect..."」で始まる行です。
注意:これは私のプログラムのコードで、私が信じていることでエラーが発生しましたが、完全にはわかりません。
コード:
for(aI = antiviral_data.begin(); aI < antiviral_data.end();)
{
for(vI = viral_data.begin(); vI < viral_data.end();)
{
if((*aI)->x == (*vI)->x && (*aI)->y == (*vI)->y)
{
vI = viral_data.erase(vI);
aI = antiviral_data.erase(aI);
}
else
{
vI++;
}
}
if((*aI)->x >= maxx || (*aI)->x < 0 || (*aI)->y >= maxy || (*aI)->y < 0)
{
aI = antiviral_data.erase(aI);
}
else
{
aI++;
}
}