gcc/libstdc++-v3/include/bits
François Dumont da29608a7a re PR libstdc++/41975 ([C++0x] [DR579] unordered_set::erase performs worse when nearly empty)
2011-11-23  François Dumont <fdumont@gcc.gnu.org>

	PR libstdc++/41975
	* include/bits/hashtable.h (_Hashtable<>): Major data model
	modification to limit performance impact of empty buckets in
	erase(iterator) implementation.
	* include/bits/hashtable_policy.h (_Hashtable_iterator,
	_Hashtable_const_iterator): Remove not used anymore.
	* include/bits/hashtable_policy.h (_Prime_rehash_policy): Remove
	_M_grow_factor, just use natural evolution of prime numbers. Add
	_M_prev_size to know when the number of buckets can be reduced.
	* include/bits/unordered_set.h (__unordered_set<>,
	__unordered_multiset<>), unordered_map.h (__unordered_map<>,
	__unordered_multimap<>): Change default value of cache hash code
	template parameter, false for integral types with noexcept hash
	functor, true otherwise.
	* include/debug/unordered_map, unordered_set: Adapt transformation
	from iterator/const_iterator to respectively
	local_iterator/const_local_iterator.
	* testsuite/performance/23_containers/copy_construct/unordered_set.cc:
	New.
	* testsuite/23_containers/unordered_set/instantiation_neg.cc: New.
	* testsuite/23_containers/unordered_set/hash_policy/rehash.cc: New.
	* testsuite/23_containers/unordered_multiset/cons/copy.cc: New.
	* testsuite/23_containers/unordered_multiset/erase/1.cc,
	24061-multiset.cc: Add checks on the number of bucket elements.
	* testsuite/23_containers/unordered_multiset/insert/multiset_range.cc,
	multiset_single.cc, multiset_single_move.cc: Likewise.

From-SVN: r181677
2011-11-23 20:30:18 +00:00
..
algorithmfwd.h Makefile.am (install-freestanding-headers): Install c++0x_warning.h. 2011-11-01 00:02:45 -04:00
alloc_traits.h ptr_traits.h (__rebind): Replace with... 2011-11-08 00:33:45 +00:00
allocator.h allocator.h (__shrink_to_fit_aux::_S_do_it): Create the new object with the same allocator. 2011-11-09 21:14:03 +00:00
atomic_base.h re PR libstdc++/51102 (missing macros in <atomic>) 2011-11-16 15:43:15 +00:00
basic_ios.h
basic_ios.tcc
basic_string.h hash-long-double-aux.cc: Rename to... 2011-11-18 12:37:06 +00:00
basic_string.tcc
boost_concept_check.h
c++0x_warning.h
c++config c++config: Add tr2 to versioned namespaces. 2011-11-02 04:23:33 +00:00
char_traits.h
codecvt.h
concept_check.h
cpp_type_traits.h
deque.tcc
forward_list.h Makefile.am (install-freestanding-headers): Install c++0x_warning.h. 2011-11-01 00:02:45 -04:00
forward_list.tcc
fstream.tcc
functexcept.h
functional_hash.h hash-long-double-aux.cc: Rename to... 2011-11-18 12:37:06 +00:00
gslice_array.h
gslice.h
hashtable_policy.h re PR libstdc++/41975 ([C++0x] [DR579] unordered_set::erase performs worse when nearly empty) 2011-11-23 20:30:18 +00:00
hashtable.h re PR libstdc++/41975 ([C++0x] [DR579] unordered_set::erase performs worse when nearly empty) 2011-11-23 20:30:18 +00:00
indirect_array.h
ios_base.h
istream.tcc
list.tcc
locale_classes.h
locale_classes.tcc
locale_facets_nonio.h
locale_facets_nonio.tcc
locale_facets.h
locale_facets.tcc
localefwd.h
mask_array.h
move.h
ostream_insert.h
ostream.tcc
postypes.h
ptr_traits.h ptr_traits.h (__rebind): Replace with... 2011-11-08 00:33:45 +00:00
random.h re PR libstdc++/50951 (state of subtract_with_carry_engine not saved correctly to output stream) 2011-11-02 10:06:08 +00:00
random.tcc re PR libstdc++/50951 (state of subtract_with_carry_engine not saved correctly to output stream) 2011-11-02 10:06:08 +00:00
range_access.h
regex_compiler.h
regex_constants.h
regex_cursor.h
regex_error.h
regex_grep_matcher.h
regex_grep_matcher.tcc
regex_nfa.h
regex_nfa.tcc
regex.h
shared_ptr_base.h hash-long-double-aux.cc: Rename to... 2011-11-18 12:37:06 +00:00
shared_ptr.h hash-long-double-aux.cc: Rename to... 2011-11-18 12:37:06 +00:00
slice_array.h
sstream.tcc
stl_algo.h
stl_algobase.h
stl_bvector.h hash-long-double-aux.cc: Rename to... 2011-11-18 12:37:06 +00:00
stl_construct.h
stl_deque.h Makefile.am (install-freestanding-headers): Install c++0x_warning.h. 2011-11-01 00:02:45 -04:00
stl_function.h
stl_heap.h
stl_iterator_base_funcs.h
stl_iterator_base_types.h
stl_iterator.h
stl_list.h Makefile.am (install-freestanding-headers): Install c++0x_warning.h. 2011-11-01 00:02:45 -04:00
stl_map.h re PR libstdc++/51142 ([C++0x] map::erase(key) doesn't compile with -D_GLIBCXX_DEBUG.) 2011-11-15 23:28:49 +00:00
stl_multimap.h re PR libstdc++/51142 ([C++0x] map::erase(key) doesn't compile with -D_GLIBCXX_DEBUG.) 2011-11-15 23:28:49 +00:00
stl_multiset.h Makefile.am (install-freestanding-headers): Install c++0x_warning.h. 2011-11-01 00:02:45 -04:00
stl_numeric.h
stl_pair.h
stl_queue.h
stl_raw_storage_iter.h
stl_relops.h
stl_set.h Makefile.am (install-freestanding-headers): Install c++0x_warning.h. 2011-11-01 00:02:45 -04:00
stl_stack.h
stl_tempbuf.h
stl_tree.h re PR libstdc++/51142 ([C++0x] map::erase(key) doesn't compile with -D_GLIBCXX_DEBUG.) 2011-11-15 23:28:49 +00:00
stl_uninitialized.h
stl_vector.h stl_vector.h (vector::_Alloc_traits): Make private. 2011-11-09 01:26:04 +00:00
stream_iterator.h
streambuf_iterator.h
streambuf.tcc
stringfwd.h
unique_ptr.h hash-long-double-aux.cc: Rename to... 2011-11-18 12:37:06 +00:00
unordered_map.h re PR libstdc++/41975 ([C++0x] [DR579] unordered_set::erase performs worse when nearly empty) 2011-11-23 20:30:18 +00:00
unordered_set.h re PR libstdc++/41975 ([C++0x] [DR579] unordered_set::erase performs worse when nearly empty) 2011-11-23 20:30:18 +00:00
uses_allocator.h
valarray_after.h
valarray_array.h
valarray_array.tcc
valarray_before.h
vector.tcc hash-long-double-aux.cc: Rename to... 2011-11-18 12:37:06 +00:00