Во-первых, вы должны зафиксировать вызов top
:
node &b = S.top() ;
Так что на данный момент b
теперь псевдоним верхнего элемента в стеке так что любые изменения, внесенные в b
будут отражены для верхний элемент в стеке. Обращение к элементам в стандартном контейнере может быть dangerous, и поэтому вы понимаете последствия. Этот код демонстрирует принцип, оставаясь как можно ближе к пример кода, как это возможно:
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;
}
Это означает, что 'b' является [переменной] (http://www.cprogramming.com/tutorial/references.html) типа 'node'. – Dukeling
[Читайте о ссылках] (http://www.parashift.com/c++-faq/references.html). – BoBTFish