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?

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
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