У меня есть два класса, назовем первый автомобиль, а другой - ShowRoom.Поиск и удаление указателей из векторов/списков
Что я хочу сделать, так это создать либо вектор, либо список, в котором я буду хранить указатели на объекты Car. Затем я хочу искать эти векторы/списки для определенного указателя (который будет передан как параметр функции removeCar()), а затем удалит этот объект вместе с его указателем из вектора/списка.
Я пытаюсь реализовать эту идею уже довольно давно, используя функции алгоритма «найти» и «удалить», но я продолжаю получать ошибки при преобразовании объектов. Я пытаюсь разыменовать указатель, но затем я получаю сообщение о том, как я передаю слишком много аргументов для «удаления».
Вот код реализован в функции ShowRoom Удалить:
list <Car*> inventory;
void Delete(Car* BMW)
{
if (find(inventory.begin(),inventory.end(),BMW) != inventory.end())
remove(inventory.begin(),inventory.end(),BMW);
else
cout << "Car not found" << endl;
}
Помощь по этому вопросу было бы весьма признателен.
Вы почти ответили сами, просто создайте вектор, например: 'std :: vector cars;', затем просто сделайте 'cars.push_back (* pointer_to_Cars_object);'. Это позволит вам иметь вектор объектов Cars; Указатели указывают на объект, поэтому в теории они действительно являются просто адресом объектов Cars. Оттуда перебирать список можно только: 'for (auto it = cars.begin(); it! = Cars.end(); it ++)'. Это позволит вам перебирать список. Тело 'for' будет выполнять ваш алгоритм. –
TimLayne
1. Включите '', 2. используйте' std :: list :: remove' вместо 'std :: remove' –
Попробуйте' inventory.remove (BMW); '. – molbdnilo