【发布时间】:2009-01-28 20:15:16
【问题描述】:
据我所知,向量保证是连续的,我可以向它写入一大块内存并用它发送 fwrite。我需要做的就是确保我调用 .resize() 来强制它成为我需要的最小长度,然后我可以将它用作普通的 char 数组?这段代码是否正确
v.resize(numOfElements);
v.clear(); //so i wont get numOfElements + len when i push back
vector<char>v2;
v2.resize(numOfElements*SizeOfType);
while(...)
{
...
v.push_bacK(x);
}
compress(&v2[0], len, &v[0], len);
fwrite(&v2[0], ....)
注意我从不推回或弹出 v2,我只调整一次大小并将其用作 char 数组。这会安全吗?如果我也倾倒了 v 那也是安全的(我确实推回并清除,我可能会倾倒它进行测试)
【问题讨论】:
-
如果我记得,std::vector
::resize 接受元素的数量,而不是字节的数量。 -
“压缩”有什么作用?
-
@strager - v2 是一个向量
,所以(元素数)==(字节数)。