隨着協同程序(Visual Studio的下工作2015年更新3)它是這樣的:
generator<float> MyFunc(float First, float Second) {
while (First < Second) {
First++;
co_yield First;
}
}
然後,你可以寫
for (auto && i : MyFunc(2,7)) { std::cout << i << "\n"; }
有一說起這個就的Youtube:https://www.youtube.com/watch?v=ZTqHjjm86Bw
看到這裏正是你的例子:https://youtu.be/ZTqHjjm86Bw?t=40m10s
如果你不想等待協同程序,看看了boost ::範圍圖書館。
或實現迭代器自己種-的
struct counter {
counter (int first, int last) : counter {first, last, first} {}
counter begin() const { return counter {first, last, first}; }
counter end() const { return counter {first, last, last}; }
int operator++() { ++current; }
int operator*() const { return current; }
private:
counter (int first, int last, int current)
: first (first), last (last), current (current)
{}
int first, last, current;
};
bool operator != (counter a, counter b) { return *a != *b; }
int main() {
for (auto && i : counter {2,5}) { std::cout << i << "\n"; }
return 0;
}
存儲和回用向量。 –
你所尋找的是[協同程序(http://stackoverflow.com/questions/121757/how-do-you-implement-coroutines-in-c)。它們不是標準的一部分,但有計劃將它們包含在C++ 17中。 – sygi
您可以返回更復雜的數據類型,或通過引用傳入數組/矢量並修改它。 – Fang