Đang lặp qua vectơ bằng cách sử dụng trình lặp và sao chép vào danh sách phương pháp sao chép tối ưu nhất. Bất kỳ đề xuất?Cách tốt nhất để sao chép một vector vào danh sách trong STL?
Trả lời
Tại sao bạn lặp lại và không sử dụng thuật toán sao chép chuẩn?
std::copy(vector.begin(), vector.end(), std::back_inserter(list));
Bạn có thể thử sử dụng những thứ phức tạp hơn từ <algorithm>
tiêu đề, ví dụ for_each
hoặc copy
... nhưng họ sẽ lên tới điều tương tự, theo ý kiến của tôi.
for_each sẽ tính bằng nhau. Sao chép có thể bị quá tải để cung cấp cơ chế sao chép hiệu quả hơn nhiều tùy thuộc vào các trình vòng lặp được cung cấp và thường là cơ chế ưu tiên. – workmad3
Nếu bạn đang thực hiện một danh sách mới, bạn có thể tận dụng lợi thế của một nhà xây dựng mà có bắt đầu và kết thúc vòng lặp: Câu trả lời
std::list<SomeType> myList(v.begin(), v.end());
Kasprzol là hoàn hảo nếu bạn có một danh sách hiện tại bạn muốn thêm vào.
Tôi thích đề xuất này để xây dựng danh sách mới.
std::list<SomeType> myList(v.begin(), v.end());
Nhưng khi phụ thêm vào danh sách hiện có, điều sau có thể tối ưu cho các tập dữ liệu nhỏ. Bởi "tối ưu", tôi có nghĩa là dễ nhớ nhất cách làm và dễ hiểu nhất. (Đây là những báo cáo chủ quan, tôi chắc chắn rằng nó phụ thuộc vào cách bộ não của bạn là có dây.)
for (unsigned i=0; i<v.size(); i++) myList.push_back(v[i]);
Sử dụng vòng lặp trên vectơ có thể được quá pedantic trong nhiều trường hợp. Lập chỉ mục đơn giản thường hoạt động tốt.
Một chủ đề khác lặp địa chỉ so với chỉ mục (here). Trong chủ đề đó, câu trả lời được chọn về cơ bản là các trình vòng lặp ưu tiên vì chúng là chung chung hơn. Nhưng nếu các vectơ là loại container được sử dụng phổ biến nhất, tôi nghĩ rằng nó là hợp lý để chuyên loại thuật toán đơn giản này.
list.assign(vector.begin(), vector.end());
Điều này rất hữu ích, nhưng có lẽ bạn nên thêm một số mã không vào câu trả lời này để tránh cờ VLQ tiềm năng. –
- 1. Cách tốt nhất để sao chép danh sách là gì?
- 2. C++ cách sao chép bản đồ vào một vector
- 3. Sao chép danh sách 2D vào python
- 4. Add tên vector vào một danh sách
- 5. Cách sao chép danh sách trong Scala
- 6. STL Containers - diffrence giữa vector, danh sách và deque
- 7. SWIG gói C++ cho Python: dịch một danh sách các chuỗi để một vector STL của chuỗi STL
- 8. Làm thế nào để sao chép một số ký tự nhất định từ một tệp vào một vector theo cách STL?
- 9. Whats cách tốt nhất để sao chép/sao chép dự án thành một mới với git?
- 10. Sao chép danh sách python
- 11. Python: sao chép danh sách trong danh sách
- 12. Tìm cách tìm một vector C++ STL bên trong một vector STL
- 13. Sao chép danh sách các danh sách trong groovy
- 14. Jackson - cách tốt nhất để viết một danh sách java vào một mảng json
- 15. Cách tìm kiếm phần tử trong danh sách stl?
- 16. Gói danh sách LaTeX: danh sách có thể sao chép
- 17. Sao chép danh sách tệp vào thư mục
- 18. sao chép từng thành viên trong một danh sách - python
- 19. Cách tốt nhất để đọc một Tệp vào Danh sách <string>
- 20. sao chép các mục danh sách từ danh sách này sang danh sách khác trong sharepoint
- 21. Sao chép danh sách trong python: sâu vs nông bản sao: gotcha cho tôi trong python?
- 22. Làm cách nào để hiển thị danh sách STL qua ranh giới DLL?
- 23. Làm cách nào để sao chép các mục từ danh sách vào danh sách mà không cần bỏ qua?
- 24. Move danh sách phần tử vào cuối trong STL
- 25. Làm thế nào để đạt được danh sách list.list để sao chép danh sách trong smooks
- 26. Cách tốt nhất để truyền từ ArrayList vào Danh sách trong .Net 2.0
- 27. Cách tốt nhất để sao chép sâu một băm băm trong Perl là gì?
- 28. Làm cách nào để hợp nhất hai danh sách vào một danh sách?
- 29. Cách sao chép chính xác Danh sách <MyObject>?
- 30. Cách tốt nhất để xóa đối tượng khỏi Danh sách
Nên là tiêu chuẩn :: sao chép thay vì stl :: sao chép, nhưng nếu không thì đây là phương pháp ưu tiên khi sử dụng trình lặp để sao chép. – workmad3