一个疑惑
查看原帖
一个疑惑
1014573
sevenki楼主2023/12/4 18:07

将下列代码

it split(int x){
	it k = tr.lower_bound(node(x));
	if(k!=tr.end()&&k->l==x)return k;
	k--;
	if(k->r < x)return tr.end();
	tr.insert(node(k->l,x-1,k->v));
	it ret = tr.insert(node(x,k->r,k->v)).first;
	tr.erase(k);
	return ret;
}

改为

it split(int x){
	it k = tr.lower_bound(node(x));
	if(k!=tr.end()&&k->l==x)return k;
	k--;
	if(k->r < x)return tr.end();
	ll r = k->r,l=k->l,v=k->v;
	tr.erase(k);
	tr.insert(node(l,x-1,v));
	it ret = tr.insert(node(x,r,v)).first;
	return ret;
}

就过了。 请问是否在 erase() 操作后会导致原有的迭代器失效?

2023/12/4 18:07
加载中...