C++ 创建一个 char* 迭代器

标签 c++ c++11 iterator char std

我喜欢编写使用 std 方法的容器无关代码,例如 std::distance()std::advance()我的代码。这对于反序列化很有用,我可以在其中传入不同类型的缓冲区对象(网络流、字节流……)。

如何将 char*uint8_t* 指针转换为迭代器?将数据复制到缓冲区不是一种选择。

我想到的一个选择是使用带有 std::string 的自定义分配器,但如果可用的话,我更喜欢更现成的解决方案。
有什么建议吗?

最佳答案

有几种类型的迭代器,由它们具有的属性(它们支持的功能)指定 - 这里有一个很好的概述 http://www.cplusplus.com/reference/iterator/

随机访问迭代器需要实现该表中的所有迭代器功能。

原始指针实际上支持所有操作,因此是随机访问运算符迭代器,可用于所有 STL 算法和容器。也在这里讨论Can raw pointers be used instead of iterators with STL algorithms for containers with linear storage? .

虽然不是必需的,但为您的指针实现迭代器包装器可能仍然有用 - 这也在上述问题的答案中讨论。

关于C++ 创建一个 char* 迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17362918/

相关文章:

c++ - Ref 限定的成员函数设计打破了 const 右值

c++ - 如果声明了析构函数,为什么这段代码无法编译?

c++ - 使用迭代器打印 multimap

java - "indexOf()"方法如何工作以及可以在哪里使用?

c++ - 队列与 mod 操作

c++ - 使用递归依赖聚合构建系统

c++ - 在 C++11 中释放动态分配的 uv_timer_t (libuv) 实例

c++ - 无需访问 vector 即可找到迭代器的末尾

c++ - 在定义结构之前如何使用指向结构的指针?

c++ - Listview 中的第一次机会异常设置检查状态