我有一个std :: vector.我想将向量的内容复制到一定大小的char*缓冲区.
有安全的方法吗?
我可以这样做吗?
memcpy(buffer, _v.begin(), buffer_size);
Run Code Online (Sandbox Code Playgroud)
或这个?
std::copy(_v.begin(), _v.end(), buffer); // throws a warning (unsafe)
Run Code Online (Sandbox Code Playgroud)
或这个?
for (int i = 0; i < _v.size(); i++)
{
*buffer = _v[i];
buffer++;
}
Run Code Online (Sandbox Code Playgroud)
谢谢..
ks1*_*322 19
std::copy(_v.begin(), _v.end(), buffer);
Run Code Online (Sandbox Code Playgroud)
这是在C++中执行此操作的首选方法.如果buffer足够大,可以安全地复制.
Naw*_*waz 11
如果你需要char*,那么你可以这样做:
char *buffer=&v[0];//v is guaranteed to be a contiguous block of memory.
//use buffer
Run Code Online (Sandbox Code Playgroud)
注意通过buffer更改向量的内容来更改指向的数据!
或者如果需要副本,则分配大小等于v.size()字节的内存,并使用std::copy:
char *buffer = new char[v.size()];
std::copy(v.begin(), v.end(), buffer);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18303 次 |
| 最近记录: |