Упрощение развития. Удерживающее значение функции C ++ по вызовам из C ++ или Python, с независимым вызовом в 2+ местах C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Упрощение развития. Удерживающее значение функции C ++ по вызовам из C ++ или Python, с независимым вызовом в 2+ местах

Сообщение Anonymous »

Имея сценарий библиотеки 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]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»