Perguntas com a marcação «move-semantics»

4
Por que copiamos e depois mudamos?
Eu vi um código em algum lugar no qual alguém decidiu copiar um objeto e, posteriormente, movê-lo para um membro de dados de uma classe. Isso me deixou confuso, pois pensei que o objetivo de mover era evitar a cópia. Aqui está o exemplo: struct S { S(std::string str) : …

8
initializer_list e mover semântica
Posso mover elementos de um std::initializer_list<T>? #include <initializer_list> #include <utility> template<typename T> void foo(std::initializer_list<T> list) { for (auto it = list.begin(); it != list.end(); ++it) { bar(std::move(*it)); // kosher? } } Uma vez que std::intializer_list<T>requer atenção especial do compilador e não tem semântica de valor como os contêineres normais da …

5
Posso listar e inicializar um vetor do tipo apenas de movimentação?
Se eu passar o código a seguir por meio de meu instantâneo GCC 4.7, ele tentará copiar os unique_ptrs para o vetor. #include <vector> #include <memory> int main() { using move_only = std::unique_ptr<int>; std::vector<move_only> v { move_only(), move_only(), move_only() }; } Obviamente, isso não pode funcionar porque std::unique_ptrnão é copiável: …



2
Eficiência do C ++ 11 push_back () com std :: move versus emplace_back () para objetos já construídos
Em C ++ 11 emplace_back()geralmente é preferível (em termos de eficiência) push_back(), pois permite a construção no local, mas ainda é o caso ao usar push_back(std::move())com um objeto já construído? Por exemplo, emplace_back()ainda é preferido em casos como o seguinte? std::string mystring("hello world"); std::vector<std::string> myvector; myvector.emplace_back(mystring); myvector.push_back(std::move(mystring)); // (of course …

4
Roubar recursos das chaves do std :: map é permitido?
Em C ++, não há problema em roubar recursos de um mapa que eu não preciso mais mais? Mais precisamente, suponha que eu possua um std::mapcom std::stringchaves e que eu queira construir um vetor roubando os recursos das mapchaves s usando std::move. Observe que esse acesso de gravação às chaves …
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.