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

我似乎无法找到一个简单的解决方案,如何从 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,并获得有意义的结果。亲自尝试一下,看看会发生什么。

https://stackoverflow.com/questions/68649869/

相关文章:

python - 如何创建嵌套列表并在每个嵌套中放置特定数量的元素?列表和它的嵌套元素总是不一样的

reactjs - 过滤嵌套的 JSON 对象

r - 分组依据,然后展开以添加新列

javascript - 我如何在 Next.js 中删除 ID 为 ="__next"的 div

python - Django UUIDField 默认值

angular - 如何以 Angular 重置表单组?

python - 正则表达式匹配尽可能少的字符

python - 在 Python 中使用随机模块获取唯一编号

c++ - C++二维数组的访问效率

typescript - 如何在 TypeScript 中有选择地将属性从一个对象复制到另一个对象