来自具有大小的 char * 缓冲区的双向迭代器

Bidirectional iterator from char * buffer with size

我似乎无法找到一个简单的解决方案,如何从 char *buffer 中获取双向迭代器并定义 bufferSize。我不想将缓冲区复制到 std::string(太贵了),我只想要 std_whatever::buffer_wrapper myWrappedBuffer(myBuffer, mySize); 之类的东西,然后在 <algorithm> 中使用 myWrappedBuffer.begin()myWrappedBuffer.end()功能。最简单的方法是什么?我真的不想自己实现迭代器。我知道有 boost::string_ref,也许 std::string_view,但我不想为此使用 boost,也不能使用 c++17。

char *b=buffer;

这是您的起始迭代器。

char *e=buffer+buffersize;

这是您的结束迭代器。

普通的、普通的指针不仅满足双向迭代器的所有要求,而且满足随机访问迭代器的所有要求,并且通常可以在需要任何类型迭代器的任何地方使用,并且它们将像一个迭代器一样工作。所有(写得很好的)基于迭代器的模板都可以很好地处理指针。

您甚至可以将它们提供给 std::iterator_traits,并获得有意义的结果。亲自尝试一下,看看会发生什么。