Sự khác nhau giữa std::uninitialized_copy
và std::copy
là thời điểm nào và tôi nên sử dụng thông tin nào?Sự khác biệt giữa std :: uninitialized_copy & std :: copy?
Trả lời
Cho phép nói rằng bạn đã cấp phát một số bộ nhớ trên heap qua malloc
và có con trỏ T* p
cho nó. Bạn kết thúc với lưu trữ uninitialized vì tất cả các malloc
không đánh dấu một vị trí kích thước bạn yêu cầu như được phân bổ (new
mặt khác thực sự xây dựng các đối tượng và do đó làm cho vùng được cấp phát lưu trữ). Kể từ khi vị trí bộ nhớ bắt đầu từ p
không có một đối tượng hợp lệ của loại T
ngồi đó, bạn không thể làm được điều này
T a;
*p = a;
vì không có đối tượng của loại T
tại p
để gọi toán tử gán vào. Thay vào đó, bạn sẽ có một cấu trúc một đối tượng kiểu T
tại địa điểm p
sử dụng placement new
:
T a;
new (p) T{a};
std::uninitialized_copy
chỉ đơn giản là thực hiện các phiên bản hàng loạt các đoạn mã trên khi giao dịch với một phạm vi mà bạn muốn sao chép để lưu trữ chưa được khởi tạo .
- 1. Sự khác biệt giữa std: string và std :: string
- 2. sự khác biệt giữa std :: di chuyển và std :: mong
- 3. Whats sự khác biệt giữa std :: condition_variable và std :: condition_variable_any?
- 4. Sự khác biệt giữa std :: regex_match & std :: regex_search?
- 5. Sự khác biệt thực tế giữa std :: nth_element và std :: sort là gì?
- 6. Sự khác nhau giữa std :: function và std :: mem_fn
- 7. Sự khác biệt giữa -std = C++ 11 và -std = gnu ++ 11 là gì?
- 8. Sự khác biệt giữa std :: cout và std :: wcout là gì?
- 9. DockerFile: Sự khác biệt giữa ADD và COPY
- 10. Sự khác nhau giữa std :: partial_sum và std :: inclusive_scan là gì?
- 11. Sự khác nhau giữa std :: cuối (MyVector) và myVector.end()
- 12. Sự khác nhau giữa std :: quick_exit và std :: abort và lý do std :: quick_exit cần thiết là gì?
- 13. Sự khác nhau giữa std :: set và std :: vector là gì?
- 14. Sự khác nhau giữa tăng :: container :: vector và std :: vector
- 15. Rò rỉ tài nguyên trong ví dụ Stroustrup với std :: uninitialized_copy?
- 16. Tại sao có sự khác biệt giữa std :: hàm tạo hoặc gán?
- 17. Sự khác biệt giữa std :: function <> và một con trỏ hàm tiêu chuẩn?
- 18. Tôi có nên thấy sự khác biệt đáng kể giữa std :: bind và boost :: bind không?
- 19. Sự khác biệt giữa C++ 11 std :: liên kết và tăng :: ràng buộc
- 20. Sự khác biệt giữa std :: string (size, '\ 0') và s.resize (size)?
- 21. std :: sự khác biệt về bản đồ giữa chỉ mục và các cuộc gọi chèn
- 22. sự khác biệt giữa std :: move và unique_ptr :: reset là gì?
- 23. Sự khác biệt giữa strstream và stringstream
- 24. Có std :: copy xử lý các phạm vi chồng chéo?
- 25. khác biệt trong việc sử dụng không gian tên (std :: vs :: std: :)
- 26. Sự khác biệt giữa sqrt và sqrtf
- 27. Có phải std :: move và std :: copy giống hệt nhau không?
- 28. như thế nào std :: copy làm việc với lặp dòng
- 29. Sự khác biệt giữa char và ký char trong C++?
- 30. Sự khác biệt về std :: vector push_back (Object()) và push_back (new Object())?
Câu trả lời của bạn đánh dấu nó, đã xóa của tôi, +1. – vsoftco
'Uninitialized_copy' có chính xác tương đương với' memcpy' có hiệu lực không? –
@MattMcNabb Điều đó sẽ chỉ đúng nếu chúng có thể sao chép được, AFAIK. – Pradhan