请问能否把STL的list或者vector这样的对象转化为一个BYTE型的数组?
以后需要用这个BYTE数组还原为list(或者vector)对象
应该怎么做啊(有个前提是不能用MFC)

解决方案 »

  1.   

    VECTOR 可以
    LIST不行。
    VECTOR直接就当BYTE用就可以了。
    VECTOR<BYTE> BT;
    BT[0];
    BT[1]...
    以为VECTOR保证内存是连续的。
    而LIST是动态分配内存的。
      

  2.   

    fingerfox(狐狸.NET)的说法有问题,C++标准并不保证vector的内存是连续的,可以使用BT[0]、BT[1]是因为vector重载了[]操作符。要实现楼主的目的,只能用比较笨的方法,即一个一个地拷贝到BYTE数组,下面以vector为例说明,list类似。class T
    {
    ...
    };vector<T*> v;BYTE* b = new BYTE[v.size() * sizeof(T)];
    BYTE* p = b;
    for(vector<T*>::iterator it = v.begin(); it != v.end(); it++)
    {
        memcpy(p, *it, sizeof(T));
        p += sizeof(T);
    }