1

假设我有一个程序

struct node
{
    int bot,el;
    char name[16];
};

int main()
{
  stack < node > S;
  node&b = S.top;
  return 0;
}

&in是什么node&b意思?

4

1 回答 1

1

首先,您应该将调用修复为top

node &b = S.top() ;

所以此时b现在是堆栈中顶部元素的别名,因此您所做的任何更改也b将反映在堆栈中的顶部元素中。参考标准容器中的元素可能很危险,因此您了解其中的含义。此代码演示了该原理,同时尽可能接近您的示例代码:

int main()
{
  std::stack <node> S;

  node n1 ;

  n1.bot = 10 ;
  n1.el  = 11 ;

  S.push(n1) ;

  node a  = S.top() ; // a is a copy of top() and changes to a won't be reflected
  node &b = S.top() ; // b is now an alias to top() and changes will be reflected

  a.bot = 30 ;
  std::cout << S.top().bot << std::endl ;
  b.bot = 20 ;
  std::cout << S.top().bot << std::endl ;

  return 0;
}
于 2013-05-14T15:27:19.627 回答