如何在c++中一次又一次地从函数返回

How to return from a function again and again in c++?

本文关键字:函数 返回 一次又一次 c++      更新时间:2023-10-16

我是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等其他语言的专家,但我想这对他们来说也是正确的。

根据您的用例,您可以从函数返回一个聚合(向量、映射、集合等)作为输出。