gpt4 book ai didi

c++ - 将 C uint8_t 指针 + 大小组合转换为 C++ 迭代器

转载 作者:太空狗 更新时间:2023-10-29 20:03:29 25 4
gpt4 key购买 nike

我有一些 C 代码,我想用 C++ 封装以使其更易于使用。

C 代码使用uint8_t*/size_t 对来引用一 block 内存。我可以将它们转换为 C++ 迭代器,比如 std::begin/std::end 吗?我知道这些函数不接受指针,但也许还有其他方法。我想避免必须复制任何数据。

我正在寻找的是这样的:

void fn(uint8_t* ptr, size_t size) {
auto begin = std::begin(...);
auto end = std::end(...);

// continue to use begin/end similar to std::vector<uint8_t>::iterator
}

迭代器应该可以与标准库一起使用。具体来说,我想将它与 std::copy 和采用迭代器的 std::vector 构造函数一起使用。我知道我有其他选项来复制内存,但我正在寻找 C++ 类型的封装。

我也试过这个,但显然这是一个私有(private)构造函数。 (对我来说,我无法构建 vector 迭代器是完全合理的,但我只是在尝试。)

std::vector<uint8_t>::iterator begin(ptr);

我还希望避免必须实现我自己的迭代器类型。

最佳答案

auto begin = ptr;
auto end = ptr+size;

会成功的
(迭代器实际上是仿照指针建模的)

关于c++ - 将 C uint8_t 指针 + 大小组合转换为 C++ 迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28742524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com