假设我有一个程序
struct node
{
int bot,el;
char name[16];
};
int main()
{
stack < node > S;
node&b = S.top;
return 0;
}
&
in是什么node&b
意思?
首先,您应该将调用修复为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;
}