
referencia vs hodnota
void processVector(const std::vector<std::string> vec)
{
...kod spracovania
}
void processVectorRef(const std::vector<std::string>& vec)
{
...rovnaky kod spracovania ako processVector
}
auto vec = std::vector<string>{"A", "B", "C", "D", "E", "F"};
processVector(vec);
processVectorRef(vec);
Ahojte chcem sa len spytat / uistit. Mam dve funkcie.
Jedna predava vektor hodnotou. Znamena to ze sa do funkcie cely okopiruje? A v druhom pripade sa pouzije referencia na vector takze sa ukazje stale na rovnaky vector a nemusi sa nic kopirovat?
Predpokladam ze processVectorRef je teda rychlejsie? Alebo sa mylim?
A to najdolezitejsie som zabudol, ospravedlnujem sa... ide o jazyk C++.
Myslím si, že oba konkrétní kódy jsou ekvivalentní.
Vzhledem k tomu, že parametr funkce obsahuje direktivu const,
která zakazuje měnit vstupní objekt je možná vizuálně "lepší" druhá varianta.
Nicméně s ohledem na to, že se jedná o pole, se toto vždycky předává referencí.
V případě pole, jako argumentu, je to tedy jedno, podle mě v tomto případě.
Ale v případě předávání nějakých složitých a velkých objektů by mělo být efektivnější to druhé.
Třeba mě někdo upřesní nebo opraví
.