public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "redi at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug libstdc++/58153] unordered_multimap::erase(iterator) is not constant-time when many entries have the same key Date: Wed, 14 Aug 2013 10:35:00 -0000 [thread overview] Message-ID: <bug-58153-4-PjLv91bV5W@http.gcc.gnu.org/bugzilla/> (raw) In-Reply-To: <bug-58153-4@http.gcc.gnu.org/bugzilla/> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58153 --- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Kenton Varda from comment #0) > I do not know exactly what the standard requires here, but all of the > references I can find claim that erase(iter) should be average-time O(1), > and none of them suggest that having a large number of entries with the same > key should cause trouble. The standard says average case O(1), worst case O(a.size()), so if every element in the container has the same key then it's O(n). > FWIW, it looks like libc++ has the same behavior. Maybe my expectations > were wrong, and unordered_multimap was never meant to contain more than a > couple entries per key? It supports any number of entries with the same key, you just can't expect O(1) erase operations in that case. If you have very many collisions maybe your choice of key or your choice of container isn't ideal.
next prev parent reply other threads:[~2013-08-14 10:35 UTC|newest] Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-08-14 10:11 [Bug libstdc++/58153] New: " temporal at gmail dot com 2013-08-14 10:35 ` redi at gcc dot gnu.org [this message] 2013-08-14 11:16 ` [Bug libstdc++/58153] " temporal at gmail dot com 2013-08-24 16:30 ` fdumont at gcc dot gnu.org 2013-08-24 19:16 ` temporal at gmail dot com 2013-08-26 20:06 ` fdumont at gcc dot gnu.org 2013-08-27 3:10 ` temporal at gmail dot com 2015-04-09 14:49 ` redi at gcc dot gnu.org
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=bug-58153-4-PjLv91bV5W@http.gcc.gnu.org/bugzilla/ \ --to=gcc-bugzilla@gcc.gnu.org \ --cc=gcc-bugs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).