【问题标题】:convert unsigned char* into std::vector<uint8_t>将 unsigned char* 转换为 std::vector<uint8_t>
【发布时间】:2021-07-11 05:46:10
【问题描述】:

嘿,我正在尝试将 unsigned char* 转换为 std::vector,这是我已经尝试过的。

uint64_t something(unsigned char* raw1)
{
    std::vector<uint8_t> raw_image;
    for (auto b : raw1) {
        raw_image.push_back(b);
    }
}

我无法让它工作,任何更多的帮助将不胜感激!

【问题讨论】:

标签: c++


【解决方案1】:

知道大小后,您可以轻松地使用正确的std::vector constructor 而不是循环:

std::vector<uint8_t> raw_image(raw1, raw1 + raw1_size);

在这种情况下,上面调用了迭代器构造函数重载。

话虽如此,请记住,这会创建数据的副本,而不是raw1 指向的数据的“视图”。为此,您可以使用 C++20 std::span 类(如果可用)。

【讨论】:

    猜你喜欢
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 2020-12-09
    • 2012-03-07
    相关资源
    最近更新 更多