Mã sau đây không hoạt động chính xác. Làm thế nào nó nên được thực hiện một cách chính xác?Làm cách nào để lặp qua bộ STL và xóa các phần tử có chọn lọc?
for (std::set<Color>::iterator i = myColorContainer.begin();
i!=myColorContainer.end();
++i)
{
if (*i == Yellow)
{
DoSomeProccessing(*i);
myColorContainer.erase(i);
}
}
là tiêu chuẩn tuân thủ. Tôi đồng ý @Viktor Sehr điều này sẽ là cách ưa thích để loại bỏ một yếu tố từ bộ này. Tuy nhiên, câu hỏi đặt ra cách yêu cầu đoạn mã hoạt động. –
@daramarak: Tôi nghĩ bạn đã trả lời trong khi tôi chỉnh sửa mã (nghĩ rằng đó là một std :: vector trong bài đăng đầu tiên của tôi) –