我试图窥视我的结构堆栈的顶部元素以更改其属性:
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();