"临时对象"的深层副本用C ++

时间:2017-10-15 15:25:25

标签: c++ object stl deep-copy

我定义了一个Node结构:

struct Node {
   char val;
   bool isEnd;
   Node* childs[26];
   Node* getChild(char c) {
       return childs[c - 'a'];
   }
   Node getChild1(char c) {
       return *childs[c - 'a'];
   }
};

现在为了搜索这个节点的子树,我定义了一个searchSubTree()函数,如下所示:

void searchSubTree(string word, Node* cur) {
   for (int i = 0; i < word.size(); ++i) {
       ...
       cur = cur->getChild(word[i]);
   }
}

这一切都很好,因为Node * cur是一个指针,我正在使用&#34; cur&#34;变量以临时指向节点及其子节点。

但是,我应该如何避免使用&#34;临时&#34;指针并在每次迭代中使用临时对象?我知道仅仅使用Node :: getChild1()签名是不够的,因为在行中:

cur = cur.getChild1(word[i])

这将导致&#34; cur&#34;的浅拷贝,并更新每个节点的实际内容,而我只希望cur是临时的,以便它可以遍历每个子节点。是否有一种优雅的方式来做到这一点?

0 个答案:

没有答案