Tôi có một tiêu chuẩn :: unordered_map mà tôi sẽ loại bỏ các yếu tố từ thông qua lặp lại.Làm cách nào để ngăn chặn việc khôi phục std :: unordered_map trong khi xóa các phần tử?
auto itr = myMap.begin();
while (itr != myMap.end()) {
if (/* removal condition */) {
itr = myMap.erase(itr);
} else {
++itr;
}
}
Tôi muốn ngăn bản đồ thực hiện bất kỳ hoạt động đắt tiền nào cho đến khi tôi xóa xong tất cả các yếu tố cần xóa. Tôi có một mối quan tâm hợp lệ? Tôi có hiểu lầm về cách hoạt động của bộ nhớ trong không?
Tôi biết chúng tôi đang xem xét câu hỏi này 4 năm sau đó, nhưng tôi thực sự vui mừng khi thấy câu trả lời này nhập vào hỗn hợp. Nhìn vào tài liệu một lần nữa, nó khá rõ ràng rằng sự phức tạp tồi tệ nhất đúc đến không phải từ phục hồi tiềm năng, nhưng thay vì từ va chạm băm. Tôi nghĩ đây chính là câu trả lời đúng. – vmrob
vì vậy bảng chỉ có thể phát triển.? –
Số lượng nhóm trong một vùng chứa không có thứ tự sẽ không bao giờ thu nhỏ dưới 'xóa '. Con số này được phép thu nhỏ dưới 'rehash' và tất cả các triển khai sẽ làm như vậy. –