Giả sử tôi muốn xóa các mục theo một số tiêu chí. Giả sử:Làm cách nào để xóa các giá trị khỏi QMap?
QMap<int, int> map;
và tôi muốn xóa tất cả các mục có giá trị là số lẻ. Nếu tôi sử dụng một iterator:
for (auto it = map.begin(); it != map.end(); ++it)
if (it.value() % 2 == 1)
map.remove(it.key());
Mã này có lẽ là sai, vì tiếng gọi của
map.remove(it.key())
làm mất hiệu lực iterator. Làm thế nào tôi có thể làm điều này mà không cần thiết lập lại các iterator sau mỗi loại bỏ?
Điều này sẽ giúp tôi nghĩ rằng: http://stackoverflow.com/questions/263945/what-happens-if-you-call-erase-on-a-map-element-while-iterating-from-begin-to – Andrew