小编sea*_*ack的帖子

将 uint16_t * 数组转换为 std::vector

由于整数大小问题,我无法将 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 字节)进行转换会发生一些不好的事情。有没有更好的方法来进行这种数组转换?

编辑:感谢大家的宝贵反馈,我遇到的主要问题:

  1. sizeof 获取指针的大小,而不是数组的长度。

  2. 我使用了错误的构造函数

c++ arrays vector

3
推荐指数
1
解决办法
477
查看次数

标签 统计

arrays ×1

c++ ×1

vector ×1