在我的程序中,我有一个名为Entity的类.另一个类Invader继承实体.由于我想拥有4种不同类型的入侵者,因此我声明了继承自Invader的Invader1,Invader2,Invader3和Invader4类.现在我声明一个Entity指针类型向量来存储所有入侵者,如:
entities.push_back(new Invader4());
entities.push_back(new Invader3());
entities.push_back(new Invader2());
entities.push_back(new Invader1());
entities.push_back(new Invader0());
Run Code Online (Sandbox Code Playgroud)
当我在运行时检查实体中元素的类型时,比如说
typeid(*entities->at(index))
Run Code Online (Sandbox Code Playgroud)
它可能会返回4种入侵者中的一种.在实体中还有其他继承实体的对象.所以我只想检查对象的类型是否是Invader,我不想知道它是Invader1,Invader2等.
我怎么能做到这一点?
我想用pthread实现分而治之,但我不知道如果我在一个线程中创建更多线程会发生什么.
根据我的理解,如果机器有一个2核处理器,它只能同时处理2个线程.如果有超过2个线程,其他线程必须等待资源,所以如果我在更深入的时候创建越来越多的线程,实际上它可能不会提高算法的速度,因为只有2个线程可以处理同一时间.
我在网上做了一些研究,似乎上层的线程可以不活动,只有最深层的线程保持活跃状态.怎么做到这一点?此外,如果面线保持不活动状态,它是否会影响底线?
fringe = new PriorityQueue<Node>(10,new Comparator<Node>(){
@Override
public int compare(Node node1,Node node2)
{
if (f(node1)>f(node2))
return 1;
else
return -1;
}
});
Run Code Online (Sandbox Code Playgroud)
我声明了一个PQ来存储一些节点,我想根据f值以非递减顺序存储节点.函数f(节点节点)是计算节点的f值.所以我覆盖了比较器,但是现在我发现一些f值较大的节点放在队列中f值较小的节点之前,我检查了一遍,但仍然找不到出错的地方,我想也许是PQ声明的问题.有人可以帮帮我吗?提前致谢!
我正在进行我的c ++任务,并尝试在我的程序中使用多态.在我的程序中,我想在构造之后立即将一些对象的指针存储在指针向量中:
entities.push_back(&Invader4());
entities.push_back(&Invader3());
entities.push_back(&Invader2());
entities.push_back(&Invader1());
entities.push_back(&Invader0());
Run Code Online (Sandbox Code Playgroud)
class Invader继承类Entity,但是当我尝试访问实体中的元素时,会发生访问冲突.我是否必须先声明另一个Invader类型向量来存储这些对象?