Tôi muốn xóa một số phần tử trong sơ đồ std :: của tôi.
Tôi đã viết kỹ thuật xóa + remove_if mà tôi luôn làm với các vùng chứa chuỗi khác.
Nhưng nó không được biên dịch với bản đồ. Tại sao?
Và tôi có thể thực hiện công việc này bằng cách nào?Xóa các phần tử cụ thể trong tiêu chuẩn std :: map
std::map<int, int> m;
bool foo(const std::pair<int, int>& p)
{
return p.second > 15;
}
int _tmain(int argc, _TCHAR* argv[])
{
m.insert(make_pair(0, 0));
m.insert(make_pair(1, 10));
m.insert(make_pair(2, 20));
m.insert(make_pair(3, 30));
m.erase(
remove_if(m.begin(), m.end(), foo),
m.end()); // compile error
return 0;
}
remove_if không làm việc cho container kết hợp. xem [stackoverflow.com/q/800955/346366](http://stackoverflow.com/q/800955/346366) bạn sẽ tìm thấy một số tương đương – Nelstaar