タグ

ブックマーク / nurs.hatenablog.com (2)

  • 疎行列のデータ構造入門再び - nursの日記

    やあみんな。秋シーズンもいよいよ番だね、今日なんかはもみじ狩りに最適なんじゃないかこれ。 以前疎行列のデータの持ち方について書いたけど読み返してみると命のCCSやCRSの説明は最後までせずに回り道だけして終ってしまうという非常に残念な内容となっていたので反省もこめてちょっと書き直してみたよ。 みんなはCCSとかCRSとかって聞いたことあるかな。疎行列とは殆どの要素がゼロで、非ゼロ要素はわずかしかない行列のことだ。なので、だったらゼロでないもののみを覚えておけばいいじゃないかという発想だ。 簡単のため、5x5の疎行列を考えよう(実際はもっと大きい要素数のケースが多いし、もっと疎なわけだが) 0.0, 2.0, 0.0, 0.0, 0.0 0.0, 0.0, 2.0, 0.0, 0.0 0.0, 1.0, 5.0, 2.0, 0.0 0.0, 3.0, 0.0, 0.0, 2.0 0.0,

    疎行列のデータ構造入門再び - nursの日記
  • std::setで非冗長化を図るのはやめよう - nursの日記

    日の格言(俺用の) 冗長性のない、つまり同じ値がダブって入っているということのない、要素の集合を作りたいんなら、冗長なvectorを作ってから、sortして、erase, unique で冗長性を取り除くべし。一度setに詰めてからvectorに戻すなんてことするとメチャメチャ遅いぞ。やってらんないくらい遅いぞ。もったいないぞ。std::setは検索をしたい時のみに、あくまで検索目的で使うものだぞ。 template< class CONT > void pocRemoveRedundancy( CONT& cont ) { // コンテナの冗長性を取り除く関数テンプレート sort( cont.begin(), cont.end() ); cont.erase( unique( cont.begin(), cont.end() ), cont.end() ); return; } Ef

    std::setで非冗長化を図るのはやめよう - nursの日記
    y_r
    y_r 2009/09/17
    sort -> erase with unique
  • 1