2

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

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

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

4

2 回答 2

3

没关系。这些指针无论如何都可以用作迭代器,因为它们实现了基本功能。

于 2013-06-28T10:50:50.233 回答
3

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

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

原始指针实际上支持所有操作,因此是随机访问运算符迭代器,可用于所有 STL 算法和容器。此处还讨论了对于具有线性存储的容器,可以使用原始指针代替具有 STL 算法的迭代器吗?.

尽管没有必要,但为指针实现迭代器包装器可能仍然有用 - 这也在上述问题的答案中进行了讨论。

于 2013-06-28T11:00:23.877 回答