1. 7a44515 This commit establishes a new bucket_count policy in the unordered containers: The policy now allows a power-of-2 number of buckets to be requested (and that request honored) by the client. And if the number of buckets is set to a power of 2, then the constraint of the hash to the number of buckets uses & instead of %. If the client does not specify a number of buckets, then the policy remains unchanged: a prime number of buckets is selected. The growth policy is that the number of buckets is roughly doubled when needed. While growing, either the prime, or the power-of-2 strategy will be preserved. There is a small run time cost for putting in this switch. For very cheap hash functions, e.g. identity for int, the cost can be as high as 18%. However with more typical use cases, e.g. strings, the cost is in the noise level. I've measured cases with very cheap hash functions (int) that using a power-of-2 number of buckets can make look up about twice as fast. However I've also noted that a power-of-2 number of buckets is more susceptible to accidental catastrophic collisions. Though I've also noted that accidental catastrophic collisions are also possible when using a prime number of buckets (but seems far less likely). In short, this patch adds an extra tuning knob for those clients trying to get the last bit of performance squeezed out of their hash containers. Casual users of the hash containers will not notice the introduction of this tuning knob. Those clients who swear by power-of-2 hash containers can now opt-in to that strategy. Clients who prefer a prime number of buckets can continue as they have. by Howard Hinnant · 13 years ago
  2. f8880d0 As an extension, support incomplete types in the unordered containers to match what we already do in the associative containers. by Howard Hinnant · 14 years ago
  3. ec3773c Quash a whole bunch of warnings by Howard Hinnant · 14 years ago
  4. 9996844 Further macro protection by replacing _[A-Z] with _[A-Z]p by Howard Hinnant · 14 years ago
  5. 66c6f97 Add protection from min/max macros by Howard Hinnant · 14 years ago
  6. 08e1747 Windows support by Ruben Van Boxem. by Howard Hinnant · 14 years ago
  7. 199d0ae Fixed PR10507 (http://llvm.org/bugs/show_bug.cgi?id=10507) by Howard Hinnant · 14 years ago
  8. a73da5d Revert r136546, which was submitted without review. by Chandler Carruth · 14 years ago
  9. b59b929 Destruct elements of hash tables when removing individual entries from by Sean Hunt · 14 years ago
  10. 9f66bff Fix uninitialized loop counter. http://llvm.org/bugs/show_bug.cgi?id=10278 by Howard Hinnant · 14 years ago
  11. 0949eed _STD -> _VSTD to avoid macro clash on windows by Howard Hinnant · 14 years ago
  12. 2b1b2d4 Provide names for template and function parameters in forward declarations. The purpose is to aid automated documentation tools. by Howard Hinnant · 14 years ago
  13. 5f2f14c noexcept for <unordered_map>. by Howard Hinnant · 14 years ago
  14. df85e57 Fixed two problems found by Chris Jefferson: Made operator>> for char consistent with gcc. Opened an LWG issue on this one. 2) Renamed some private typedefs which are causing boost grief. by Howard Hinnant · 14 years ago
  15. 2529d02 Qualify calls to addressof with std::. Bug 9106 by Howard Hinnant · 15 years ago
  16. b64f8b0 license change by Howard Hinnant · 15 years ago
  17. 99acc50 visibility-decoration. by Howard Hinnant · 15 years ago
  18. bfd5530 Fix whitespace by Howard Hinnant · 15 years ago
  19. 73d21a4 Changed __config to react to all of clang's currently documented has_feature flags, and renamed _LIBCPP_MOVE to _LIBCPP_HAS_NO_RVALUE_REFERENCES to be more consistent with the rest of the libc++'s flags, and with clang's nomenclature. by Howard Hinnant · 15 years ago
  20. 324bb03 Fixing whitespace problems by Howard Hinnant · 15 years ago
  21. f5256e1 Wiped out some non-ascii characters that snuck into the copyright. by Howard Hinnant · 15 years ago
  22. bc8d3f9 libcxx initial import by Howard Hinnant · 15 years ago