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

时间:2013-05-11 05:54:38

标签: c++ vector

我在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中有一些空洞。 但是,“内容”只是一个向量。

1 个答案:

答案 0 :(得分:1)

不确定你或previous question中的“匆忙”是什么意思。

然而,由于它的文本,这次不是二进制,这应该有效:

vector<int> values;

fstream file("filename");

copy(istream_iterator<int>(file),
     istream_iterator<int>(),
     back_inserter(values));
相关问题