我似乎无法找到一个简单的解决方案,如何从 char *buffer
获取双向迭代器定义 bufferSize
.我不想将缓冲区复制到 std::string
(太贵了),我只想要std_whatever::buffer_wrapper myWrappedBuffer(myBuffer, mySize);
之类的东西然后使用 myWrappedBuffer.begin()
和 myWrappedBuffer.end()
在 <algorithm>
功能。最简单的方法是什么?我真的不想自己实现迭代器。我知道有 boost::string_ref
也许std::string_view
,但我不想为此使用 boost,也不能使用 c++17。
最佳答案
char *b=buffer;
这是您的起始迭代器。
char *e=buffer+buffersize;
这是您的结束迭代器。
普通的、普通的指针不仅满足双向迭代器的所有要求,而且满足随机访问迭代器的所有要求,并且通常可以在需要任何类型的迭代器的任何地方使用,并且它们将像一个迭代器一样工作。所有(编写良好的)基于迭代器的模板都可以很好地处理指针。
您甚至可以将它们提供给 std::iterator_traits
,并获得有意义的结果。亲自尝试一下,看看会发生什么。
关于c++ - 来自具有大小的 char * 缓冲区的双向迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68649869/