从带size的char * buffer中获取双向迭代器



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

char *b=buffer;

这是你的起始迭代器

char *e=buffer+buffersize;

这是你的结束迭代器

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

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

最新更新