c++ stl - erase()

## ::iterator it; erase(it);  删除容器里迭代器it当前所指向位置的元素,导致it成为野指针,使得it++操作存在异常

# vector - erase

        for(size_t j = 0; j < v_needqids.size(); ++j){
            if(find(v_uqids.begin(),v_uqids.end(),v_needqids[j]) == v_uqids.end()){
                it = vst.erase(it);    //返回指向下一个元素的迭代器
                --it;
                break;
            }
        }

# map - erase

for(map<uint32_t, StUserQuest>::iterator it = questData.begin(); it != questData.end(); ++it){
	if((long)it->second.m_u32_access_time > now){
		map<uint32_t, StUserQuest>::iterator ittmp = it;
		it++;
		questData.erase(ittmp);      //未到开放时间
		it--;
	}
}

猜你喜欢

转载自blog.csdn.net/qq_24243483/article/details/84102145