3

ここで数行のコードを読みましたが、括弧が必要なように見えます。

template<class InputIterator, class OutputIterator>
  OutputIterator copy ( InputIterator first, InputIterator last, OutputIterator result )
{
  while (first!=last) 
     *result++ = *first++; // <--- this line
  return result;
}

ここの演算子の優先順位の表によると、接尾辞のインクリメントが優先され、次に間接参照、次に代入が優先されると思います。しかし、私には、間接参照が最初に発生し、次に割り当てが発生し、次に接尾辞の増分が発生することが意図されているように見えます。

私は間違って読んでいますか?または、テーブルが間違っているのですか、それともコードスニペットですか?それとも他に何かありますか?

4

1 に答える 1

6

後置インクリメントが最初に実行されますが、後置インクリメントからの戻り値はポインターの元の値です。それが機能する理由です。

于 2011-07-27T14:50:43.607 に答える