Имея сценарий библиотеки C ++, в которой функция выполняет некоторые вычисления, поскольку она получает контейнер, обычно (не всегда) по множественным вызовам, и где функция должна сохранить промежуточный результат в этих вызовах, тогда я ищу упрощенный способ подготовки функции, чтобы быть выдвинутой в более чем 1 месте в программе независимо, в случае, в случае необходимости вызовать одну и ту же функцию в соответствии с тем, что иначе, в качестве 2 -го, в более чем различных местах, в том случае, чтобы вызвать одну и ту же функцию в соответствии с тем, что иначе в 2 -м, в том, что иначе в 2 -й программе, в том, что инакомые, не совсем различные места, в том случае, чтобы вызвать одну и ту же функцию в соответствии с тем, что иначе, в более чем разных местах. Кроме того, в то же время функция может быть вызвана из разных программ. < /P>
Код: Выделить всё
#include "funcs.hpp"
//...
for (int i = 0; i < n; i++) {
//...
auto var1 = func1(vec1, a1);
auto var2 = func1(vec2, a2); // An invocation separated from the one for var1, so
// if the func1 intermediate result starts in 0 and in
// the 1st iteration it gets 1 for the var1 call, then
// that here for var2 it starts in 0 again, and in the
// 2nd iteration continues from 1 for var1, and so on.
}
//...
В этом сценарии ключевая часть состоит в том, что призывы к func1 для var1 Сохраняйте трек по вызовам оставшегося состояния, специально для этой инструкции (или идентификатора сеанса или экземпляра func1 или точного терминологии для этого), что не зависит от Searniate Func1 , для этого нельзя получить, что нельзя -кодовое значение> не может быть «код». Промежуточный func1 Результаты для var2 . И то же самое для остальных возможных инструкций func1 вызов либо в одной и той же программе, либо в нескольких программах.
Код: Выделить всё
//...
std::vector func1(const std::vector& v1, int a, session_id = "__default__");
//...
< /code>
funcs.cpp
#include "funcs.hpp"
//...
std::vector func1(const std::vector& v1, int a, session_id) {
thread_local static std::unordered_map x;
thread_local static std::unordered_map y;
std::string key_ = session_id ? session_id : "__default__";
//thread_local static z // Before the situation to call func1 in more than 1 place.
//thread_local static vr // Before the situation to call func1 in more than 1 place.
int& z = x[key_];
std::vector& vr = y[key_];
for (int i = 0; i < v1.size(); i++) {
z += v1[i];
std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/79627484/simplifying-development-c-function-retaining-value-across-calls-from-c-or-p[/url]