首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

删除队列里的项解决办法

2012-04-17 
删除队列里的项现在有vectornode expandedqueuenode fringe怎么从fringe里 删除expanded已经包含的

删除队列里的项
现在有
vector<node> expanded;
queue<node> fringe;

怎么从fringe里 删除expanded已经包含的项?

C/C++ code
for(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中快速查找,用楼上的二分查找要好点。
[解决办法]
探讨
这就比较麻烦了 这是node的构造

C/C++ code

class node{
int hundred;
int ten;
int digit;
int forbid;
int gvalue;
string parent;
node *hundreds;
node *hundreda;
……

热点排行