Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem 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?

Předmět Autor Datum
A to najdolezitejsie som zabudol, ospravedlnujem sa... ide o jazyk C++.
inzinier 16.09.2020 23:00
inzinier
Myslím si, že oba konkrétní kódy jsou ekvivalentní. Vzhledem k tomu, že parametr funkce obsahuje di… poslední
Flash_Gordon 18.09.2020 20:47
Flash_Gordon

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í :-) .

Zpět do poradny Odpovědět na původní otázku Nahoru