Хорошо ли использовать вызов по значению со структурой данных и создавать несколько копий функций? - PullRequest
0 голосов
/ 14 июля 2020

Если мы передадим структуру данных, такую ​​как вектор, используя вызов по значению в функцию, которая будет рекурсивно вызывать себя, то каждый раз, когда функция вызывает сама себя, копия структуры данных будет сохраняться в стеке функций. Рассмотрим пример -

void Util(int u, vector<int> a,  vector<bool> &b) 
{ 
    // some code  
    for (int i=0; i<a.size(); i++) 
        if ( b[a[u]] == false) 
            Util(a[u], a, b); 
}

Если нет никаких изменений, которые нужно сделать с вектором, разве не будет лучше вызывать по ссылке, а не по значению, чтобы минимизировать использование памяти при повторном копировании вектора? и снова в стеках функций. PS - Я принял во внимание, что использование вектора сведено к минимуму, так что даже мы используем вызов по ссылке, вероятность изменения вектора по ошибке сведена к минимуму.

...