2

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 です。

4

1 に答える 1

1

この質問または前の質問で「急いで」とはどういう意味かわかりません。

ただし、今回はバイナリではなくテキストであるため、これは機能するはずです。

vector<int> values;

fstream file("filename");

copy(istream_iterator<int>(file),
     istream_iterator<int>(),
     back_inserter(values));
于 2013-05-11T06:20:23.243 に答える