我喜欢编写使用 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/