簡體   English   中英

C ++對int向量進行序列化/反序列化的最有效方法

[英]C++ Most efficient way for serializing/deserializing a vector of int

我在C ++ VS2010中有一個應用程序。

我有一個整數向量

0 = 93823

1 = 987283

2 = 3183723

3 = 8892328

4 = 98382391

等等...

有沒有一種方法可以快速地將此向量快速序列化/反序列化為文件(反序列化是跨平台的),而不必分別寫入每個值?

感謝您的幫助。

編輯:

我正在發布一些代碼,說明我當前如何對向量進行序列化和反序列化。 我覺得我的方式效率很低。

void CCompiler::CompileVector(FILE *outfile)
{
    int iSize = nMap.Content().size();
    fwrite(&iSize,sizeof(int),1,outfile);

    for (int i=0;i<nMap.Content().size();i++)
    {
            fwrite( &nMap.Content()[i], sizeof(int), 1, outfile);
    }   
 }

void CBinLoader::LoadVector(clsMapping &uMapping)
{
    int iSizeMap = 0;
    fread(&iSizeMap,sizeof(int),1,m_infile);

    for(int i = 0; i < iSizeMap; i++)
    {
        int iByteStart=0;
        fread(&iByteStart,sizeof(int),1,m_infile);
        uMapping.Add(iByteStart);
    }
 }

ps:在我的clsMapping課程中,有一些空白。 但是,“內容”只是一個向量。

不知道在此問題上一個問題中 “急於”是什么意思。

但是,因為它是文本,而不是二進制文件,所以這應該可以工作:

vector<int> values;

fstream file("filename");

copy(istream_iterator<int>(file),
     istream_iterator<int>(),
     back_inserter(values));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM