使复制构造函数更灵活,可为ADT队列
Making a copy constructor more flexible for ADT queue
我已经为ADT队列构建了复制构造函数。复制构造函数正常。我想改进我的代码,但我真的不知道如何缩短它以使其更灵活。代码如下:
template <typename T>
Queue <T>::Queue(const Queue & other)
{
if (other.first == nullptr)
{
first = nullptr;
nrOfElements = 0;
}
else
{
Node* saveFirst;
Node* walker;
first = other.first;
walker = new Node(first->data);
saveFirst = walker;
while (first->next != nullptr)
{
walker->next = new Node(first->next->data);
walker = walker->next;
first = first->next;
}
walker->next = nullptr;
first = saveFirst;
}
this->nrOfElements = other.nrOfElements;
}
类Queue
还包含一个内部私人Node
类,其中包含指针first
,next
等:
private:
int nrOfElements;
class Node
{
public:
Node* next;
T data;
Node(T data)
{
this->data = data;
}
};
Node* first;
因此,我将感谢有关如何改进复制构造代码的任何建议/示例,因为我对任务有些丢失。
尝试这个可能比您的代码容易
template <typename T>
Queue <T>::Queue(const Queue & other)
{
Front =NULL;Rear=NULL;Count=0;
Node *p= other.Front;
while(p!=NULL){
EnQueue(p->GetData());
Rear->SetData(p->GetData());
p=p->next;
}
}
首先,我们将零值设置为正面&amp;后方和0为第二个新节点以获取旧队列中每个节点的数据,然后将其复制到新队列。
相关文章:
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 在模板基类中为继承类中的可选重写生成虚拟方法
- 如何在对<char>C++程序进行逆向工程的同时将 std::basic_string 转换为 Rust 可读值?
- 使用 char 分隔符解析C++中的字符串,但将可重复的字符保留为每个解析的子字符串 (C++ STL) 中的分隔符
- 将通用引用强制转换为可调用的 void 指针,反之亦然
- 无法为 X.radio 创建中等可视化,因为找不到网络节点可视化 - Omnet++
- CMake:我们可以为一组不形成可执行文件或库的特定文件指定包含目录吗?
- 可视化 如何在C++中将字符数组转换为 FILE 类型
- 编译的C可执行文件被Windows defender检测为病毒
- 将可选属性表示为 C++类成员
- 将"模板<类型名 T>zero()"扩展/专用为可调用的"T"
- 如何从命令行使用 cmake 为有根的安卓设备制作可执行文件?
- 使复制构造函数更灵活,可为ADT队列
- 可为空的 WSDL 消息部分
- C++ 减少使用指针、原始指针或其他指针和/或返回可为空的非指针
- 如何通过COM公开可为null的类型
- Clang静态分析-根据执行流检查可为空的变量初始化
- 在C++中表示可为null成员的最佳方式
- 与向量一起使用的C++可为Null/可选项的整数
- UML 与泛型和可为空字段的关系