C++ 将 vector<unsigned char> 转换为普通数组:方法和代码示例
可以使用 vector 的 data() 方法获取其底层数组的指针,然后根据 vector 的 size() 方法获取数组的长度,从而将 vector 转换为普通数组。具体代码如下:
vector<unsigned char> vec{0x01, 0x02, 0x03, 0x04};
unsigned char* arr = vec.data(); // 获取底层数组指针
int len = vec.size(); // 获取数组长度
// 将 vector 转换为普通数组
unsigned char* newArr = new unsigned char[len];
memcpy(newArr, arr, len);
// 使用普通数组
for (int i = 0; i < len; i++) {
cout << newArr[i] << ' '; // 使用单引号
}
// 释放内存
delete[] newArr;
解释:
vec.data():返回 vector 中第一个元素的指针,也就是底层数组的起始地址。vec.size():返回 vector 中元素的个数,也就是数组的长度。memcpy(newArr, arr, len):将 arr 指向的内存区域中的 len 个字节复制到 newArr 指向的内存区域中。
注意:
- 由于 newArr 是动态分配的内存,需要在使用完后使用
delete[] newArr释放内存,防止内存泄漏。 - 这种转换方式仅适用于 vector 中的元素类型与普通数组的元素类型相同的情况。
原文地址: http://www.cveoy.top/t/topic/nOfl 著作权归作者所有。请勿转载和采集!