diff options
| author | Walt Mankowski <waltman@pobox.com> | 2020-08-20 20:53:47 -0400 |
|---|---|---|
| committer | Walt Mankowski <waltman@pobox.com> | 2020-08-20 20:53:47 -0400 |
| commit | 13cdfa88e53569f70d9094b2d858490224a6cb25 (patch) | |
| tree | 817017845fa4c69a16a6256648fee69d9ec08b16 | |
| parent | 58a0d9119903d53470dce47142017d76aedb5e5e (diff) | |
| download | perlweeklychallenge-club-13cdfa88e53569f70d9094b2d858490224a6cb25.tar.gz perlweeklychallenge-club-13cdfa88e53569f70d9094b2d858490224a6cb25.tar.bz2 perlweeklychallenge-club-13cdfa88e53569f70d9094b2d858490224a6cb25.zip | |
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.
| -rw-r--r-- | challenge-074/walt-mankowski/cpp/ch-2.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
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()) |
