Xem xét một cấu trúc dữ liệu mảng đó, bên cạnh các hoạt động đánh chỉ mục [.]. hỗ trợ sau hoạt động pushBack, popBack, và kích thước.
tại sao đang chặn mảng quan trọng? Bởi vì trong nhiều tình huống chúng tôi không biết trước như thế nào lớn một mảng nên ở đây là một ví dụ điển hình: giả sử bạn muốn thực hiện sắp xếp lệnh Unix để phân loại các dòng một le. Bạn decideto đọc c vào một loạt các dòng, sắp xếp các mảng trong nội bộ, và nally ra các mảng được sắp xếp. Với chặn mảng này là dễ dàng. Với mảng bị chặn, bạn sẽ
phải đọc le hai lần: một lần để nd số dòng nó chứa và một lần thực sự nạp nó vào mảng
chúng ta đến để thực hiện chặn mảng., Chúng tôi mô phỏng một u chặn mảng với n phần tử của b mảng bị chặn tự động phân bổ với w mục, nơi w > = n. Fi rst n mục của b được sử dụng để lưu trữ các yếu tố của bạn. W cuối - n mục b là không sử dụng. Càng lâu càng w > n.ushBack chỉ đơn giản là increments n và sử dụng rst các mục nhập không sử dụng của b cho nguyên tố mới.Khi w = n, pushBack tiếp theo phân bổ một mới bị chặn mảng b' có nghĩa là một hằng số yếu tố lớn hơn (nói một yếu tố hai).
để thiết lập lại phiên bản tại u đó được lưu trữ trong b, nội dung của b được sao chép vào các mảng mới do đó b cũ có thể được deallocated. Cuối cùng, con trỏ de ning b chuyển hướng đến các mảng mới.Xóa các yếu tố cuối cùng với popBack là dễ dàng hơn vì không có nguy cơ rằng b có thể trở nên quá nhỏ Tuy nhiên, chúng tôi có thể lãng phí nhiều không gian nếu chúng ta cho phép b là lớn hơn nhiều hơn cần thiết.Không gian lãng phí có thể được giữ nhỏ bằng cách thu hẹp lại b khi n trở nên quá nhỏ.Con số 3,6 cho mã giả hoàn tất
cho một lớp chặn mảng. Phát triển và thu hẹp lại được thực hiện bằng cách sử dụng cùng một tiện ích thủ tục phân bổ. Thực hiện của chúng tôi sử dụng hằng số ® và B với B = 2 và A = 4. Bất cứ khi nào hiện nay ranh giới mảng ecomes quá nhỏ, chúng tôi thay thế nó bằng một loạt các B lần kích thước cũ.
bất cứ khi nào kích thước của các mảng hiện tại sẽ trở thành A
lần lớn như một phần của nó được sử dụng, chúng tôi thay thế nó bằng một loạt các kích thước B(n.).
Sự lựa chọn của A và B sẽ trở nên rõ ràng sau.
đang được dịch, vui lòng đợi..
