soraなりの日々 - fc2 -

こころにひっかかったもの

コードの中心でiをさがす -stl編-

いくつになっても学び続けるのは良いことだ。
そしてそれは往々にして、気持ちが良い。

このエントリーをはてなブックマークに追加












 ループよりもアルゴリズムを
       -- Bjarne Stroustrup


「あー、stlね。知ってるよ。
 vectorでしょ。でも、あれってさぁ・・うんぬんかんぬん」
と言ってる人ほど、これを見てほしい。








    clock_t start, end;

    const int size  = 10000000;
    for ( int iCnt=0; iCnt<size; iCnt++ )
        nList.push_back( iCnt );

    start = clock();
   
    const int target = 7000000;
    int buffer = 0;
    for ( int iCnt=0; iCnt<size; iCnt++ ) {
        buffer = nList.at( iCnt );
        if ( buffer == target )
            break;
    }

    end = clock();



実はコレ、計ってみると4.410000秒も掛かってたりする。
 んで、次がstl仕様↓








    const int size  = 10000000;
    for ( int iCnt=0; iCnt<size; iCnt++ )
        nList.push_back( iCnt );

    start = clock();
   
    const int target = 7000000;
    vector<int>::iterator locate = find( nList.begin(), nList.end(), target );
    if ( locate == nList.end() ) {
        printf( "error" );
        return 0;
    }

    end = clock()


stlを使ってこうするだけで、なんと0.630000秒しか掛からない。
最初のコードだと7000000を探すのに4秒掛かってる。

この早さを知ってしまうと、使わない理由はどこにも見あたらない・・・。

環境:PowerBook G4 1.25 GHz memory 1 GB
  :gcc version 4.0.1 (Apple Computer, Inc. build 5341)
このエントリーをはてなブックマークに追加

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://sora2hs.blog70.fc2.com/tb.php/20-4911ebe6
この記事にトラックバックする(FC2ブログユーザー)