Mặc dù những gì người khác đã viết ở đây, tôi không nghĩ rằng "chỉ mục" hoặc "vị trí" có ý nghĩa đối với một tập hợp. Trong thuật ngữ toán học, một tập hợp chỉ cho thấy các thành viên của nó và có thể là bản số của nó. Các hoạt động có ý nghĩa duy nhất liên quan đến việc kiểm tra xem một mục có phải là một thành viên của tập hợp hay không, và kết hợp hoặc trừ các bộ để tạo ra các bộ mới.
Một số người nói về bộ làm cấu trúc dữ liệu theo các thuật ngữ lỏng lẻo hơn, theo khía cạnh "được sắp xếp" hoặc "không có thứ tự" và liệu chúng có cho phép trùng lặp hay không. Mặt trước phân biệt một mảng với một bảo vệ chèn O (n), nơi một nỗ lực chèn mục trước tiên quét các thành viên hiện có để xem mục mới có tồn tại hay không, và chèn mục mới vào cuối và bảng băm, rằng có thể chỉ giữ lại thứ tự như vậy trong chuỗi của một nhóm. Một cây như cây đỏ-đen được sử dụng bởi std::set
là một nơi nào đó ở giữa; thứ tự truyền tải của nó là xác định đối với strict weak order được áp đặt bởi biến vị ngữ so sánh, nhưng, không giống như mảng được phác thảo ở trên, nó không giữ lại thứ tự chèn .
Khía cạnh khác - cho dù bộ cho phép các phần tử trùng lặp - là vô nghĩa trong toán học và được mô tả chính xác hơn là một túi . Cấu trúc như vậy thừa nhận sự khác biệt giữa nhận dạng và giá trị "dựa trên giá trị".
Sự cố của bạn có thể liên quan đến việc chăm sóc một số vị trí; nó không rõ ràng vị trí đó có nghĩa là gì, nhưng tôi hy vọng bạn sẽ cần một số cấu trúc dữ liệu riêng biệt từ std::set
để mô hình này đúng cách. Có lẽ một ánh xạ std::map
từ tập hợp các phần tử của bạn đến từng vị trí sẽ thực hiện. Điều đó sẽ không đảm bảo rằng các vị trí là duy nhất.
Điều này cũng có thể giúp làm rõ vấn đề suy nghĩ cách bạn mô hình hóa mối quan hệ , chẳng hạn như trong cơ sở dữ liệu quan hệ. Điều gì bao gồm chìa khóa? Những phần nào của các thực thể có thể khác nhau một cách độc lập?
http://stackoverflow.com/questions/1796503/index-or-position-in-stdset/1810416#1810416 @seh nếu chúng ta thấy ngữ nghĩa, bất kỳ điều gì bạn nói đều đúng nhưng các bộ được sắp xếp. Chúng thường được thực hiện bằng cách sử dụng một số hình thức của cây cân bằng như cây đen đỏ, và sử dụng thứ tự yếu nghiêm ngặt để đặt hàng các yếu tố trong bộ này. Tôi không biết liệu các nhiệm vụ tiêu chuẩn có đặt hàng hay không. Nhưng đây là cách nó là –