vector<node>* divide(vector<node> k,float line)
{
vector<node> *p = new vector<node>[2];
for (vector<node>::iterator it = k.begin(); it <= k.end() - 1; it++)
{
if ((*it).x <= line)
{
p[0].push_back(*it);
k.erase(it);
}
else
{
p[1].push_back(*it);
k.erase(it);
}
}
return p;
}
這個函式一直跑不通,提示
“引發了例外: 讀取訪問權限沖突。
_Mycont 是 nullptr。”
但是去掉了k.erase()就完全沒問題了,是不能這么用嗎?蒟蒻謝謝大佬們的回答
uj5u.com熱心網友回復:
it被洗掉之后,it迭代器里還有東西嗎?肯定沒有吧,你for回圈仍然使用it++,肯定會出錯,要么使用erase的地方使用it++,且去除for回圈里的自增操作uj5u.com熱心網友回復:
謝大佬
uj5u.com熱心網友回復:
for (vector<node>::iterator it = k.begin(); it <= k.end() - 1; it++)
{
if ((*it).x <= line)
{
p[0].push_back(*it);
it=k.erase(it);
}
else
{
p[1].push_back(*it);
it=k.erase(it);
}
}
uj5u.com熱心網友回復:
vector<node>::iterator it = k.begin();
while( it != k.end() )
{
if ((*it).x <= line)
{
p[0].push_back(*it);
it=k.erase(it);
}
else
{
p[1].push_back(*it);
it=k.erase(it);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/80163.html
標籤:C++ 語言
上一篇:求解答。
