如何在c++中一次又一次地从函数返回
How to return from a function again and again in c++?
我是C++的新手。在以下方法中,我尝试在不返回的情况下进行打印。没关系。我需要的是我需要返回如下。(需要使用while循环读取结果)。我知道一旦回来我们就回不来了。问题是,一旦结果可用,就应该在每次迭代中返回结果。(类似于一个线程在其可用时读取结果,而另一个线程正在运行此循环)。我可以使用回调来解决它吗?
list<string>MyLogRetriever::handleEventsOnEventID(std::string logType, DWORD eventID)
{
while (GetAsyncKeyState(VK_ESCAPE) != true)
{
wstring wsLogType = stringToWidestring(logType);
LPCWSTR lpcwstrLogType = wsLogType.c_str();
string string_query = "";
string_query = string_query + "*[System/EventID= " + to_string(eventID) + "]";
wstring wsCons = stringToWidestring(string_query);
LPCWSTR pwsQuery = wsCons.c_str();
getEvents(lpcwstrLogType, pwsQuery, -1);
//printResultedEvent(myLogStructures, numberOfAvailableEvents);
return returnResultedEvent(myLogStructures, numberOfAvailableEvents);
numberOfAvailableEvents = 0;
}
}
您所要求的类似于生成器:
在计算机科学中,生成器是一种特殊的例程,可用于控制循环的迭代行为。事实上,所有生成器都是迭代器。生成器与返回数组的函数非常相似,因为生成器具有参数,可以被调用,并生成一系列值。但是,生成器不是构建一个包含所有值并同时返回所有值的数组,而是一次生成一个值,这需要较少的内存,并允许调用者立即开始处理前几个值。
虽然这一特性在Python等其他语言中广为人知并得到支持,但C++中还没有对生成器的官方支持。
作为一种变通方法,您可能需要使用一个表,并将其作为参数传递给您的函数,还可以将每个结果附加到该表中,每次都返回它。您可以使用方法next()
编写一个类,以生成下一个结果(学分将授予任思远)。
从方法返回只有一种方法。如果您想捕获更多信息,您需要附加到某种结构(例如,数组或其他对联对象),然后返回。在您的情况下,您将在while循环执行之前声明它,并在循环中使用它。或者,您可以使用不同的参数多次调用该方法。
函数在数学上是执行计算并返回结果的构造。函数通常指二元关系,它具有它的域(输入集)中的每个项到它的共域(输出集)的唯一映射。现在,这些集合元素本身可以聚合。
我不是Java或Python等其他语言的专家,但我想这对他们来说也是正确的。
根据您的用例,您可以从函数返回一个聚合(向量、映射、集合等)作为输出。
- 从函数返回const char*数组
- 检查函数返回类型是否与STL容器类型值相同
- 从 c 或 cpp 系列子函数返回到主函数
- 从函数返回任意简单类型的数据
- 警告:在函数返回类型 [-Wignore 限定符] 时忽略类型限定符
- 从 C++ 中的函数返回数组地址问题
- VirtDisk.h QueryChangesVirtualDisk() 函数返回 RangeCount 为 0
- 为什么glGetSubroutineIndex为不同的函数返回相同的值?
- 在 c++ 中将函数返回类型指定为模板参数
- 从封装在对象中的函数 C++ 返回时为空的列表
- 为什么向量内部的指针在从函数返回时会发生变化?
- 函数返回的 rvalue 引用(表达式)是 xvalue - 但没有标识?
- 程序中的布尔函数返回输入的范围无论如何都是无效的
- 寿命延长从函数返回引用
- 程序不向函数返回值
- 字符串函数返回奇怪的值
- 类的大问题,以及从空函数c++返回
- 为什么在尝试测量函数返回所需的时间时,我的运行时编号是错误的?
- C++二叉搜索树模板从函数返回节点
- NVCC 错误:string_view.h:constexpr 函数返回是非常量