我有一些 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/