大家帮我看下这个迭代器指针哪里出问题了

来源:百度知道 编辑:UC知道 时间:2024/05/14 10:12:26
int k = 0;
vector<int>::iterator itr;
for (int i = m_player1Cards.size() -1 ; i >= 0 ; i --)
{

if (PtInRect(&m_player1Rect[i] , m_mousPoint))
{

if (m_player1Bool[i] == false)
{
m_player1Rect[i].bottom -= 30;
m_player1Rect[i].top -= 30;
m_outCards.push_back(m_player1Cards[i]);
m_player1Bool[i] = true;
itr = m_outCards.begin();
}
else if(m_player1Bool[i] == true)
{
m_player1Rect[i].bottom += 30;
m_player1Rect[i].top += 30;
m_player1Bool[i] = false;
for (int j = 0 ; j < k ; j ++)
{
*itr++;
}
m_outCards.erase(itr);

}
break;
}
k++;
}
不对额~~申明的时候m_outCards还没有值……

itr没有赋值啊,应该是缺这句吧
itr=m_player1Cards.begin();

如果程序运行到这里的话,itr就是个空指针。所以应该在声明后就附上初始值。
else if(m_player1Bool[i] == true)
{
m_player1Rect[i].bottom += 30;
m_player1Rect[i].top += 30;
m_player1Bool[i] = false;
for (int j = 0 ; j < k ; j ++)
{
*itr++;
}
m_outCards.erase(itr);

}