新人求助,关于iterator,调试中弹框报错list iterator not dereferencable
list<TreeNode*>::iterator searchSon(char c)
{
cout << sonNodes.size();
auto it = sonNodes.begin();
for (; it != sonNodes.end(); it++)
{
if ((*(*it)).getData() < c)
continue;
else if ((*(*it)).getData() == c)
break;
}
return it;
}
这个函数报错了。它对一个树节点的子节点列表按照节点值进行搜索,有另外一个函数管理树插入,在插入之前先搜索子节点对应位置,以使子节点按照值的顺序排列。问题是在向只有根的树插入第一个带字幕值的节点时,搜索和插入都没有出错,而在向这个第一个带值的节点插入前的搜索时出现了list iterator not dereferencable错误。在auto it = sonNodes.begin();这一步弹框。请问我的代码出现了什么问题?能指教一下吗?谢谢。我把树插入的函数列在下面:
void insertWord(string s)
{
TreeNode* tNPtr=treeRoot;
if (s.length() > 0)
{
for (int i = 0; i < s.length(); i++)
{
list<TreeNode*>::iterator iIt = (*tNPtr).searchSon(s[i]);
if ((iIt==(*tNPtr).getSonEnd())||(*(*iIt)).getData() != s[i])
{
TreeNode iTSon = TreeNode(s[i], tNPtr);
(*tNPtr).sonInsert(&iTSon);
tNPtr = (&iTSon);
}
else
{
tNPtr = (*iIt);
}
}
}