2011-11-29 49 views
5

Có một thùng chứa std trong C++ hoạt động như lai giữa vector và danh sách liên kết hay không. Ý nghĩa của tôi là cấu trúc dữ liệu vượt qua sự phân bổ lại thường xuyên của std :: vector và phân bổ bộ nhớ thừa tiềm năng, thay vào đó khi cấu trúc hết dung lượng, nó thêm con trỏ vào đoạn được phân bổ tiếp theo và chỉ khi số mảnh một giá trị nhất định, toàn bộ cấu trúc được tách rời thành một đoạn mới liên tục và số đoạn được đặt trở lại 0.C++ vectơ/danh sách liên kết lai

+0

Bạn đã xem 'std :: deque' chưa? Nó có phù hợp với yêu cầu của bạn không? – Asha

+0

Tôi nghĩ rằng 'std :: deque' hoạt động theo cách đó, nhưng tôi không chắc chắn. – Constantinius

+0

@Constantinius Tôi luôn nghĩ rằng 'std :: deque' chỉ là một loại ringbuffer và do đó tương tự như một' std :: vector' trong hành vi phân bổ bộ nhớ của nó. –

Trả lời

3

std::deque là vùng chứa tiêu chuẩn gần nhất với những gì bạn mô tả. Nó không phải là chính xác là như thế này, tuy nhiên (ví dụ, nó khá nhiều phải là một mảng của mảng chứ không phải là một danh sách các mảng vì sau này sẽ không cho phép truy cập phần tử thời gian không đổi).

Tùy thuộc vào yêu cầu thực tế của bạn, nó có thể đủ gần.

+0

Vì vậy, tôi về cơ bản có thể sử dụng một deque và chỉ cần thêm một vài dòng mã tôi cần để chống phân mảnh nó một khi một mức độ nhất định của các mảnh được đạt tới. Ý tưởng là tự nhiên để loại bỏ bộ nhớ hops và bộ nhớ cache bỏ lỡ ... – dtech

Các vấn đề liên quan