move-semantics
Czym jest semantyka ruchu?
Właśnie skończyłem słuchać audycji Software Engineering radio wywiad ze Scottem Meyersem dotyczący C++0x. Większość nowych ... ie sens i jestem teraz podekscytowany C++0x, z wyjątkiem jednej. Nadal nie rozumiem semantyki ruchu ... Co to dokładnie jest?
Czym jest semantyka ruchu?
Właśnie skończyłem słuchać audycji Software Engineering radio wywiad ze Scottem Meyersem dotyczący C++0x. Większość nowych ... mnie sens i jestem teraz podekscytowany C++0x, z wyjątkiem jednej. Nadal nie rozumiem semantyki ruchu ... Czym dokładnie są?
C++11 rvalues and move semantyka confusion (return statement)
Próbuję zrozumieć referencje rvalue i przenieść semantykę C++11.
Jaka jest różnica między tymi przykładami, a który z nich n ... ector<int> tmp {1,2,3,4,5};
return std::move(tmp);
}
std::vector<int> &&rval_ref = return_vector();
push back vs emplace back
Jestem trochę zdezorientowany co do różnicy między push_back i emplace_back.
void emplace_back(Type&& _Val);
void pu ... l);
Ponieważ istnieje push_back przeciążenie biorąc referencję rvalue nie bardzo rozumiem, jaki cel emplace_back staje się?
Co to jest "rvalue reference for * this"?
W clang ' s C++11 status page pojawiła się propozycja o nazwie "rvalue reference for *this".
Przeczytałem sporo o referencja ... zycją: N2439 (Rozszerzenie semantyki move NA *this), ale też nie dostaję stamtąd zbyt wielu przykładów.
Co to jest temat?
Co to jest STD:: move () i kiedy powinno być używane?
Co to jest?
Co to robi?
Kiedy należy go stosować?
Dobre linki są doceniane.
Czy nowoczesny C++ da ci wydajność za darmo?
Czasami twierdzi się, że C++11/14 może zwiększyć wydajność nawet podczas kompilacji kodu C++98. Uzasadnienie jest zwykle zgod ... uchamiane szybciej (unikaj kopiowania, ale jeśli możesz wymyślić coś jeszcze poza semantyką move, też byłbym zainteresowany)
Jaka jest zaleta wykorzystania odwołań przekazujących w pętlach opartych na zakresach?
const auto& wystarczy, jeśli chcę wykonywać operacje tylko do odczytu. Jednak wpadłem na
for (auto&& e : v) // ... tej na zakresie?
Proszę skoncentrować się na pytaniu: dlaczego miałbym używać auto & & w oparciu o zakres dla pętli?
Operator move assignment i ' if (this!= & rhs)"
W operatorze przypisania klasy, zwykle musisz sprawdzić, czy przypisany obiekt jest obiektem wywołującym, więc nie spieprzysz ... y jest kiedykolwiek sytuacja, w której this == &rhs byłaby prawdziwa?
? Class::operator=(Class&& rhs) {
?
}
Dlaczego `std:: move 'nazywa się' STD:: move'?
Funkcja C++11 std::move(x) tak naprawdę niczego nie porusza. To tylko rzut do wartości R. Dlaczego to zrobiono? Czy to nie wprowadza w błąd?
Jak std:: move() przenosi wartości do wartości R?
Okazało się, że nie do końca rozumiem logikę std::move().
Na początku wygooglowałem go, ale wygląda na to, że są tylko doku ... zelkie dokumenty, które mogę uzyskać w Internecie, będą mile widziane. (Jeśli możesz to wyjaśnić, to też będzie niesamowite).
Po co kopiujemy?
Widziałem gdzieś kod, w którym ktoś zdecydował się skopiować obiekt, a następnie przenieść go do członka danych klasy. To poz ... go jak std::string?
jaki byłby powód, dla którego autor zdecydował się na / align = "left" /
Kiedy powinnam to zrobić sama?
Kiedy zrobić Typ nie-ruchomy w C++11?
Byłem zaskoczony, że to nie pojawia się w moich wynikach wyszukiwania, myślałem, że ktoś już o to pytał, biorąc pod uwagę prz ... dobry pomysł) zrobić klasę nie-ruchomą w C++11?
(powody Inne niż problemy z kompatybilnością z istniejącym kodem, czyli.)
Jaka jest zaleta stosowania odwołań uniwersalnych w pętlach opartych na zakresach?
const auto& wystarczy, jeśli chcę wykonywać operacje tylko do odczytu. Jednak wpadłem na
for (auto&& e : v) // ... tej na zakresie?
Proszę skoncentrować się na pytaniu: dlaczego miałbym używać auto & & w oparciu o zakres dla pętli?
Kiedy należy użyć STD:: move na zwracanej wartości funkcji? [duplikat]
To pytanie ma już odpowiedź tutaj:
c++11 Return value optimization or move? [duplicate]
... ould the compiler know?
return std::move(foo); //so here the move is needed, right?
}
Tam potrzebny jest ruch, jak sądzę?
Jak używać niestandardowego deletera z członkiem STD:: unique PST?
Mam klasę z członkiem unique_ptr.
class Foo {
private:
std::unique_ptr<Bar> bar;
...
};
Bar jest klasą zewnę ... t; bar(create(), [](Bar* b){ destroy(b); });
...
}
Czy jest sposób, aby to zrobić z std::unique_ptr jako członek klasy?
Passing std:: string by Value or Reference [duplicate]
Możliwy duplikat:Czy dni przekazywania const std:: string & jako parametr są skończone?
Czy powinienem przekazać ... inlinowanej), jeśli semantyka move jest obsługiwana? A co z implementacjami wykorzystującymi small string optimization (SSO)?
Czy Mogę zazwyczaj / zawsze używać std:: forward zamiast std:: move?
Oglądałem wykład Scotta Meyersa na temat uniwersalnych odniesień z konferencji C++ and Beyond 2012 i wszystko ma sens do tej ... ::move:
void doWork(Widget&& param) // move
{
// ops and exprs using std::forward<Widget>(param)
}
Co mogę zrobić z obiektem przeniesionym?
Czy standard określa dokładnie, co mogę zrobić z obiektem po jego przeniesieniu? Kiedyś myślałem, że wszystko, co można zrobi ... znaleźć te szczegóły w standardzie?
(przy okazji, dlaczego jest T c = std::move(a); zamiast T c(std::move(a)); w linii 1?)
Dlaczego nie ma domyślnego move-assignment/move-constructor?
Jestem prostym programistą. Zmienne członków mojej klasy najczęściej składają się z POD-typów i STL-kontenerów. Z tego powod ... świetne makro do tego. A jeśli nie wiesz, jeśli zaimplementujesz semantykę move-semantics, możesz usunąć swap member funkcja.