Có bất kỳ sự khác biệt nào trong cấu trúc dữ liệu liên tục và không thay đổi được không? Wikipedia đề cập đến cấu trúc dữ liệu bất biến khi thảo luận về sự bền bỉ nhưng tôi có cảm giác có thể có sự khác biệt tinh tế giữa hai yếu tố này.liên tục và cấu trúc dữ liệu không thay đổi
Trả lời
Tính không thay đổi là kỹ thuật triển khai. Trong số những thứ khác, nó cung cấp kiên trì, là một giao diện. API kiên trì là một cái gì đó như:
version update(operation o, version v)
Thực hiện hoạt động trên phiên bảno
v
, trả lại một phiên bản mới. Nếu cấu trúc dữ liệu là không thay đổi, phiên bản mới là cấu trúc mới (có thể chia sẻ các phần không thể thay đổi của cấu trúc cũ). Nếu cấu trúc dữ liệu không thay đổi, phiên bản trả lại có thể chỉ là một số phiên bản. Phiên bảnv
vẫn là phiên bản hợp lệ và phiên bản này không được thay đổi theo bất kỳ cách nàoobserve
do cập nhật này - bản cập nhật chỉ hiển thị trong phiên bản trả về chứ không phải trongv
.data observe(query q, version v)
quan sát cấu trúc dữ liệu ở phiên bảnv
mà không thay đổi hoặc tạo phiên bản mới.
Để biết thêm về những khác biệt này, xem:
Có, có sự khác biệt. Một cấu trúc dữ liệu bất biến không thể được sửa đổi trong bất kỳ cách nào sau khi tạo ra nó. Cách duy nhất để sửa đổi hiệu quả nó sẽ là tạo một bản sao có thể thay đổi hoặc một cái gì đó tương tự (ví dụ: sửa đổi một chút các tham số mà bạn truyền cho hàm tạo của cái mới). Một cấu trúc dữ liệu liên tục, mặt khác, có thể thay đổi theo nghĩa là API tiếp xúc xuất hiện để cho phép thay đổi cấu trúc dữ liệu. Tuy nhiên, trong thực tế, mọi thay đổi sẽ giữ lại một con trỏ tới cấu trúc dữ liệu hiện có (và do đó mọi cấu trúc trước đó); chúng dường như chỉ làm thay đổi cấu trúc dữ liệu vì API được trả về trả về một con trỏ mới có thể bao gồm con trỏ tới một tập hợp con của cấu trúc dữ liệu trước đó (trong cây, ví dụ, chúng ta sẽ trỏ vào nút có subtree không thay đổi do hoạt động).
- 1. Cấu trúc dữ liệu liên tục hiệu quả cho cơ sở dữ liệu quan hệ
- 2. Java: cấu trúc băm liên tục lớn?
- 3. Thư viện chức năng Javascript với cấu trúc dữ liệu liên tục
- 4. Cấu trúc và cấu trúc dữ liệu khác nhau
- 5. Thực hiện một cấu trúc dữ liệu từ điển chức năng/liên tục
- 6. Thuật toán và cấu trúc dữ liệu
- 7. Sử dụng lớp con NSManagedObject để truyền dữ liệu liên tục và không liên tục
- 8. gấu trúc tổng hợp dữ liệu vào một mảng sumpy: chuyển đổi cấu trúc dữ liệu
- 9. Cấu trúc dữ liệu C#
- 10. thay đổi cấu trúc git
- 11. Cấu trúc dữ liệu phức tạp Redis
- 12. Cấu trúc dữ liệu chức năng trong C++
- 13. Cấu trúc dữ liệu Trie - Java
- 14. Tạo cấu trúc dữ liệu như cấu trúc dữ liệu trong Java
- 15. java.util.Stack cấu trúc dữ liệu thích hợp?
- 16. Cấu trúc dữ liệu trong Python
- 17. Tái cấu trúc lớp dữ liệu
- 18. Cấu trúc cơ sở dữ liệu SQL
- 19. C++ Cấu trúc thành viên cấu trúc không đổi
- 20. C: Cấu trúc dữ liệu căn chỉnh
- 21. Cấu trúc cơ sở dữ liệu để theo dõi lịch sử thay đổi
- 22. Lớp không thể thay đổi so với Cấu trúc không thể thay đổi
- 23. So sánh và xác nhận cấu trúc dữ liệu
- 24. Cấu trúc dữ liệu cây và đồ thị trong ruby
- 25. Cấu trúc dữ liệu tra cứu IPv6
- 26. Cấu trúc dữ liệu cây Postgresql
- 27. Cọ vẽ cấu trúc dữ liệu (Java)
- 28. LaTeX có cấu trúc dữ liệu mảng không?
- 29. cấu trúc dữ liệu và thuật toán sách điện tử
- 30. Cấu trúc dữ liệu tốt nhất và đơn giản
Nếu bạn có một bản đồ đầy đủ dai dẳng cấu trúc dữ liệu, và bạn đã thiết (1, 1), nếu bạn đặt (1, 1) một lần nữa, đây có phải là một đột biến hay không và bạn có nên trả lại phiên bản mới của cấu trúc dữ liệu hay không, vi nếu không có gì thực sự thay đổi? – CMCDragonkai
@CMCDragonkai, tôi không nghĩ rằng có một câu trả lời "đúng" duy nhất cho câu hỏi đó. – jbapple