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

标签 c++ string iterator buffer

我似乎无法找到一个简单的解决方案,如何从 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/

相关文章:

java - String.equals比较失败

c++ - 在 C++ 中将 int 14236 转换为 hex 379C 作为 char[37,9C]

c++ - 类派生设计

arrays - matlab 在元胞数组中查找子字符串

Java:如何使用变量右对齐文本

java - 哈希集迭代抛出非法状态错误

c++ - 没有合适的用户定义转换

c++ - 无法分配 vector 迭代器

c++ - 将 UTF-16 转换为 UTF-8

c++ - 使用编译器/链接器进行 C++ 代码清理