由于整数大小问题,我无法将 uint16_t 的指针数组转换为 std::vector<uint16_t> 。
auto *arr = static_cast<const uint16_t *>(some_method.getArray());
std::vector<uint16_t> vec(arr, sizeof arr / sizeof arr[0]);
Run Code Online (Sandbox Code Playgroud)
在第一行中,我获得了一个const uint16_t*数组。在第二行中,我使用迭代器构造函数初始化向量并传入指针数组arr和数组长度(数组大小除以第一个元素的大小=数组长度)。
但是,c++ 想让我将 arr 转换为unsigned long. 所以这里是演员表
std::vector<uint16_t> vec((unsigned long) arr, sizeof arr / sizeof arr[0]);
Run Code Online (Sandbox Code Playgroud)
在我看来,从 uint16_t(2 字节)-> unsigned long(4 字节)-> uint16_t(2 字节)进行转换会发生一些不好的事情。有没有更好的方法来进行这种数组转换?
编辑:感谢大家的宝贵反馈,我遇到的主要问题:
sizeof 获取指针的大小,而不是数组的长度。
我使用了错误的构造函数