可以使用 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 中的元素类型与普通数组的元素类型相同的情况。
C++ 将 vector<unsigned char> 转换为普通数组:方法和代码示例

原文地址: http://www.cveoy.top/t/topic/nOfl 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录