我似乎无法找到一个简单的解决方案,如何从定义了bufferSize
的char *buffer
获得双向迭代器。我不想将缓冲区复制到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
,并获得有意义的结果。你自己试试,看看会发生什么。