Có bất kỳ cấu trúc cho phép CẢ của các hoạt động này:độc đáo lấy chìa khoá-giá trị cặp
collection.TryGetValue(TKey, out TValue)
collection.TryGetKey(TValue, out TKey)
Trong một thời gian tốt hơn so với O (n)?
Vấn đề của tôi:
tôi về cơ bản cần để có thể lấy giá trị chủ chốt của hoặc giá trị của chính thực sự nhanh chóng, mà không cần sao chép bộ nhớ (vì vậy hai bộ từ điển là ra khỏi câu hỏi).
Lưu ý rất quan trọng: tất cả các phím là duy nhất và tất cả các giá trị là duy nhất. Có thông tin này, tôi cảm thấy bạn có thể thực hiện tác vụ này trong thời gian tốt hơn chỉ O (1) cho .TryGetValue
và O (n) cho .TryGetKey
.
EDIT:
Trong trường hợp của tôi, tôi có một ánh xạ giữa strings
và ints
. Có ~ 650.000 cặp khóa-giá trị văn bản và ID của chúng. Vì vậy, về cơ bản tôi muốn nhận được chuỗi với một ID cụ thể mà còn là ID của một chuỗi nhất định.
"mà không cần sao chép bộ nhớ (do đó, hai từ điển không hoạt động)". sử dụng hai bộ từ điển không lặp lại bộ nhớ trừ khi 'TKey' và' TValue' của bạn là cả hai cấu trúc. –
@ScottChamberlain cả hai đều là cấu trúc :) –
Tôi không biết liệu bạn có thể yêu cầu gì không. Ý tôi là, tôi không biết nhiều và vẫn còn nhiều điều để học nhưng một điều tôi luôn nghe về khoa học máy tính là: "Bạn muốn nó nhanh không? Bạn cần bộ nhớ. Bạn muốn nó sáng? Nó sẽ chậm hơn." Nhưng tôi ủng hộ câu hỏi của bạn kể từ khi tôi đang intresed. –