return-value-optimization
Co to jest copy elision I return value optimization?
Co to jest copy elision? Co to jest (nazwana) optymalizacja wartości zwrotnej? Co to oznacza?
W jakich sytuacjach mogą wystą ... pytania, prawdopodobnie szukasz wstęp.
przegląd techniczny znajduje się norma odniesienia.
Zobacz typowe przypadki tutaj .
C++11 Return value optimization or move? [duplikat]
To pytanie ma już odpowiedź tutaj:
C++11 rvalues and move semantyka confusion (return statement)
... erialBuffer buffer( size );
read( begin( buffer ), end( buffer ) );
return move( buffer );
}
Czego powinienem użyć?
Czy w C++ nadal jest złą praktyką zwracanie wektora z funkcji?
Skrócona wersja: w wielu językach programowania często zwraca się duże obiekty-takie jak wektory/tablice. Czy ten styl jest ... niki. W rezultacie pierwsza forma była przez długi czas głównym zapachem kodu w programowaniu C++. Mam nadzieję, że już nie?
Zrozumienie optymalizacji wartości zwrotnej i zwrotów tymczasowych-C++
Proszę wziąć pod uwagę trzy funkcje.
std::string get_a_string()
{
return "hello";
}
std::string get_a_string1()
{
r ... m, że jest w porządku, ponieważ zwracam go według wartości, a nie zwracam jakiekolwiek odniesienie do niego.
Jakieś pomysły?
Move czy Named Return Value Optimization (Nrvo)?
Powiedzmy, że mamy następujący kod:
std::vector<int> f()
{
std::vector<int> y;
...
return y;
}
std::vec ... f () in temp space, move f () into x, destruct f ().
Czy kompilator może używać dowolnego podejścia, zgodnie ze standardem?
Czy zwracanie z `std:: move` jest sensowne w przypadku wielu poleceń return?
Zdaję sobie sprawę, że zwykle nie jest to dobry pomysł, aby wrócić z std::move, tzn.
bigObject foo() { bigObject result; /* ... esult;
if(use_fixed_ret)
result = fixed_ret;
else{
prepare_object(result);
}
return result;
}
const reference to temporary vs. return value optimization
Zdaję sobie sprawę z faktu, że przypisanie wartości R do odniesienia const lvalue wydłuża czas pracy tymczasowej do końca zak ... amp; jest gorsze niż jej nie używanie? (Myślę na przykład o semantyce C++11 move, Jeśli LargeObject mA zaimplementowane ...)