在C++中,yield函數通常用于生成器函數中,用于將一個值返回給調用者,并暫停執行生成器函數。調用者可以繼續執行生成器函數,并使用yield來返回下一個值。這樣可以實現惰性求值和生成序列等功能。
以下是一個簡單的示例,演示了如何在C++中使用yield函數:
#include <iostream>
#include <vector>
// 生成器函數
std::vector<int> generateNumbers() {
for (int i = 0; i < 10; ++i) {
co_yield i; // 使用co_yield來返回值并暫停函數執行
}
}
int main() {
auto numbers = generateNumbers();
for (int num : numbers) {
std::cout << num << " ";
}
return 0;
}
在上面的示例中,generateNumbers函數是一個生成器函數,使用co_yield關鍵字來返回值并暫停函數執行。在主函數中,我們可以通過迭代生成器函數的返回值來獲取生成的數字序列,并輸出到控制臺。
需要注意的是,在C++20中,使用生成器函數和yield關鍵字需要編譯器對協程的支持。因此,需確保編譯器支持C++20標準的協程功能。