c++ - 带有移动端的前向迭代器()

标签 c++ c++11 stl

因此,我正在设计一个类(通过网络)连接到服务以接收一些数据。我不知道我会提前收到多少 man 数据点。不过我想知道,是否有一种方法可以使用 forward_iterator 使此类可迭代,以便充分享受 STL。我的想法是这样的:

self_type operator++() {
  // if there are some locally cached data points left return next
  // else connect to service again to receive the next batch of data
}

但是,由于我无法提供有效的 end(),我很好奇是否仍然可以这样做。

另一种(无迭代器)接口(interface)可能类似于:

bool hasMoreDataPoints() const;
DataPoint& getNext();

这显然不适用于任何 STL 算法。

最佳答案

像标准库对 istream_iterator 做的那样:当您用完数据时,设置您的迭代器状态,使其与该类型的默认构造对象进行比较。然后是你的 end() 等价物。

关于c++ - 带有移动端的前向迭代器(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40050830/

相关文章:

c++ - 在结构的 STL 映射中,为什么 "[ ]"运算符会导致结构的 dtor 被额外调用 2 次?

宏函数参数中的 C++ 添加

c++ - 如何查看两个char变量是否彼此相等

c# - Interlocked.CompareExchange<Int> 使用 GreaterThan 或 LessThan 而不是相等

c++ - "Inverse SFINAE"避免模棱两可的过载

c++ - int p 不是 lpNorm<p> 中的常量表达式

c++ - 显式默认的默认构造函数和聚合

c++ - 我应该在 cpp 中使用 std::map 之前调用 clear

C++ STL make_heap 和 pop_heap 不工作

c++ - 如何使用 STL 在 C++ 中复制映射、过滤和减少行为?