Tôi đang chuyển một số c-code rất cũ vào C++ và tôi đã chạy qua một danh sách liên kết được triển khai trong một mảng. Phần tử là cấu trúc đơn giản:Suy nghĩ về cách triển khai?
struct element
{
void *m_ptrData;
short m_nextEntry;
short m_prevEntry;
};
Là một mảng, có thể truy cập nhanh vào dữ liệu, nếu bạn biết chỉ mục. Các khía cạnh danh sách liên kết cho phép các yếu tố được di chuyển xung quanh, và "xóa" từ danh sách. Các yếu tố có thể được di chuyển trong danh sách, dựa trên tần suất sử dụng (cho MRU và xuống cho LRU).
Tôi thích tìm cách tốt hơn để triển khai điều này hơn là sử dụng mảng khác. Tôi muốn sử dụng STL, nhưng tôi không chắc chắn container nào là tốt nhất để sử dụng.
Bất kỳ ai có bất kỳ suy nghĩ nào?
Tốc độ truy cập ngẫu nhiên có quan trọng không? Tôi có nghĩa là nó xảy ra * rất nhiều *, như trái ngược với iterating? – Guy
Nó phụ thuộc hoàn toàn vào cách nó được sử dụng bởi phần còn lại của mã. Là truy cập trực tiếp một cách phổ biến của các yếu tố truy cập, hoặc là nó được thực hiện chủ yếu bằng cách bước qua danh sách? Một số yếu tố có được truy cập thường xuyên hơn các yếu tố khác không? – suszterpatt
Tôi đã từng đọc một bài báo tuyên bố (và bảo vệ) xác nhận rằng 'std :: vector' hầu như luôn là lựa chọn tốt hơn' std :: list', ngay cả khi bạn thêm/xóa các mục từ giữa vùng chứa . Tôi không thể tìm thấy bài viết ngay bây giờ, vì vậy tôi đã thêm bài viết này làm nhận xét thay vì trả lời. Tôi sẽ đánh giá cao nếu một số người khác biết về bài viết có thể đăng liên kết. –