for (int i = 0; i <= 10; ++i) {
gen.next(); // 2
std::cout << " " << gen.getValue();
}
std::cout << "nn";
std::cout << "getNext(100, -10):";
auto gen2 = getNext(100, -10);
for (int i = 0; i <= 20; ++i) {
gen2.next(); // 3
std::cout << " " << gen2.getValue();
}
std::cout << std::endl;
}
必须补充几句。这段代码只是一个代码段。函数 getNext 是一个协程,由于它运用了关键字 co_yield。getNext 有一个有限的循环,其会在 co_yield 之后前往 value。调用 next()(注释的 第 2、3 行)会继续这个协程,接上去的 getValue 调用会获取这个值。在 getNext 调用之后,这个协程再一次暂停。其暂停会不断继续到下一次调用 next()。我的这个示例中有一个很大的未知,即 getNext 函数的前往值 Generator<int>。这部分外容很复杂,前面我在写协程的文章中更详细地引见。
运用 Wandbox 在线编译器,我可以向你展现这个顺序的输入:
模块(Module)
模块部分复杂引见一下就好。模块承诺可以完成:
更快的编译时间;
宏的隔离;
表达代码的逻辑结构;
不必再运用头文件(header file);
摆脱漂亮的宏办法。
【编辑引荐】
网友点赞 微软推出新工具:打击网上对儿童损害
腾讯开源云效劳器操作系统 Tencent Linux
天下苦Vim久矣!硬核顺序员教你如何花式参加Vim,一周播种2400星
AI阿凡达来临CES! 三星Neon聊天机器人居然会学习、能退化、有记忆!
Linux 的 18 个装 B 命令,记得全部搂一遍!
(责任编辑:admin)