0

ベクター push_back の実行時間をテストする C++ コードを作成しました。ベクトルのベクトルがあります。メイン ベクトルを mainVec、埋め込みベクトルを subVec と呼びました。したがって、2^20 要素を subVec にプッシュしてから、subVec を 2^20 回 mainVec にプッシュします。ただし、subVec-push_back のループには、実行されない cout コマンドがあります。私の間違いを指摘していただければ幸いです。

コードは次のとおりです (ただし、コードにエラーはありません)。

vector<int> subVec; 
vector< vector<int> > mainVec;

//Fills the subvector with 2^20 elements
for( size_t i = 0; i < (pow(2,20)+1); ++i) subVec.push_back(i);

//Filling of the maiVec with 2^20 subVec
for( size_t j = 10; j < 21; ++j) {
    cout << pow(2,j) << endl;
    clock_t t1 = clock();

    //2^j times subVec is push_backed for j < 21
    for( size_t k = 0; k < pow(2,j); ++k ) mainVec.push_back( subVec );

    t1 = clock()-t1;

    //Outputting to file
    cout << "\t" << (float(t1) / CLOCKS_PER_SEC) << endl;
    //ofs << pow(2,j) << "\t\t" << (float(t1) / CLOCKS_PER_SEC) << endl;
}
4

1 に答える 1