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