ในรหัสต่อไปนี้ฉันวนลูปผ่านแผนที่และทดสอบว่าจำเป็นต้องลบองค์ประกอบหรือไม่ ปลอดภัยหรือไม่ที่จะลบองค์ประกอบและทำซ้ำต่อไปหรือฉันต้องรวบรวมคีย์ในคอนเทนเนอร์อื่นและทำลูปที่สองเพื่อเรียกการลบ ()
map<string, SerialdMsg::SerialFunction_t>::iterator pm_it;
for (pm_it = port_map.begin(); pm_it != port_map.end(); pm_it++)
{
if (pm_it->second == delete_this_id) {
port_map.erase(pm_it->first);
}
}
UPDATE: แน่นอนจากนั้นฉันก็อ่านคำถามนี้ซึ่งฉันไม่คิดว่าจะเกี่ยวข้อง แต่ตอบคำถามของฉัน
std::remove_if
ไม่ได้กับstd:map