週に一回は書きますよ 月に4つ記事を書けばノルマは満たされます。
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Queueが遅くなる原因がわかったので、それを直します。SimpleQueue::head, SimpleQueue::tailが呼びもしないのに実行されているのが原因なので、呼ぶまで実行されないようなコードに変更します。元のコードのhead, tailをstructで囲めば終了。

template<typename Front_, typename Rear_>
struct SimpleQueue {
  typedef Front_ front;
  typedef Rear_ rear;
  enum { empty = 0 };

  template<typename N>
  struct snoc {
    typedef SimpleQueue<front, TList<N, rear> > type;
  };
  struct head {
    typedef typename front::car type;
  };
  struct tail {
    typedef SimpleQueue<typename front::cdr, rear> type;
  };
};
// 以下特殊化部分も同様に変更。

計算結果。ちゃんと高速で動いています。

timequeue_foldright_fast.png

スポンサーサイト
コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
http://gusmachine.blog49.fc2.com/tb.php/443-6e8f2cbb
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。