1

プログラムがあるとします

struct node
{
    int bot,el;
    char name[16];
};

int main()
{
  stack < node > S;
  node&b = S.top;
  return 0;
}

&inとはどういうnode&b意味ですか?

4

1 に答える 1

1

まず、次の呼び出しを修正する必要があります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;
}
于 2013-05-14T15:27:19.627 に答える