删除队列里的项解决办法
删除队列里的项现在有vectornode expandedqueuenode fringe怎么从fringe里 删除expanded已经包含的
删除队列里的项
现在有
vector<node> expanded;
queue<node> fringe;
怎么从fringe里 删除expanded已经包含的项?
C/C++ codefor(int i=0;i<expanded.size();i++){ if(fringe.front()==expanded[i]) bfsfringe.pop();}
这样的结果就是如果fringe里连续出现2个需要删除的项的时候 只能删除第一个
而且expanded里大概有8、900个项 有什么办法能提高运行效率么
[解决办法]queue只是一个队列模型,不适合将中间的东西找出来删掉。如果有这个需求,那你不该用queue的形式。
[解决办法]如果需要找出所有的,那你该用双层循环了。
[解决办法]这种情况,如果queue不能排序的话,你得对queue循环,看每个元素是否在expanded中,如果在就删除。为了在expanded中快速查找,用楼上的二分查找要好点。
[解决办法]