Итак, в поисках совета о том, как исправить ситуацию или, возможно, лучший способ ее запрограммировать.
Я использую итерацию для построения сложной строки из пар ключ: значение в unordered_map. Чтобы сделать это, я перебираю карту, чтобы найти определенные c элементы, а затем отправляю поисковый термин внешней функции для создания строки. Внешняя функция использует свой собственный итератор для поиска того же unordered_map для переданного поискового термина, затем создает строку и затем удаляет записи, на которые она ссылалась. Проблема, я полагаю, заключается в том, что хотя итератор внешней функции все еще действителен, потому что он вызвал функцию стирания, итераторы в основной функции теперь становятся недействительными и выдают ошибку вне диапазона. Есть ли способ сбросить итераторы или отправить их в следующую действительную пару ключ: значение, когда они становятся недействительными, чтобы избежать ошибки?
Код - беспорядок (в основном потому, что я все еще открываю C ++ ) и может быть возможно использовать рекурсию для выполнения sh этого, но я не смог заставить рекурсию работать правильно.
Я могу опубликовать код, но без понимания входных данных и требуемых выходных данных, это, вероятно, не поможет объяснить что-либо, так что пока я просто оставлю вопрос как есть: есть ли способ «повторной проверки» недействительных итераторов?