Как говорится в заголовке, я хотел бы знать, как наиболее эффективно удалить элемент из списка внутри карты, который соответствует определенным условиям (имя и дата). Вот функция, которую я предоставил:
void Register::DeleteActivity(const Date &f,const std::string &a) {
auto it = Registro.find(f);
if(it != Registro.end()) {
if(it->second.empty()) {
std::cout <<"Error"<<std::endl;
} else {
for(auto ip = it->second.begin(); ip != it->second.end();) {
if(ip->getName() == a && ip->getStartdate() == f){
ip->printInfo();
it->second.erase(ip);
} else {
ip++;
}
}
}
} else {
std::cout<< "DeleteActivity::day not found"<<std::endl;
}
}
А вот и весь класс:
class Register {
private:
map<Date,std::list<Activity>> Registro;
public:
Register(){};
void addActivity(Date &z, Activity &n);
void editActivity(const Date &a, const std::string &c, Date k, const std::string newname);
void DeleteActivity(const Date &f, const std::string &a);
}