c++中vector數據拷貝提速


如果想要在C++程序中用vector傳遞一個大內存,用swap是比較快的方法,不過傳遞之后,原始數據就不存在了。

如果后續不再使用原數據,用swap會比較好。

#include <iostream>
#include <ctime>
#include <vector>

using namespace std;

int main()
{
    int length = 10000000;

    vector<double> vecsrc;
    vector<double> vecdst1, vecdst2, vecdst3;
    for (int i = 0; i < length; i++)
    {
        vecsrc.emplace_back(rand());
    }

    clock_t t1 = clock();
    vecdst1 = vecsrc;
    clock_t t2 = clock();
    cout << "t1:" << t2 - t1 << endl <<"size: " << vecsrc.size()<<"  "<< vecdst1.size() << endl;
    
    vecdst2.resize(vecsrc.size());
    copy(vecsrc.begin(), vecsrc.end(), vecdst2.begin());
    clock_t t3 = clock();
    cout << "t2:" << t3 - t2 << endl << "size: " << vecsrc.size()<<"  "<< vecdst2.size() << endl;

    vecsrc.swap(vecdst3);
    clock_t t4 = clock();
    cout << "t3:" << t4 - t3 << endl << "size: " << vecsrc.size()<<"  "<< vecdst3.size() << endl;

    return 0;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM