如何使用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
例如在图形处理的时候如果想用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
相关文章推荐
- 如何使用数据卷在宿主机和docker容器之间共享文件
- linux 使用copy_from_user而不是memcpy拷贝用户空间数据原因
- jsp中如何避免客户端浏览器在刷新时,使用缓存的数据
- 如何在自定义Listener(监听器)中使用Spring容器管理的bean
- 如何使用RC4进行数据加减密
- 新手教程:如何使用Burpsuite抓取手机APP的HTTPS数据
- Android开发中如何使用抓包工具Fiddler更改后台接口数据
- 新手教程:如何使用Burpsuite抓取手机APP的HTTPS数据
- 【使用教程】如何把数据导出到 WPF 环境的 Excel 中
- Ext4使用总结(十二) 采用 CellEditing 方式的Grid,如何取得修改的单元格数据值
- Docker如何使用link建立容器之间的连接
- 详解如何查看 docker 容器使用的资源
- 教程 | 如何优雅而高效地使用Matplotlib实现数据可视化
- 如何优雅而高效地使用Matplotlib实现数据可视化
- 如何正确使用Java I/O输出和读入数据
- 如何使用javascript向服务器提交数据(post)
- 使用RMAN在ASM和文件系统之间拷贝数据
- 在 MySQL Workbench 中如何可视的建立 MySQL 物理数据模型,并使用它来创建一个 MySQL 数据库
- DB2在导入数据时,如果数据量过大,出现事务日志满的错误(Database transaction log is full)该如何解决,commitcount使用
- 技术文章|如何更好地使用容器技术实现不可变基础设施