Đây là phần tiếp theo của câu hỏi trước tôi có (Complexity of STL max_element).xóa phần tử tối đa từ bộ STL
Tôi muốn cơ bản bật phần tử tối đa từ tập hợp, nhưng tôi đang gặp sự cố.
Đây là khoảng mã của tôi:
set<Object> objectSet;
Object pop_max_element() {
Object obj = *objectSet.rbegin();
set<Object>::iterator i = objectSet.end()--; //this seems terrible
objectSet.erase(i); //*** glibc detected *** free(): invalid pointer
return obj;
}
Trước đó tôi đã cố gắng objectSet.erase(objectSet.rbegin());
nhưng trình biên dịch phàn nàn rằng không có chức năng phù hợp (tôi đoán nó không thích reverse_iterator). Tôi biết không có kiểm tra cho một bộ trống, nhưng nó không khi objectSet.size() >> 0.
'* objectSet.rbegin();' là lỗi đánh máy? bạn đang dereferencing bộ? –
Không, đó là trình lặp được bỏ qua. Dấu chấm gắn chặt hơn ngôi sao. –