我对指针比较陌生,写了这个合并函数。这是指针的有效使用吗?其次是 *two
变量,合并时不应该删除它,对吗?那将是客户的任务,而不是实现者?
VectorPQueue *VectorPQueue::merge(VectorPQueue *one, VectorPQueue *two) {
int twoSize = two->size();
if (one->size() != 0) {
for (int i = 0; i < twoSize;i++)
{
one->enqueue(two->extractMin());
}
}
return one;
交换函数是这样调用的
one->merge(one, two);
将这两个对象传递给它进行合并
PQueue *one = PQueue::createPQueue(PQueue::UnsortedVector);
PQueue *two = PQueue::createPQueue(PQueue::UnsortedVector);
最佳答案
在你的情况下,指针是完全没有必要的。您可以简单地使用引用。
也没有必要传入调用成员函数的参数。您可以使用 this
指针获取调用成员函数的对象。
/// Merge this with other.
void VectorPQueue::merge(VectorPQueue& other) {
// impl
}
总的来说:通过继承实现容器并不是真正的首选方式。查看标准库以及它如何实现序列抽象(迭代器)。
关于C++:指针和抽象数组类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14285726/