google_hash 0.6.2 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README +61 -27
- data/Rakefile +4 -1
- data/TODO +5 -0
- data/VERSION +1 -1
- data/changelog +3 -0
- data/ext/extconf.rb +10 -5
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/AUTHORS +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/COPYING +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/ChangeLog +47 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/INSTALL +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/Makefile.am +29 -14
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/Makefile.in +77 -42
- data/ext/sparsehash-1.8.1/NEWS +71 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/README +0 -0
- data/ext/{sparsehash-1.5.2/README.windows → sparsehash-1.8.1/README_windows.txt} +25 -25
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/TODO +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/aclocal.m4 +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/compile +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/config.guess +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/config.sub +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/configure +3690 -4560
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/configure.ac +1 -1
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/depcomp +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/doc/dense_hash_map.html +65 -5
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/doc/dense_hash_set.html +65 -5
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/doc/designstyle.css +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/doc/implementation.html +11 -5
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/doc/index.html +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/doc/performance.html +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/doc/sparse_hash_map.html +65 -5
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/doc/sparse_hash_set.html +65 -5
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/doc/sparsetable.html +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/experimental/Makefile +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/experimental/README +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/experimental/example.c +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/experimental/libchash.c +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/experimental/libchash.h +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/google-sparsehash.sln +17 -1
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/install-sh +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/m4/acx_pthread.m4 +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/m4/google_namespace.m4 +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/m4/namespaces.m4 +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/m4/stl_hash.m4 +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/m4/stl_hash_fun.m4 +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/m4/stl_namespace.m4 +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/missing +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/mkinstalldirs +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/packages/deb.sh +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/packages/deb/README +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/packages/deb/changelog +24 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/packages/deb/compat +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/packages/deb/control +1 -1
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/packages/deb/copyright +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/packages/deb/docs +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/packages/deb/rules +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/packages/deb/sparsehash.dirs +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/packages/deb/sparsehash.install +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/packages/rpm.sh +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/packages/rpm/rpm.spec +1 -1
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/src/config.h.in +3 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/src/config.h.include +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/src/google/dense_hash_map +43 -27
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/src/google/dense_hash_set +40 -19
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/src/google/sparse_hash_map +32 -23
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/src/google/sparse_hash_set +31 -21
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/src/google/sparsehash/densehashtable.h +481 -298
- data/ext/sparsehash-1.8.1/src/google/sparsehash/hashtable-common.h +178 -0
- data/ext/sparsehash-1.8.1/src/google/sparsehash/libc_allocator_with_realloc.h +121 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/src/google/sparsehash/sparsehashtable.h +404 -233
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/src/google/sparsetable +173 -83
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/src/google/type_traits.h +3 -29
- data/ext/sparsehash-1.8.1/src/hash_test_interface.h +1011 -0
- data/ext/sparsehash-1.8.1/src/hashtable_test.cc +1733 -0
- data/ext/sparsehash-1.8.1/src/libc_allocator_with_realloc_test.cc +129 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/src/simple_test.cc +1 -1
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/src/sparsetable_unittest.cc +202 -6
- data/ext/sparsehash-1.8.1/src/testutil.h +251 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/src/time_hash_map.cc +128 -54
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/src/type_traits_unittest.cc +30 -20
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/src/windows/config.h +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/src/windows/google/sparsehash/sparseconfig.h +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/src/windows/port.cc +0 -0
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/src/windows/port.h +0 -0
- data/ext/sparsehash-1.8.1/vsprojects/hashtable_test/hashtable_test.vcproj +197 -0
- data/ext/{sparsehash-1.5.2/vsprojects/hashtable_unittest/hashtable_unittest.vcproj → sparsehash-1.8.1/vsprojects/simple_test/simple_test.vcproj} +9 -8
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/vsprojects/sparsetable_unittest/sparsetable_unittest.vcproj +0 -2
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/vsprojects/time_hash_map/time_hash_map.vcproj +3 -2
- data/ext/{sparsehash-1.5.2 → sparsehash-1.8.1}/vsprojects/type_traits_unittest/type_traits_unittest.vcproj +0 -2
- data/ext/template/google_hash.cpp.erb +2 -1
- data/ext/template/main.cpp.erb +1 -1
- data/results.txt +6 -22
- data/spec/benchmark.rb +57 -0
- data/spec/spec.google_hash.rb +1 -8
- metadata +140 -130
- data/ext/benchmark.rb +0 -47
- data/ext/sparsehash-1.5.2/NEWS +0 -0
- data/ext/sparsehash-1.5.2/src/hashtable_unittest.cc +0 -1375
- data/ext/sparsehash-1.5.2/src/words +0 -8944
- data/types.txt +0 -18
@@ -4,7 +4,7 @@
|
|
4
4
|
# make sure we're interpreted by some minimal autoconf
|
5
5
|
AC_PREREQ(2.57)
|
6
6
|
|
7
|
-
AC_INIT(sparsehash, 1.
|
7
|
+
AC_INIT(sparsehash, 1.8.1, opensource@google.com)
|
8
8
|
# The argument here is just something that should be in the current directory
|
9
9
|
# (for sanity checking)
|
10
10
|
AC_CONFIG_SRCDIR(README)
|
File without changes
|
@@ -174,7 +174,7 @@ compatible with the tr1 class <code>unordered_map</code>.
|
|
174
174
|
<TD VAlign=top>
|
175
175
|
The <A href="http://www.sgi.com/tech/stl/HashFunction.html">hash function</A> used by the
|
176
176
|
hash_map. This is also defined as <tt>dense_hash_map::hasher</tt>.
|
177
|
-
<br><b>Note:</b> Hashtable performance depends
|
177
|
+
<br><b>Note:</b> Hashtable performance depends heavily on the choice of
|
178
178
|
hash function. See <A HREF="performance.html#hashfn">the performance
|
179
179
|
page</A> for more information.
|
180
180
|
</TD>
|
@@ -203,8 +203,19 @@ compatible with the tr1 class <code>unordered_map</code>.
|
|
203
203
|
<tt>Alloc</tt>
|
204
204
|
</TD>
|
205
205
|
<TD VAlign=top>
|
206
|
-
|
207
|
-
|
206
|
+
The STL allocator to use. By default, uses the provided allocator
|
207
|
+
<code>libc_allocator_with_realloc</code>, which likely gives better
|
208
|
+
performance than other STL allocators due to its built-in support
|
209
|
+
for <code>realloc</code>, which this container takes advantage of.
|
210
|
+
If you use an allocator other than the default, note that this
|
211
|
+
container imposes an additional requirement on the STL allocator
|
212
|
+
type beyond those in [lib.allocator.requirements]: it does not
|
213
|
+
support allocators that define alternate memory models. That is,
|
214
|
+
it assumes that <code>pointer</code>, <code>const_pointer</code>,
|
215
|
+
<code>size_type</code>, and <code>difference_type</code> are just
|
216
|
+
<code>T*</code>, <code>const T*</code>, <code>size_t</code>, and
|
217
|
+
<code>ptrdiff_t</code>, respectively. This is also defined as
|
218
|
+
<tt>dense_hash_map::allocator_type</tt>.
|
208
219
|
</TD>
|
209
220
|
<TD VAlign=top>
|
210
221
|
</TD>
|
@@ -667,7 +678,7 @@ None.
|
|
667
678
|
|
668
679
|
<TR>
|
669
680
|
<TD VAlign=top>
|
670
|
-
<tt>
|
681
|
+
<tt>void max_load_factor(float new_grow)</tt>
|
671
682
|
</TD>
|
672
683
|
<TD VAlign=top>
|
673
684
|
<tt>Unordered Associative Container</tt> (tr1)
|
@@ -693,7 +704,7 @@ None.
|
|
693
704
|
|
694
705
|
<TR>
|
695
706
|
<TD VAlign=top>
|
696
|
-
<tt>
|
707
|
+
<tt>void min_load_factor(float new_grow)</tt>
|
697
708
|
</TD>
|
698
709
|
<TD VAlign=top>
|
699
710
|
<tt>dense_hash_map</tt>
|
@@ -787,6 +798,20 @@ None.
|
|
787
798
|
</TD>
|
788
799
|
</TR>
|
789
800
|
|
801
|
+
<TR>
|
802
|
+
<TD VAlign=top>
|
803
|
+
<tt>allocator_type get_allocator() const</tt>
|
804
|
+
</TD>
|
805
|
+
<TD VAlign=top>
|
806
|
+
<tt>Unordered Associative Container</tt> (tr1)
|
807
|
+
</TD>
|
808
|
+
<TD VAlign=top>
|
809
|
+
Returns the <tt>allocator_type</tt> object used by the
|
810
|
+
<tt>dense_hash_map</tt>: either the one passed in to the
|
811
|
+
constructor, or a default <tt>Alloc</tt> instance.
|
812
|
+
</TD>
|
813
|
+
</TR>
|
814
|
+
|
790
815
|
<TR>
|
791
816
|
<TD VAlign=top>
|
792
817
|
<tt>dense_hash_map()</tt>
|
@@ -847,6 +872,22 @@ None.
|
|
847
872
|
</TD>
|
848
873
|
</TR>
|
849
874
|
|
875
|
+
<TR>
|
876
|
+
<TD VAlign=top>
|
877
|
+
<tt>dense_hash_map(size_type n, const hasher& h, const
|
878
|
+
key_equal& k, const allocator_type& a)</tt>
|
879
|
+
</TD>
|
880
|
+
<TD VAlign=top>
|
881
|
+
<tt>Unordered Associative Container</tt> (tr1)
|
882
|
+
</TD>
|
883
|
+
<TD VAlign=top>
|
884
|
+
Creates an empty <tt>dense_hash_map</tt> that's optimized for up
|
885
|
+
to <tt>n</tt> items, using <tt>h</tt> as the hash function,
|
886
|
+
<tt>k</tt> as the key equal function, and <tt>a</tt> as the
|
887
|
+
allocator object.
|
888
|
+
</TD>
|
889
|
+
</TR>
|
890
|
+
|
850
891
|
<TR>
|
851
892
|
<TD VAlign=top>
|
852
893
|
<pre>template <class <A
|
@@ -919,6 +960,25 @@ hasher& h, const key_equal& k) </pre> <A href="#2">[2]</A>
|
|
919
960
|
</TD>
|
920
961
|
</TR>
|
921
962
|
|
963
|
+
<TR>
|
964
|
+
<TD VAlign=top>
|
965
|
+
<pre>template <class <A
|
966
|
+
href="http://www.sgi.com/tech/stl/InputIterator.html">InputIterator</A>>
|
967
|
+
dense_hash_map(InputIterator f, InputIterator l, size_type n, const
|
968
|
+
hasher& h, const key_equal& k, const allocator_type& a) </pre>
|
969
|
+
<A href="#2">[2]</A>
|
970
|
+
</TD>
|
971
|
+
<TD VAlign=top>
|
972
|
+
<tt>Unordered Associative Container</tt> (tr1)
|
973
|
+
</TD>
|
974
|
+
<TD VAlign=top>
|
975
|
+
Creates a hash_map with a copy of a range that's optimized for
|
976
|
+
holding up to <tt>n</tt> items, using <tt>h</tt> as the hash
|
977
|
+
function, <tt>k</tt> as the key equal function, and <tt>a</tt> as
|
978
|
+
the allocator object.
|
979
|
+
</TD>
|
980
|
+
</TR>
|
981
|
+
|
922
982
|
<TR>
|
923
983
|
<TD VAlign=top>
|
924
984
|
<tt>dense_hash_map(const hash_map&)</tt>
|
@@ -164,7 +164,7 @@ compatible with the tr1 class <code>unordered_set</code>.
|
|
164
164
|
<TD VAlign=top>
|
165
165
|
The <A href="http://www.sgi.com/tech/stl/HashFunction.html">hash function</A> used by the
|
166
166
|
hash_set. This is also defined as <tt>dense_hash_set::hasher</tt>.
|
167
|
-
<br><b>Note:</b> Hashtable performance depends
|
167
|
+
<br><b>Note:</b> Hashtable performance depends heavily on the choice of
|
168
168
|
hash function. See <A HREF="performance.html#hashfn">the performance
|
169
169
|
page</A> for more information.
|
170
170
|
</TD>
|
@@ -193,8 +193,19 @@ compatible with the tr1 class <code>unordered_set</code>.
|
|
193
193
|
<tt>Alloc</tt>
|
194
194
|
</TD>
|
195
195
|
<TD VAlign=top>
|
196
|
-
|
197
|
-
|
196
|
+
The STL allocator to use. By default, uses the provided allocator
|
197
|
+
<code>libc_allocator_with_realloc</code>, which likely gives better
|
198
|
+
performance than other STL allocators due to its built-in support
|
199
|
+
for <code>realloc</code>, which this container takes advantage of.
|
200
|
+
If you use an allocator other than the default, note that this
|
201
|
+
container imposes an additional requirement on the STL allocator
|
202
|
+
type beyond those in [lib.allocator.requirements]: it does not
|
203
|
+
support allocators that define alternate memory models. That is,
|
204
|
+
it assumes that <code>pointer</code>, <code>const_pointer</code>,
|
205
|
+
<code>size_type</code>, and <code>difference_type</code> are just
|
206
|
+
<code>T*</code>, <code>const T*</code>, <code>size_t</code>, and
|
207
|
+
<code>ptrdiff_t</code>, respectively. This is also defined as
|
208
|
+
<tt>dense_hash_set::allocator_type</tt>.
|
198
209
|
</TD>
|
199
210
|
<TD VAlign=top>
|
200
211
|
</TD>
|
@@ -615,7 +626,7 @@ None.
|
|
615
626
|
|
616
627
|
<TR>
|
617
628
|
<TD VAlign=top>
|
618
|
-
<tt>
|
629
|
+
<tt>void max_load_factor(float new_grow)</tt>
|
619
630
|
</TD>
|
620
631
|
<TD VAlign=top>
|
621
632
|
<tt>Unordered Associative Container</tt> (tr1)
|
@@ -641,7 +652,7 @@ None.
|
|
641
652
|
|
642
653
|
<TR>
|
643
654
|
<TD VAlign=top>
|
644
|
-
<tt>
|
655
|
+
<tt>void min_load_factor(float new_grow)</tt>
|
645
656
|
</TD>
|
646
657
|
<TD VAlign=top>
|
647
658
|
<tt>dense_hash_set</tt>
|
@@ -735,6 +746,20 @@ None.
|
|
735
746
|
</TD>
|
736
747
|
</TR>
|
737
748
|
|
749
|
+
<TR>
|
750
|
+
<TD VAlign=top>
|
751
|
+
<tt>allocator_type get_allocator() const</tt>
|
752
|
+
</TD>
|
753
|
+
<TD VAlign=top>
|
754
|
+
<tt>Unordered Associative Container</tt> (tr1)
|
755
|
+
</TD>
|
756
|
+
<TD VAlign=top>
|
757
|
+
Returns the <tt>allocator_type</tt> object used by the
|
758
|
+
<tt>dense_hash_set</tt>: either the one passed in to the
|
759
|
+
constructor, or a default <tt>Alloc</tt> instance.
|
760
|
+
</TD>
|
761
|
+
</TR>
|
762
|
+
|
738
763
|
<TR>
|
739
764
|
<TD VAlign=top>
|
740
765
|
<tt>dense_hash_set()</tt>
|
@@ -795,6 +820,22 @@ None.
|
|
795
820
|
</TD>
|
796
821
|
</TR>
|
797
822
|
|
823
|
+
<TR>
|
824
|
+
<TD VAlign=top>
|
825
|
+
<tt>dense_hash_set(size_type n, const hasher& h, const
|
826
|
+
key_equal& k, const allocator_type& a)</tt>
|
827
|
+
</TD>
|
828
|
+
<TD VAlign=top>
|
829
|
+
<tt>Unordered Associative Container</tt> (tr1)
|
830
|
+
</TD>
|
831
|
+
<TD VAlign=top>
|
832
|
+
Creates an empty <tt>dense_hash_set</tt> that's optimized for up
|
833
|
+
to <tt>n</tt> items, using <tt>h</tt> as the hash function,
|
834
|
+
<tt>k</tt> as the key equal function, and <tt>a</tt> as the
|
835
|
+
allocator object.
|
836
|
+
</TD>
|
837
|
+
</TR>
|
838
|
+
|
798
839
|
<TR>
|
799
840
|
<TD VAlign=top>
|
800
841
|
<pre>template <class <A
|
@@ -867,6 +908,25 @@ hasher& h, const key_equal& k) </pre> <A href="#1">[2]</A>
|
|
867
908
|
</TD>
|
868
909
|
</TR>
|
869
910
|
|
911
|
+
<TR>
|
912
|
+
<TD VAlign=top>
|
913
|
+
<pre>template <class <A
|
914
|
+
href="http://www.sgi.com/tech/stl/InputIterator.html">InputIterator</A>>
|
915
|
+
dense_hash_set(InputIterator f, InputIterator l, size_type n, const
|
916
|
+
hasher& h, const key_equal& k, const allocator_type& a) </pre>
|
917
|
+
<A href="#2">[2]</A>
|
918
|
+
</TD>
|
919
|
+
<TD VAlign=top>
|
920
|
+
<tt>Unordered Associative Container</tt> (tr1)
|
921
|
+
</TD>
|
922
|
+
<TD VAlign=top>
|
923
|
+
Creates a hash_set with a copy of a range that's optimized for
|
924
|
+
holding up to <tt>n</tt> items, using <tt>h</tt> as the hash
|
925
|
+
function, <tt>k</tt> as the key equal function, and <tt>a</tt> as
|
926
|
+
the allocator object.
|
927
|
+
</TD>
|
928
|
+
</TR>
|
929
|
+
|
870
930
|
<TR>
|
871
931
|
<TD VAlign=top>
|
872
932
|
<tt>dense_hash_set(const hash_set&)</tt>
|
File without changes
|
@@ -271,11 +271,17 @@ copy-time rehash makes them unnecessary.</p>
|
|
271
271
|
<h3>Resource use</h3>
|
272
272
|
|
273
273
|
<p>The data is stored in a sparsetable, so space use is the same as
|
274
|
-
for sparsetable.
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
274
|
+
for sparsetable. However, by default the sparse_hash_set
|
275
|
+
implementation tries to keep about half the table buckets empty, to
|
276
|
+
keep lookup-chains short. Since sparsehashmap has about 2 bits
|
277
|
+
overhead per bucket (or 2.5 bits on 64-bit systems), sparse_hash_map
|
278
|
+
has about 4-5 bits overhead per hashtable item.</p>
|
279
|
+
|
280
|
+
<p>Time use is also determined in large part by the sparsetable
|
281
|
+
implementation. However, there is also an extra probing cost in
|
282
|
+
hashtables, which depends in large part on the "too full" value. It
|
283
|
+
should be rare to need more than 4-5 probes per lookup, and usually
|
284
|
+
significantly less will suffice.</p>
|
279
285
|
|
280
286
|
<p>A note on growing and shrinking the hashtable: all hashtable
|
281
287
|
implementations use the most memory when growing a hashtable, since
|
File without changes
|
File without changes
|
@@ -172,7 +172,7 @@ compatible with the tr1 class <code>unordered_map</code>.
|
|
172
172
|
<TD VAlign=top>
|
173
173
|
The <A href="http://www.sgi.com/tech/stl/HashFunction.html">hash function</A> used by the
|
174
174
|
hash_map. This is also defined as <tt>sparse_hash_map::hasher</tt>.
|
175
|
-
<br><b>Note:</b> Hashtable performance depends
|
175
|
+
<br><b>Note:</b> Hashtable performance depends heavily on the choice of
|
176
176
|
hash function. See <A HREF="performance.html#hashfn">the performance
|
177
177
|
page</A> for more information.
|
178
178
|
</TD>
|
@@ -201,8 +201,19 @@ compatible with the tr1 class <code>unordered_map</code>.
|
|
201
201
|
<tt>Alloc</tt>
|
202
202
|
</TD>
|
203
203
|
<TD VAlign=top>
|
204
|
-
|
205
|
-
|
204
|
+
The STL allocator to use. By default, uses the provided allocator
|
205
|
+
<code>libc_allocator_with_realloc</code>, which likely gives better
|
206
|
+
performance than other STL allocators due to its built-in support
|
207
|
+
for <code>realloc</code>, which this container takes advantage of.
|
208
|
+
If you use an allocator other than the default, note that this
|
209
|
+
container imposes an additional requirement on the STL allocator
|
210
|
+
type beyond those in [lib.allocator.requirements]: it does not
|
211
|
+
support allocators that define alternate memory models. That is,
|
212
|
+
it assumes that <code>pointer</code>, <code>const_pointer</code>,
|
213
|
+
<code>size_type</code>, and <code>difference_type</code> are just
|
214
|
+
<code>T*</code>, <code>const T*</code>, <code>size_t</code>, and
|
215
|
+
<code>ptrdiff_t</code>, respectively. This is also defined as
|
216
|
+
<tt>sparse_hash_map::allocator_type</tt>.
|
206
217
|
</TD>
|
207
218
|
<TD VAlign=top>
|
208
219
|
</TD>
|
@@ -665,7 +676,7 @@ None.
|
|
665
676
|
|
666
677
|
<TR>
|
667
678
|
<TD VAlign=top>
|
668
|
-
<tt>
|
679
|
+
<tt>void max_load_factor(float new_grow)</tt>
|
669
680
|
</TD>
|
670
681
|
<TD VAlign=top>
|
671
682
|
<tt>Unordered Associative Container</tt> (tr1)
|
@@ -691,7 +702,7 @@ None.
|
|
691
702
|
|
692
703
|
<TR>
|
693
704
|
<TD VAlign=top>
|
694
|
-
<tt>
|
705
|
+
<tt>void min_load_factor(float new_grow)</tt>
|
695
706
|
</TD>
|
696
707
|
<TD VAlign=top>
|
697
708
|
<tt>sparse_hash_map</tt>
|
@@ -785,6 +796,20 @@ None.
|
|
785
796
|
</TD>
|
786
797
|
</TR>
|
787
798
|
|
799
|
+
<TR>
|
800
|
+
<TD VAlign=top>
|
801
|
+
<tt>allocator_type get_allocator() const</tt>
|
802
|
+
</TD>
|
803
|
+
<TD VAlign=top>
|
804
|
+
<tt>Unordered Associative Container</tt> (tr1)
|
805
|
+
</TD>
|
806
|
+
<TD VAlign=top>
|
807
|
+
Returns the <tt>allocator_type</tt> object used by the
|
808
|
+
<tt>sparse_hash_map</tt>: either the one passed in to the
|
809
|
+
constructor, or a default <tt>Alloc</tt> instance.
|
810
|
+
</TD>
|
811
|
+
</TR>
|
812
|
+
|
788
813
|
<TR>
|
789
814
|
<TD VAlign=top>
|
790
815
|
<tt>sparse_hash_map()</tt>
|
@@ -845,6 +870,22 @@ None.
|
|
845
870
|
</TD>
|
846
871
|
</TR>
|
847
872
|
|
873
|
+
<TR>
|
874
|
+
<TD VAlign=top>
|
875
|
+
<tt>sparse_hash_map(size_type n, const hasher& h, const
|
876
|
+
key_equal& k, const allocator_type& a)</tt>
|
877
|
+
</TD>
|
878
|
+
<TD VAlign=top>
|
879
|
+
<tt>Unordered Associative Container</tt> (tr1)
|
880
|
+
</TD>
|
881
|
+
<TD VAlign=top>
|
882
|
+
Creates an empty <tt>sparse_hash_map</tt> that's optimized for up
|
883
|
+
to <tt>n</tt> items, using <tt>h</tt> as the hash function,
|
884
|
+
<tt>k</tt> as the key equal function, and <tt>a</tt> as the
|
885
|
+
allocator object.
|
886
|
+
</TD>
|
887
|
+
</TR>
|
888
|
+
|
848
889
|
<TR>
|
849
890
|
<TD VAlign=top>
|
850
891
|
<pre>template <class <A
|
@@ -917,6 +958,25 @@ hasher& h, const key_equal& k) </pre> <A href="#2">[2]</A>
|
|
917
958
|
</TD>
|
918
959
|
</TR>
|
919
960
|
|
961
|
+
<TR>
|
962
|
+
<TD VAlign=top>
|
963
|
+
<pre>template <class <A
|
964
|
+
href="http://www.sgi.com/tech/stl/InputIterator.html">InputIterator</A>>
|
965
|
+
sparse_hash_map(InputIterator f, InputIterator l, size_type n, const
|
966
|
+
hasher& h, const key_equal& k, const allocator_type& a) </pre>
|
967
|
+
<A href="#2">[2]</A>
|
968
|
+
</TD>
|
969
|
+
<TD VAlign=top>
|
970
|
+
<tt>Unordered Associative Container</tt> (tr1)
|
971
|
+
</TD>
|
972
|
+
<TD VAlign=top>
|
973
|
+
Creates a hash_map with a copy of a range that's optimized for
|
974
|
+
holding up to <tt>n</tt> items, using <tt>h</tt> as the hash
|
975
|
+
function, <tt>k</tt> as the key equal function, and <tt>a</tt> as
|
976
|
+
the allocator object.
|
977
|
+
</TD>
|
978
|
+
</TR>
|
979
|
+
|
920
980
|
<TR>
|
921
981
|
<TD VAlign=top>
|
922
982
|
<tt>sparse_hash_map(const hash_map&)</tt>
|
@@ -162,7 +162,7 @@ compatible with the tr1 class <code>unordered_set</code>.
|
|
162
162
|
<TD VAlign=top>
|
163
163
|
The <A href="http://www.sgi.com/tech/stl/HashFunction.html">hash function</A> used by the
|
164
164
|
hash_set. This is also defined as <tt>sparse_hash_set::hasher</tt>.
|
165
|
-
<br><b>Note:</b> Hashtable performance depends
|
165
|
+
<br><b>Note:</b> Hashtable performance depends heavily on the choice of
|
166
166
|
hash function. See <A HREF="performance.html#hashfn">the performance
|
167
167
|
page</A> for more information.
|
168
168
|
</TD>
|
@@ -191,8 +191,19 @@ compatible with the tr1 class <code>unordered_set</code>.
|
|
191
191
|
<tt>Alloc</tt>
|
192
192
|
</TD>
|
193
193
|
<TD VAlign=top>
|
194
|
-
|
195
|
-
|
194
|
+
The STL allocator to use. By default, uses the provided allocator
|
195
|
+
<code>libc_allocator_with_realloc</code>, which likely gives better
|
196
|
+
performance than other STL allocators due to its built-in support
|
197
|
+
for <code>realloc</code>, which this container takes advantage of.
|
198
|
+
If you use an allocator other than the default, note that this
|
199
|
+
container imposes an additional requirement on the STL allocator
|
200
|
+
type beyond those in [lib.allocator.requirements]: it does not
|
201
|
+
support allocators that define alternate memory models. That is,
|
202
|
+
it assumes that <code>pointer</code>, <code>const_pointer</code>,
|
203
|
+
<code>size_type</code>, and <code>difference_type</code> are just
|
204
|
+
<code>T*</code>, <code>const T*</code>, <code>size_t</code>, and
|
205
|
+
<code>ptrdiff_t</code>, respectively. This is also defined as
|
206
|
+
<tt>sparse_hash_set::allocator_type</tt>.
|
196
207
|
</TD>
|
197
208
|
<TD VAlign=top>
|
198
209
|
</TD>
|
@@ -613,7 +624,7 @@ None.
|
|
613
624
|
|
614
625
|
<TR>
|
615
626
|
<TD VAlign=top>
|
616
|
-
<tt>
|
627
|
+
<tt>void max_load_factor(float new_grow)</tt>
|
617
628
|
</TD>
|
618
629
|
<TD VAlign=top>
|
619
630
|
<tt>Unordered Associative Container</tt> (tr1)
|
@@ -639,7 +650,7 @@ None.
|
|
639
650
|
|
640
651
|
<TR>
|
641
652
|
<TD VAlign=top>
|
642
|
-
<tt>
|
653
|
+
<tt>void min_load_factor(float new_grow)</tt>
|
643
654
|
</TD>
|
644
655
|
<TD VAlign=top>
|
645
656
|
<tt>sparse_hash_set</tt>
|
@@ -733,6 +744,20 @@ None.
|
|
733
744
|
</TD>
|
734
745
|
</TR>
|
735
746
|
|
747
|
+
<TR>
|
748
|
+
<TD VAlign=top>
|
749
|
+
<tt>allocator_type get_allocator() const</tt>
|
750
|
+
</TD>
|
751
|
+
<TD VAlign=top>
|
752
|
+
<tt>Unordered Associative Container</tt> (tr1)
|
753
|
+
</TD>
|
754
|
+
<TD VAlign=top>
|
755
|
+
Returns the <tt>allocator_type</tt> object used by the
|
756
|
+
<tt>sparse_hash_set</tt>: either the one passed in to the
|
757
|
+
constructor, or a default <tt>Alloc</tt> instance.
|
758
|
+
</TD>
|
759
|
+
</TR>
|
760
|
+
|
736
761
|
<TR>
|
737
762
|
<TD VAlign=top>
|
738
763
|
<tt>sparse_hash_set()</tt>
|
@@ -793,6 +818,22 @@ None.
|
|
793
818
|
</TD>
|
794
819
|
</TR>
|
795
820
|
|
821
|
+
<TR>
|
822
|
+
<TD VAlign=top>
|
823
|
+
<tt>sparse_hash_set(size_type n, const hasher& h, const
|
824
|
+
key_equal& k, const allocator_type& a)</tt>
|
825
|
+
</TD>
|
826
|
+
<TD VAlign=top>
|
827
|
+
<tt>Unordered Associative Container</tt> (tr1)
|
828
|
+
</TD>
|
829
|
+
<TD VAlign=top>
|
830
|
+
Creates an empty <tt>sparse_hash_set</tt> that's optimized for up
|
831
|
+
to <tt>n</tt> items, using <tt>h</tt> as the hash function,
|
832
|
+
<tt>k</tt> as the key equal function, and <tt>a</tt> as the
|
833
|
+
allocator object.
|
834
|
+
</TD>
|
835
|
+
</TR>
|
836
|
+
|
796
837
|
<TR>
|
797
838
|
<TD VAlign=top>
|
798
839
|
<pre>template <class <A
|
@@ -865,6 +906,25 @@ hasher& h, const key_equal& k) </pre> <A href="#1">[2]</A>
|
|
865
906
|
</TD>
|
866
907
|
</TR>
|
867
908
|
|
909
|
+
<TR>
|
910
|
+
<TD VAlign=top>
|
911
|
+
<pre>template <class <A
|
912
|
+
href="http://www.sgi.com/tech/stl/InputIterator.html">InputIterator</A>>
|
913
|
+
sparse_hash_set(InputIterator f, InputIterator l, size_type n, const
|
914
|
+
hasher& h, const key_equal& k, const allocator_type& a) </pre>
|
915
|
+
<A href="#2">[2]</A>
|
916
|
+
</TD>
|
917
|
+
<TD VAlign=top>
|
918
|
+
<tt>Unordered Associative Container</tt> (tr1)
|
919
|
+
</TD>
|
920
|
+
<TD VAlign=top>
|
921
|
+
Creates a hash_set with a copy of a range that's optimized for
|
922
|
+
holding up to <tt>n</tt> items, using <tt>h</tt> as the hash
|
923
|
+
function, <tt>k</tt> as the key equal function, and <tt>a</tt> as
|
924
|
+
the allocator object.
|
925
|
+
</TD>
|
926
|
+
</TR>
|
927
|
+
|
868
928
|
<TR>
|
869
929
|
<TD VAlign=top>
|
870
930
|
<tt>sparse_hash_set(const hash_set&)</tt>
|