c 语言中数组和vector类型转换,c – 将数组复制到std :: vector中

本文讨论了如何将数组转换为std::vector的不同方法,包括使用assign和构造函数。作者提出了一种使用resize和memcpy的方法,并在代码示例中展示了如何直接读取文件到vector中。虽然这种方法在实践中工作,但作者对其安全性有所疑虑。文章询问这种方法是否正确,并寻求其他可能的更优选项。
摘要由CSDN通过智能技术生成

我正在搜索这个主题,我找到了很多方法将array []转换为std :: vector,就像使用:

assign(a, a + n)

或者,直接在构造函数中:

std::vector v ( a, a + n );

那些解决了我的问题,但我想知道是否可能(并且正确):

myvet.resize( 10 );

memcpy( &myvet[0], buffer, 10 );

我想知道这是因为我有以下代码:

IDiskAccess::ERetRead nsDisks::DiskAccess::Read( std::vector< uint8_t >& bufferRead, int32_t totalToRead )

{

uint8_t* data = new uint8_t[totalToRead];

DWORD totalRead;

ReadFile( mhFile, data, totalToRead, &totalRead, NULL );

bufferRead.resize( totalRead );

bufferRead.assign( data, data + totalRead );

delete[] data;

return IDiskAccess::READ_OK;

}

我想这样做:

IDiskAccess::ERetRead nsDisks::DiskAccess::Read( std::vector< uint8_t >& bufferRead, int32_t totalToRead )

{

bufferRead.resize( totalToRead );

DWORD totalRead;

ReadFile( mhFile, &bufferRead[0], totalToRead, &totalRead, NULL );

bufferRead.resize( totalRead );

return IDiskAccess::READ_OK;

}

(我已经删除了ReadFile函数的错误处理以简化帖子).

它工作正常,但我担心它不安全.我相信它没关系,因为矢量使用的内存是连续的,但我从未见过有人使用矢量这种方式.

使用这样的矢量是否正确?还有其他更好的选择吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值