您的位置:首页 > 其它

如何使用memcpy向容器里拷贝数据

2008-05-14 11:07 1061 查看
无疑容器(std::vector<>std::vector<>)在开发的过程中作为动态数组的首选,但是直接使用push和pop存取的话在很多时候显得很无力。
例如在图形处理的时候如果想用std::vector<unsigned char> bitmap来存放图像数据,当向bitmap里拷贝数据的时候如果一个字节一个字节的压,我想谁都难以忍受,结果得出结论用容器来存放这样大量的二进制数据很不方便,不如直接开内存用指针处理。
那容器能不能使用memcpy进行内存块拷贝呢?看下面的代码:

直接把内存buffer的数据拷贝到容器里
unsigned char buffer[256] = "1234567890123456789012345678901234567890";
dst.resize(sizeof(buffer));
unsigned char* pDst = &dst[0];
memcpy( pDst, buffer, sizeof(buffer) );

把字符串的数据拷到容器里
std::vector<unsigned char> dst;
std::string src("1234567890123456789012345678901234567890");
dst.resize( src.size() );
unsigned char* pDst = &dst[0];
unsigned char* pSrc = reinterpret_cast<unsigned char*>(const_cast<char*>(src.c_str()));
memcpy( pDst, pSrc, src.size() );

http://www.vckbase.com/document/viewdoc/?id=844
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: