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

    无疑容器(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

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值