From 13cdfa88e53569f70d9094b2d858490224a6cb25 Mon Sep 17 00:00:00 2001 From: Walt Mankowski Date: Thu, 20 Aug 2020 20:53:47 -0400 Subject: check for double-delete when removing c from nr After it's been removed, set the value in seen to end() so we know not to erase it again. --- challenge-074/walt-mankowski/cpp/ch-2.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'challenge-074/walt-mankowski/cpp/ch-2.cpp') diff --git a/challenge-074/walt-mankowski/cpp/ch-2.cpp b/challenge-074/walt-mankowski/cpp/ch-2.cpp index 01fb9a916b..b5f32cc7a4 100644 --- a/challenge-074/walt-mankowski/cpp/ch-2.cpp +++ b/challenge-074/walt-mankowski/cpp/ch-2.cpp @@ -20,9 +20,13 @@ int main(int argc, char *argv[]) { if (seen.find(c) == seen.end()) { nr.push_front(c); seen[c] = nr.cbegin(); - } else + } else { // remove c from nr - nr.erase(seen[c]); + if (seen[c] != nr.end()) { + nr.erase(seen[c]); + seen[c] = nr.end(); + } + } // now the FNR is either the last element of nr, or # if (nr.empty()) -- cgit