if (directions[i] == "north") {
for (int j = i + 1; j < directions.size(); j++) {
if (directions[j] == "south") {
directions.erase(directions[j]);
}
}
}
}
Здравствуйте. directions - это вектор, содержащий переменные класса string. Во втором if, если условие истина, я хочу удалить переменную под индексом j. Но vs не дает мне это сделать и ругается на erase. В чем проблема?
представь, что будет, если ты бежишь по камушкам и перед собой их убираешь?
Но даже когда я не указываю параметров в скобках, уже ругается
переходи на следующие значение,а предыдущее удаляй,в целом почитай про двусвязные списки
std::vector::erase принимает итератор на элемент вектора, а не сам элемент
Это не сработает с вектором, проще взять std::remove/std::remove_if или действительно списки
Обсуждают сегодня