тип вычета с авто и - PullRequest
       47

тип вычета с авто и

0 голосов
/ 01 октября 2018

Сегодня я написал некоторый код, имеющий дело с двоичным деревом.Позже я заметил ошибку в коде:

void find(TreeNode* root, int target) {
    stack<TreeNode*> myStack{{root}};
    while(!myStack.empty()){
        auto& top = myStack.top(); // here I used auto& by mistake
        ...
    }
}

Однако меня смущает auto& top = myStack.top();.Какой тип для top после вычета типов?Это TreeNode & или TreeNode* &?

Как насчет того, чтобы я использовал auto* top = myStack.top()?

1 Ответ

0 голосов
/ 01 октября 2018
  1. auto top = myStack.top(); назначит локальную копию myStack.top() для top.
    В этом случае тип top будет TreeNode*.
  2. auto& top = myStack.top(); назначит ссылку на myStack.top() на top.
    В этом случае тип top будет TreeNode*&.
  3. auto* top = myStack.top() назначит myStack.top() на top.
    В этом случае тип top будет TreeNode*.
...