プログラムがあるとします
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;
}