我试图窥视我的结构堆栈的顶部元素以更改其属性:

stack<mat> stk;
...
mat parent = stk.top();
parent.cap -= n;

但这不会改变堆栈顶部的值。我认为这只是在改变副本的值(value)。取而代之的是,我不得不做这样的事情(我不确定它是否正确,但是它可以工作):
stack<mat> stk;
...
mat * parent = &stk.top();
parent->cap -= n;

我在引用中读到stk.top()返回对堆栈顶部元素的引用,那么为什么我的第一个示例不起作用?

最佳答案

在这里,您将引用复制到新的mat对象中:

mat parent = stk.top();

如果要处理引用,请使用如下引用:
mat& parent = stk.top();

10-04 23:23