Câu hỏi được gắn thẻ «move-semantics»

4
Tại sao chúng ta sao chép sau đó di chuyển?
Tôi đã thấy mã ở đâu đó trong đó ai đó quyết định sao chép một đối tượng và sau đó di chuyển nó đến thành viên dữ liệu của một lớp. Điều này khiến tôi bối rối ở chỗ tôi nghĩ toàn bộ điểm cần di chuyển là tránh …

8
Initializer_list và chuyển ngữ nghĩa
Tôi có được phép di chuyển các phần tử ra khỏi a std::initializer_list<T>không? #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? } } Vì std::intializer_list<T>yêu cầu sự chú ý đặc biệt của trình biên dịch …

5
Tôi có thể liệt kê-khởi tạo một vectơ kiểu chỉ di chuyển không?
Nếu tôi chuyển đoạn mã sau qua ảnh chụp nhanh GCC 4.7 của mình, nó sẽ cố gắng sao chép các unique_ptrs vào vectơ. #include <vector> #include <memory> int main() { using move_only = std::unique_ptr<int>; std::vector<move_only> v { move_only(), move_only(), move_only() }; } Rõ ràng điều đó không thể hoạt …



2
Hiệu quả của C ++ 11 push_back () với std :: move so với emplace_back () cho các đối tượng đã được xây dựng
Trong C ++, 11 emplace_back()thường được ưa thích (về mặt hiệu quả) push_back()vì nó cho phép xây dựng tại chỗ, nhưng điều này có còn xảy ra khi sử dụng push_back(std::move())với một đối tượng đã được xây dựng không? Ví dụ, emplace_back()vẫn được ưu tiên trong các trường hợp như …

3
Sử dụng lại một vùng chứa đã chuyển?
Cách chính xác để sử dụng lại thùng đã chuyển là gì? std::vector<int> container; container.push_back(1); auto container2 = std::move(container); // ver1: Do nothing //container2.clear(); // ver2: "Reset" container = std::vector<int>() // ver3: Reinitialize container.push_back(2); assert(container.size() == 1 && container.front() == 2); Từ những gì tôi đã đọc trong bản nháp …

4
Ăn cắp tài nguyên từ khóa std :: map cho phép?
Trong C ++, có thể lấy cắp tài nguyên từ bản đồ mà tôi không cần sau đó nữa không? Chính xác hơn, giả sử tôi có một std::mapvới std::stringphím và tôi muốn xây dựng một véc tơ ra khỏi nó bằng cách ăn cắp các nguồn lực của mapcác …
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.