summaryrefslogtreecommitdiff
path: root/libstdc++-v3/doc/html/ext/pb_ds
diff options
context:
space:
mode:
Diffstat (limited to 'libstdc++-v3/doc/html/ext/pb_ds')
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/PythonPoweredSmall.gifbin0 -> 361 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/acks.html65
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/assoc_container_tag_cd.pngbin0 -> 21668 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/assoc_container_tag_cd.svg491
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/assoc_container_traits.html170
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/assoc_design.html46
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/assoc_examples.html151
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/assoc_performance_tests.html345
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/assoc_regression_tests.html93
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/assoc_tests.html24
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/associative_container_tag.html47
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/balls_and_bins.pngbin0 -> 10139 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/basic_hash_table.html436
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/basic_hash_tag.html47
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/basic_invalidation_guarantee.html26
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/basic_tree.html660
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/basic_tree_assoc_container_const_node_iterator.html383
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/basic_tree_tag.html47
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/binary_heap_tag.html47
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/binary_priority_queue_random_int_push_timing_test_gcc.pngbin0 -> 5357 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/binary_priority_queue_random_int_push_timing_test_local.pngbin0 -> 6710 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/binary_priority_queue_random_int_push_timing_test_msvc.pngbin0 -> 5373 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/binomial_heap_tag.html47
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/cc_hash_max_collision_check_resize_trigger.html532
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_find_timing_test_gcc.pngbin0 -> 7074 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_find_timing_test_local.pngbin0 -> 8534 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_find_timing_test_msvc.pngbin0 -> 7235 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_find_gcc.pngbin0 -> 6811 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_find_local.pngbin0 -> 8445 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_find_msvc.pngbin0 -> 7230 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_insert_gcc.pngbin0 -> 7636 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_insert_local.pngbin0 -> 9396 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_insert_msvc.pngbin0 -> 6840 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/cc_hash_table.html724
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/cc_hash_tag.html47
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/ccgp_hash_random_int_subscript_timing_test_insert_gcc.pngbin0 -> 7355 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/ccgp_hash_random_int_subscript_timing_test_insert_local.pngbin0 -> 9557 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/ccgp_hash_random_int_subscript_timing_test_insert_msvc.pngbin0 -> 7572 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/checked_by_tidy.gifbin0 -> 1367 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/concepts.html118
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/contact.html22
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/container_base.html1063
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/container_cd.pngbin0 -> 11884 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/container_cd.svg418
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/container_tag.html24
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/counter_lu_policy.html259
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/design.html96
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/different_underlying_dss.pngbin0 -> 31858 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/direct_mask_range_hashing.html167
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/direct_mod_range_hashing.html144
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/disclaimer.html34
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/ds_gen.html344
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/embedded_lists_1.pngbin0 -> 16350 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/embedded_lists_2.pngbin0 -> 18206 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/embedded_lists_3.pngbin0 -> 5612 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/examples.html24
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/exceptions.html46
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_find_timing_test_gcc.pngbin0 -> 6194 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_find_timing_test_local.pngbin0 -> 7916 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_find_timing_test_msvc.pngbin0 -> 6140 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_find_gcc.pngbin0 -> 6110 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_find_local.pngbin0 -> 7570 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_find_msvc.pngbin0 -> 6314 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_insert_gcc.pngbin0 -> 6763 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_insert_local.pngbin0 -> 8499 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_insert_msvc.pngbin0 -> 6721 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/gp_hash_table.html891
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/gp_hash_tag.html47
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/hash_based_containers.html835
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/hash_exponential_size_policy.html183
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/hash_load_check_resize_trigger.html583
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/hash_policy_cd.pngbin0 -> 25302 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/hash_prime_size_policy.html149
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test.html173
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test_gcc.pngbin0 -> 6356 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test_local.pngbin0 -> 7405 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test_msvc.pngbin0 -> 6401 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_find_find_timing_test.html247
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_subscript_find_timing_test.html220
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_subscript_insert_timing_test.html365
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/hash_range_hashing_seq_diagram.pngbin0 -> 12962 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/hash_range_hashing_seq_diagram2.pngbin0 -> 8918 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/hash_ranged_hash_range_hashing_fns.pngbin0 -> 19773 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/hash_standard_resize_policy.html795
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/hash_text_find_find_timing_test.html164
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/hash_zlob_random_int_find_find_timing_test.html163
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/hash_zlob_random_int_find_timing_test_gcc.pngbin0 -> 6910 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/hash_zlob_random_int_find_timing_test_local.pngbin0 -> 8436 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/hash_zlob_random_int_find_timing_test_msvc.pngbin0 -> 7204 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/index.html146
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/insert_error.html53
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/insert_resize_sequence_diagram1.pngbin0 -> 25834 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/insert_resize_sequence_diagram2.pngbin0 -> 25522 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/insert_resize_sequence_diagram3.pngbin0 -> 24542 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/interface.html446
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/introduction.html120
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/invalidation_guarantee_cd.pngbin0 -> 8331 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/invalidation_guarantee_erase.pngbin0 -> 25884 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/join_error.html48
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/linear_probe_fn.html140
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/list_update.html316
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/list_update_tag.html47
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/lu.pngbin0 -> 20987 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/lu_based_containers.html229
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/misc.html26
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/motivation.html993
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/move_to_front_lu_policy.html194
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large.html215
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_hash_gcc.pngbin0 -> 6323 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_hash_local.pngbin0 -> 7299 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_hash_msvc.pngbin0 -> 6490 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_tree_gcc.pngbin0 -> 6284 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_tree_local.pngbin0 -> 6706 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_tree_msvc.pngbin0 -> 6204 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small.html215
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_hash_gcc.pngbin0 -> 6237 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_hash_local.pngbin0 -> 6732 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_hash_msvc.pngbin0 -> 6268 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_tree_gcc.pngbin0 -> 6064 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_tree_local.pngbin0 -> 6396 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_tree_msvc.pngbin0 -> 6012 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large.html210
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_hash_gcc.pngbin0 -> 6835 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_hash_local.pngbin0 -> 7275 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_hash_msvc.pngbin0 -> 6588 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_tree_gcc.pngbin0 -> 6778 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_tree_local.pngbin0 -> 7191 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_tree_msvc.pngbin0 -> 6535 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small.html212
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_hash_gcc.pngbin0 -> 6449 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_hash_local.pngbin0 -> 6845 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_hash_msvc.pngbin0 -> 6570 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_tree_gcc.pngbin0 -> 6419 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_tree_local.pngbin0 -> 6925 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_tree_msvc.pngbin0 -> 6569 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large.html212
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_hash_gcc.pngbin0 -> 6380 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_hash_local.pngbin0 -> 7000 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_hash_msvc.pngbin0 -> 6460 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_tree_gcc.pngbin0 -> 6204 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_tree_local.pngbin0 -> 6764 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_tree_msvc.pngbin0 -> 6357 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small.html217
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_hash_gcc.pngbin0 -> 6456 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_hash_local.pngbin0 -> 7035 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_hash_msvc.pngbin0 -> 6547 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_tree_gcc.pngbin0 -> 6111 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_tree_local.pngbin0 -> 6853 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_tree_msvc.pngbin0 -> 6430 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/node_invariant_invalidations.pngbin0 -> 32276 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/node_invariants.pngbin0 -> 16553 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/null_hash_fn.html32
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/null_lu_metadata.html25
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/null_mapped_type.html25
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/null_probe_fn.html29
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/null_tree_node_update.html101
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/null_trie_node_update.html102
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/ov_tree_tag.html47
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/pairing_heap_tag.html47
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_pop_timing_test_gcc.pngbin0 -> 5395 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_pop_timing_test_local.pngbin0 -> 6892 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_pop_timing_test_msvc.pngbin0 -> 5514 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_timing_test_gcc.pngbin0 -> 5678 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_timing_test_local.pngbin0 -> 6760 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_timing_test_msvc.pngbin0 -> 5878 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/pat_trie.pngbin0 -> 26182 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/pat_trie_tag.html47
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/point_invalidation_guarantee.html51
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/point_iterators_cd.pngbin0 -> 20307 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/point_iterators_range_ops_1.pngbin0 -> 14206 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/point_iterators_range_ops_2.pngbin0 -> 12876 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/pq_container_traits.html132
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/pq_design.html381
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/pq_different_underlying_dss.pngbin0 -> 15660 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/pq_examples.html54
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/pq_performance_tests.html332
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/pq_regression_tests.html52
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/pq_tests.html24
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/prerequisites.html46
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue.html995
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test.html161
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test_gcc.pngbin0 -> 7350 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test_local.pngbin0 -> 9275 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test_msvc.pngbin0 -> 7065 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test.html200
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test_gcc.pngbin0 -> 7021 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test_local.pngbin0 -> 8986 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test_msvc.pngbin0 -> 7100 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_tag.html47
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_tag_cd.pngbin0 -> 10845 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_tag_cd.svg368
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test.html141
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test_gcc.pngbin0 -> 6458 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test_local.pngbin0 -> 7989 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test_msvc.pngbin0 -> 6461 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test.html204
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_gcc.pngbin0 -> 6788 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_local.pngbin0 -> 7633 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_msvc.pngbin0 -> 6956 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_pairing_thin_gcc.pngbin0 -> 5007 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_pairing_thin_local.pngbin0 -> 5878 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_pairing_thin_msvc.pngbin0 -> 4996 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test.html222
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_gcc.pngbin0 -> 6950 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_local.pngbin0 -> 7748 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_msvc.pngbin0 -> 6983 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_pairing_thin_gcc.pngbin0 -> 4867 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_pairing_thin_local.pngbin0 -> 6105 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_pairing_thin_msvc.pngbin0 -> 5216 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test.html143
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test_gcc.pngbin0 -> 6582 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test_local.pngbin0 -> 7424 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test_msvc.pngbin0 -> 6849 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test.html209
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test_gcc.pngbin0 -> 7072 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test_local.pngbin0 -> 9006 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test_msvc.pngbin0 -> 7289 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test.html219
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test_gcc.pngbin0 -> 6832 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test_local.pngbin0 -> 8477 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test_msvc.pngbin0 -> 7266 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/quadratic_probe_fn.html141
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/random_int_find_find_timing_test_tree_gcc.pngbin0 -> 5960 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/random_int_find_find_timing_test_tree_local.pngbin0 -> 7377 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/random_int_find_find_timing_test_tree_msvc.pngbin0 -> 5636 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/range_invalidation_guarantee.html52
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/rationale_null_node_updator.pngbin0 -> 25097 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/rb_tree_tag.html47
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/rc_binomial_heap_tag.html47
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/references.html258
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/resize_error.html50
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/resize_policy_cd.pngbin0 -> 20806 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/restoring_node_invariants.pngbin0 -> 14432 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/sample_probe_fn.html152
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/sample_range_hashing.html172
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/sample_ranged_hash_fn.html171
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/sample_ranged_probe_fn.html178
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/sample_resize_policy.html413
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/sample_resize_trigger.html462
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/sample_size_policy.html163
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/sample_tree_node_update.html193
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/sample_trie_e_access_traits.html231
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/sample_trie_node_update.html194
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/sample_update_policy.html178
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/simple_list.pngbin0 -> 4299 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/splay_tree_tag.html47
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/string_trie_e_access_traits.html400
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/tests.html24
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_hash_gcc.pngbin0 -> 7013 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_hash_local.pngbin0 -> 9361 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_hash_msvc.pngbin0 -> 6932 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_tree_like_gcc.pngbin0 -> 6207 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_tree_like_local.pngbin0 -> 7650 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_tree_like_msvc.pngbin0 -> 6059 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/thin_heap_tag.html47
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/tree.html516
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/tree_based_containers.html358
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/tree_node_iterator.html143
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/tree_node_updator_policy_cd.pngbin0 -> 9236 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_node_update.html678
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test.html118
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test_gcc.pngbin0 -> 5698 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test_local.pngbin0 -> 6739 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test_msvc.pngbin0 -> 5684 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/tree_random_int_find_find_timing_test.html160
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test.html143
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test_gcc.pngbin0 -> 5649 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test_local.pngbin0 -> 6734 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test_msvc.pngbin0 -> 5675 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/tree_tag.html47
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/tree_text_find_find_timing_test.html162
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test.html226
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_node_tree_gcc.pngbin0 -> 5373 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_node_tree_local.pngbin0 -> 6690 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_node_tree_msvc.pngbin0 -> 5212 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_pat_trie_gcc.pngbin0 -> 4895 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_pat_trie_local.pngbin0 -> 6011 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_pat_trie_msvc.pngbin0 -> 4881 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_vector_tree_gcc.pngbin0 -> 5140 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_vector_tree_local.pngbin0 -> 6270 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_vector_tree_msvc.pngbin0 -> 5131 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_find_timing_test.html126
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_timing_test_gcc.pngbin0 -> 6162 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_timing_test_local.pngbin0 -> 7796 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_timing_test_msvc.pngbin0 -> 5831 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/trie.html489
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/trie_based_containers.html241
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/trie_const_node_iterator.html478
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/trie_node_iterator.html235
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/trie_node_updator_policy_cd.pngbin0 -> 12126 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/trie_order_statistics_node_update.html770
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/trie_prefix_search_node_update.html628
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/trie_tag.html47
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/trivial_iterator_tag.html25
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/tutorial.html670
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/update_policy_cd.pngbin0 -> 8570 bytes
-rw-r--r--libstdc++-v3/doc/html/ext/pb_ds/update_seq_diagram.pngbin0 -> 10789 bytes
297 files changed, 30357 insertions, 0 deletions
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/PythonPoweredSmall.gif b/libstdc++-v3/doc/html/ext/pb_ds/PythonPoweredSmall.gif
new file mode 100644
index 000000000..268980706
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/PythonPoweredSmall.gif
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/acks.html b/libstdc++-v3/doc/html/ext/pb_ds/acks.html
new file mode 100644
index 000000000..6612a4a81
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/acks.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>Acknowledgments</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1>Acknowledgments</h1>
+
+ <ol>
+ <li>This library was partially written at <a href=
+ "http://www.haifa.il.ibm.com/">IBM's Haifa Research
+ Labs</a>.</li>
+
+ <li>The library is based heavily on policy-based design and
+ uses many useful techniques from [<a href=
+ "references.html#alexandrescu01modern">alexandrescu01modern</a>].</li>
+
+ <li>Two ideas are borrowed from the SGI-STL implementation
+ [<a href="references.html#sgi_stl">sgi_stl</a>]:
+
+ <ol>
+ <li>The prime-based resize policies use a list of primes
+ taken from the SGI-STL implementation.</li>
+
+ <li>The red-black trees contain both a root node and a
+ header node (containing metadata), connected in a way
+ that forward and reverse iteration can be performed
+ efficiently.</li>
+ </ol>
+ </li>
+
+ <li>Some test utilities borrow ideas from [<a href=
+ "references.html#boost_timer">boost_timer</a>].</li>
+
+ <li>We would like to thank Scott Meyers for useful comments
+ (without attributing to him any flaws in the design or
+ implementation of the library).</li>
+
+ <li>Much of the documentation is <a href=
+ "http://www.python.org/"><img src="PythonPoweredSmall.gif"
+ align="middle" width="55" height="22" alt="[Python Powered]"
+ border="0" /></a> (especially through <a href=
+ "http://home.gna.org/pychart/">PyChart</a>, <a href=
+ "http://www.crummy.com/software/BeautifulSoup/">Beautiful
+ Soup</a>, and <a href=
+ "http://starship.python.net/crew/aaron_watters/kjbuckets/">kjbuckets</a>)
+ and uses <a href="http://tidy.sourceforge.net/"><img src=
+ "checked_by_tidy.gif" align="middle" width="55" height="45"
+ alt="[HTML tidy]" border="0" /></a>. The CSS-driven menus are
+ slightly modified from <a href=
+ "http://www.brothercake.com/scripts/navmeister/page.php">Brothercake</a>
+ (hopefully without introducing errors).</li>
+ </ol>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/assoc_container_tag_cd.png b/libstdc++-v3/doc/html/ext/pb_ds/assoc_container_tag_cd.png
new file mode 100644
index 000000000..16cc6da87
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/assoc_container_tag_cd.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/assoc_container_tag_cd.svg b/libstdc++-v3/doc/html/ext/pb_ds/assoc_container_tag_cd.svg
new file mode 100644
index 000000000..02be62416
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/assoc_container_tag_cd.svg
@@ -0,0 +1,491 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="11in"
+ height="8.5in"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.43"
+ version="1.0"
+ sodipodi:docbase="/mnt/share/src/policy_based_data_structures/pb_ds_images"
+ sodipodi:docname="assoc_tag_diagram_2.svg"
+ inkscape:export-filename="/mnt/share/src/policy_based_data_structures/pb_ds_images/assoc_tag_diagram_2.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow1Mstart"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow1Mstart"
+ style="overflow:visible">
+ <path
+ id="path3311"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
+ transform="scale(0.4)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Sstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Sstart"
+ style="overflow:visible">
+ <path
+ id="path3319"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="matrix(0.3,0,0,0.3,-1.5,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Sstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Sstart"
+ style="overflow:visible">
+ <path
+ id="path3337"
+ d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="scale(0.2,0.2)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Send"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Send"
+ style="overflow:visible">
+ <path
+ id="path3316"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="matrix(-0.3,0,0,-0.3,1.5,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Mend"
+ style="overflow:visible">
+ <path
+ id="path3322"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="matrix(-0.6,0,0,-0.6,3,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path3346"
+ d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="scale(-0.8,-0.8)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lstart"
+ style="overflow:visible">
+ <path
+ id="path3331"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="matrix(1.1,0,0,1.1,-5.5,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path3328"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="matrix(-1.1,0,0,-1.1,5.5,0)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2"
+ inkscape:cx="613.85775"
+ inkscape:cy="310.05621"
+ inkscape:document-units="in"
+ inkscape:current-layer="layer1"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="1278"
+ inkscape:window-height="973"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ gridtolerance="0.125in"
+ guidetolerance="0.125in">
+ <sodipodi:guide
+ orientation="horizontal"
+ position="629"
+ id="guide1307" />
+ <sodipodi:guide
+ orientation="horizontal"
+ position="449"
+ id="guide1309" />
+ <sodipodi:guide
+ orientation="horizontal"
+ position="269"
+ id="guide1311" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="496"
+ id="guide1313" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="361"
+ id="guide1315" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="226"
+ id="guide1317" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="631"
+ id="guide1319" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="766"
+ id="guide1321" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="91"
+ id="guide1345" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="901"
+ id="guide1347" />
+ <sodipodi:guide
+ orientation="horizontal"
+ position="539"
+ id="guide3390" />
+ <sodipodi:guide
+ orientation="horizontal"
+ position="359"
+ id="guide3392" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="280.5"
+ id="guide3324" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="172"
+ id="guide3326" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="427"
+ id="guide3328" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="711.5"
+ id="guide3340" />
+ <sodipodi:guide
+ orientation="horizontal"
+ position="179"
+ id="guide1395" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Benjamin Kosnik</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ y="562.32806"
+ x="237.8916"
+ height="23.200001"
+ width="80.769417"
+ id="rect1495"
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.94391561;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.94391561;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect1497"
+ width="80.769417"
+ height="23.200001"
+ x="132.8916"
+ y="562.32806" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.94391561;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect1493"
+ width="80.769417"
+ height="23.200001"
+ x="21.891602"
+ y="562.32806" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect1425"
+ width="141.64481"
+ height="23.200001"
+ x="209.57762"
+ y="382.56177" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3378"
+ width="141.64481"
+ height="23.200001"
+ x="640.77765"
+ y="382.56177" />
+ <text
+ xml:space="preserve"
+ style="font-size:9.60000038;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;stroke-miterlimit:4;stroke-dasharray:none"
+ x="710.40002"
+ y="397.09772"
+ id="use1337"
+ sodipodi:linespacing="100%"><tspan
+ sodipodi:role="line"
+ id="tspan1391"
+ x="710.40003"
+ y="397.09772">basic_hash_table_tag</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:9.60000038;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="280"
+ y="397.09772"
+ id="text1339"
+ sodipodi:linespacing="100%"><tspan
+ sodipodi:role="line"
+ id="tspan1385"
+ x="280"
+ y="397.09772">basic_tree_tag</tspan></text>
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3418"
+ width="141.64481"
+ height="23.200001"
+ x="101.57762"
+ y="472.5618" />
+ <rect
+ y="472.5618"
+ x="317.57761"
+ height="23.200001"
+ width="141.64481"
+ id="rect3420"
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ xml:space="preserve"
+ style="font-size:9.60000038;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="171.20001"
+ y="486.29773"
+ id="text3394"
+ sodipodi:linespacing="100%"><tspan
+ sodipodi:role="line"
+ id="tspan1387"
+ x="171.20001"
+ y="486.29773">tree_tag</tspan></text>
+ <text
+ sodipodi:linespacing="100%"
+ id="text3400"
+ y="486.29773"
+ x="388.39999"
+ style="font-size:9.60000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ sodipodi:role="line"
+ id="tspan1389"
+ x="388.39999"
+ y="486.29773">trie_tag</tspan></text>
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3380"
+ width="141.64481"
+ height="23.200001"
+ x="425.57764"
+ y="292.56177" />
+ <text
+ xml:space="preserve"
+ style="font-size:9.60000038;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="495.20001"
+ y="307.09772"
+ id="text1323"
+ sodipodi:linespacing="100%"><tspan
+ sodipodi:role="line"
+ id="tspan1384"
+ x="495.20001"
+ y="307.09772">associative_container_tag</tspan></text>
+ <path
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+ d="M 170.97058,472.5 L 170.97058,451 L 387.51871,450 L 387.51871,472.5"
+ id="path2244" />
+ <path
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 280.5,450.53297 L 280.5,410.62445"
+ id="path3332" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3422"
+ width="141.64481"
+ height="23.200001"
+ x="533.57764"
+ y="472.5618" />
+ <rect
+ y="472.5618"
+ x="748.77765"
+ height="23.200001"
+ width="141.64481"
+ id="rect3424"
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="100%"
+ id="text3406"
+ y="486.29773"
+ x="601.20001"
+ style="font-size:9.60000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ sodipodi:role="line"
+ id="tspan1393"
+ x="601.20001"
+ y="486.29773">cc_hash_table_tag</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:9.60000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="818"
+ y="486.29773"
+ id="text3412"
+ sodipodi:linespacing="100%"><tspan
+ sodipodi:role="line"
+ id="tspan1395"
+ x="818"
+ y="486.29773">gp_hash_table_tag</tspan></text>
+ <path
+ id="path3353"
+ d="M 601.47058,472.5 L 601.47058,451 L 818.01871,450 L 818.01871,472.5"
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
+ <path
+ id="path3355"
+ d="M 711,450.53297 L 711,410.62445"
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path3344"
+ d="M 281.18218,383.28102 L 281.18218,361.78102 L 711.79281,360.78102 L 711.79281,383.28102"
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
+ <rect
+ y="383.1962"
+ x="425.625"
+ height="23.200001"
+ width="141.64481"
+ id="rect3376"
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="100%"
+ id="use1329"
+ y="397.73215"
+ x="497.24741"
+ style="font-size:9.60000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ sodipodi:role="line"
+ id="tspan1382"
+ x="497.24741"
+ y="397.73215">list_update_tag</tspan></text>
+ <path
+ id="path3347"
+ d="M 497.79886,384.13056 L 497.79886,323.40547"
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ xml:space="preserve"
+ style="font-size:9.60000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="61.152512"
+ y="577.07874"
+ id="text1423"
+ sodipodi:linespacing="100%"><tspan
+ sodipodi:role="line"
+ id="tspan1418"
+ x="61.152512"
+ y="577.07874">rb_tree_tag</tspan></text>
+ <text
+ sodipodi:linespacing="100%"
+ id="text1427"
+ y="577.07874"
+ x="277.95251"
+ style="font-size:9.60000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ sodipodi:role="line"
+ id="tspan1414"
+ x="277.95252"
+ y="577.07874">splay_tree_tag</tspan></text>
+ <path
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+ d="M 61.42308,563.28102 L 61.42308,541.78102 L 277.97121,540.78102 L 277.97121,563.28102"
+ id="path1431" />
+ <path
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 170.9525,561.5357 L 170.9525,503.81235"
+ id="path1433" />
+ <rect
+ y="562.17499"
+ x="347.8916"
+ height="23.200001"
+ width="80.769417"
+ id="rect1469"
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.94391561;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ sodipodi:linespacing="100%"
+ id="text1471"
+ y="576.71094"
+ x="388.80002"
+ style="font-size:9.60000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ sodipodi:role="line"
+ id="tspan1412"
+ x="388.80002"
+ y="576.71094">pat_trie_tag</tspan></text>
+ <path
+ id="path1475"
+ d="M 389.35146,563.10936 L 389.35146,502.38427"
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ xml:space="preserve"
+ style="font-size:9.60000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="173.95251"
+ y="577.07874"
+ id="text1487"
+ sodipodi:linespacing="100%"><tspan
+ sodipodi:role="line"
+ id="tspan1416"
+ x="173.95251"
+ y="577.07874">ov_tree_tag</tspan></text>
+ </g>
+</svg>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/assoc_container_traits.html b/libstdc++-v3/doc/html/ext/pb_ds/assoc_container_traits.html
new file mode 100644
index 000000000..7814712c3
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/assoc_container_traits.html
@@ -0,0 +1,170 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>container_traits Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>container_traits</tt> Interface</h1>
+
+ <p>Traits of an associative-container based on its underlying
+ data structure.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Template Parameters</a></h2>
+
+ <table class="c1" width="100%" border="1" summary=
+ "Template Parameters">
+ <tr>
+ <td width="20%" align="left"><b>Parameter</b></td>
+
+ <td width="50%" align="left"><b>Description</b></td>
+
+ <td width="30%" align="left"><b>Default Value</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Cntnr59189" id="Cntnr59189"><b>class</b> Cntnr</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Container type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+ </table>
+
+ <h2><a name="link2" id="link2">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link3" id="link3">Container Attributes</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="invalidation_guarantee3793555937" id=
+"invalidation_guarantee3793555937">invalidation_guarantee</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+Invalidation guarantee.
+</pre>
+ </td>
+
+ <td>
+ <p>Invalidation-guarantee type.</p>
+
+ <p>This is either <a href=
+ "basic_invalidation_guarantee.html"><span class=
+ "c2"><tt>basic_invalidation_guarantee</tt></span></a>,
+ <a href="point_invalidation_guarantee.html"><span class=
+ "c2"><tt>point_invalidation_guarantee</tt></span></a>, or
+ <a href="range_invalidation_guarantee.html"><span class=
+ "c2"><tt>range_invalidation_guarantee</tt></span></a></p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="order_preserving1910229172" id=
+"order_preserving1910229172">order_preserving</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+True only if Cntnr objects guarantee storing keys by order.
+</pre>
+ </td>
+
+ <td>
+ <p>Order-preserving indicator.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="erase_can_throw153323856" id=
+"erase_can_throw153323856">erase_can_throw</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+True only if erasing a key can throw.
+</pre>
+ </td>
+
+ <td>
+ <p>Erase-throw indicator.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="reverse_iteration894617078" id=
+"reverse_iteration894617078">reverse_iteration</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+True only reverse iterators are supported.
+</pre>
+ </td>
+
+ <td>
+ <p>Reverse iteration indicator.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="split_join_can_throw3200477759" id=
+"split_join_can_throw3200477759">split_join_can_throw</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+True only if split or join operations can throw.
+</pre>
+ </td>
+
+ <td>
+ <p>Split-join throw indicator.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/assoc_design.html b/libstdc++-v3/doc/html/ext/pb_ds/assoc_design.html
new file mode 100644
index 000000000..6c501e26b
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/assoc_design.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>Associative Containers</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1>Associative-Container Design</h1>
+
+ <ol>
+ <li><a href="ds_gen.html">Data-Structure Genericity</a></li>
+
+ <li class="c1">Genericity discusses generic manipulation of
+ containers based on different underlying
+ data structures.</li>
+
+ <li class="c1">Genericity discusses generic manipulation of
+ containers with different mapping semantics.</li>
+
+ <li><a href="tree_based_containers.html">Tree-Based
+ Containers</a> describes the design and policies of
+ tree-based containers.</li>
+
+ <li><a href="trie_based_containers.html">Trie-Based
+ Containers</a> describes the design and policies of
+ trie-based containers.</li>
+
+ <li><a href="hash_based_containers.html">Hash-Based
+ Containers</a> describes the design and policies of
+ hash-based containers.</li>
+
+ <li><a href="lu_based_containers.html">List-Based
+ Containers</a> describes the design and policies of
+ list-based containers with update policies.</li>
+ </ol>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/assoc_examples.html b/libstdc++-v3/doc/html/ext/pb_ds/assoc_examples.html
new file mode 100644
index 000000000..b64c74745
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/assoc_examples.html
@@ -0,0 +1,151 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>Examples</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1>Associative-Container Examples</h1>
+
+ <h2><a name="basic_usage" id="basic_usage">Basic Use</a></h2>
+
+ <ol>
+ <li>
+ <a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/basic_map.cc"><tt>basic_map.cc</tt></a>
+ Basic use of "maps".</li>
+
+ <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/basic_set.cc"><tt>basic_set.cc</tt></a>
+ Basic use of "sets".</li>
+
+ <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/erase_if.cc"><tt>erase_if.cc</tt></a>
+ Conditionally erasing values from a container object.</li>
+ </ol>
+
+ <h2><a name="generics" id="generics">Generics</a></h2>
+
+ <ol>
+ <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/assoc_container_traits.cc"><tt>assoc_container_traits.cc</tt></a>
+ Using <a href=
+ "assoc_container_traits.html"><tt>container_traits</tt></a> to query
+ about underlying data structure behavior.</li>
+
+ <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/hash_find_neg.cc"><tt>hash_find_neg.cc</tt></a>
+ A non-compiling example showing wrong use of finding keys in
+ hash-based containers.</li>
+ </ol>
+
+ <h2><a name="hash_based" id="hash_based">Hash-Based
+ Containers</a></h2>
+
+
+ <h3><a name="resize_related" id="resize_related">Resize
+ Related</a></h3>
+
+
+ <ol>
+ <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/hash_initial_size.cc"><tt>hash_initial_size.cc</tt></a>
+ Setting the initial size of a hash-based container
+ object.</li>
+
+ <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/hash_resize_neg.cc"><tt>hash_resize_neg.cc</tt></a>
+ A non-compiling example showing how not to resize a
+ hash-based container object.</li>
+
+ <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/hash_resize.cc"><tt>hash_resize.cc</tt></a>
+ Resizing the size of a hash-based container object.</li>
+
+ <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/hash_illegal_resize.cc"><tt>hash_illegal_resize.cc</tt></a>
+ Showing an illegal resize of a hash-based container
+ object.</li>
+
+ <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/hash_load_set_change.cc"><tt>hash_load_set_change.cc</tt></a>
+ Changing the load factors of a hash-based container
+ object.</li>
+ </ol>
+
+ <h3><a name="hash_related" id="hash_related">Hash-Function
+ Related</a></h3>
+
+
+ <ol>
+ <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/hash_mod.cc"><tt>hash_mod.cc</tt></a>
+ Using a modulo range-hashing function for the case of an
+ unknown skewed key distribution.</li>
+
+ <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/hash_shift_mask.cc"><tt>shift_mask.cc</tt></a>
+ Writing a range-hashing functor for the case of a known
+ skewed key distribution.</li>
+
+ <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/store_hash.cc"><tt>store_hash.cc</tt></a>
+ Storing the hash value along with each key.</li>
+
+ <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/ranged_hash.cc"><tt>ranged_hash.cc</tt></a>
+ Writing a ranged-hash functor.</li>
+ </ol>
+
+ <h2><a name="tree_like_based" id= "tree_like_based">Tree-Like Containers (Trees and
+ Tries)</a></h2>
+
+
+ <h3><a name="node_invariants" id=
+ "node_invariants">Node-Invariants</a></h3>
+
+
+ <ol>
+ <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/tree_order_statistics.cc"><tt>tree_order_statistics.cc</tt></a>
+ Using trees for order statistics.</li>
+
+ <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/tree_intervals.cc"><tt>tree_intervals.cc</tt></a>
+ Augmenting trees to support operations on line
+ intervals.</li>
+ </ol>
+
+ <h3><a name="split_join" id="split_join">Split and
+ Join</a></h3>
+
+
+ <ol>
+ <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/tree_join.cc"><tt>tree_join.cc</tt></a>
+ Joining two tree-based container objects.</li>
+
+ <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/trie_split.cc"><tt>trie_split.cc</tt></a>
+ Splitting a PATRICIA trie container object.</li>
+
+ <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/tree_order_statistics_join.cc"><tt>tree_order_statistics_join.cc</tt></a>
+ Order statistics while joining two tree-based container
+ objects.</li>
+ </ol>
+
+ <h2><a name="trie_based" id="trie_based">Trie-Based
+ Containers</a></h2>
+
+
+ <ol>
+ <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/trie_dna.cc"><tt>trie_dna.cc</tt></a>
+ Using a PATRICIA trie for DNA strings.</li>
+
+ <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/trie_prefix_search.cc"><tt>trie_prefix_search.cc</tt></a>
+ Using a PATRICIA trie for finding all entries whose key
+ matches a given prefix.</li>
+ </ol>
+
+ <h2><a name="mmaps" id="mmaps">"Multimaps" and
+ "Multisets".</a></h2>
+ <ol>
+ <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/basic_multimap.cc"><tt>basic_multimap.cc</tt></a>
+ Basic use of "multimaps".</li>
+
+ <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/basic_multiset.cc"><tt>basic_multiset.cc</tt></a>
+ Basic use of "multisets".</li>
+ </ol>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/assoc_performance_tests.html b/libstdc++-v3/doc/html/ext/pb_ds/assoc_performance_tests.html
new file mode 100644
index 000000000..642f84809
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/assoc_performance_tests.html
@@ -0,0 +1,345 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+<title>Associative-Container Performance Tests</title>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+</head>
+<body>
+<div id="page">
+<h1><a name="assoc" id="assoc">Associative-Container
+ Performance Tests</a></h1>
+<h2><a name="settings" id="settings">Settings</a></h2>
+<p>This section describes performance tests and their results.
+ In the following, <a href="#gcc"><u>g++</u></a>, <a href="#msvc"><u>msvc++</u></a>, and <a href="#local"><u>local</u></a> (the build used for generating this
+ documentation) stand for three different builds:</p>
+<div id="gcc_settings_div">
+<div class="c1">
+<h3><a name="gcc" id="gcc"><u>g++</u></a></h3>
+<ul>
+<li>CPU speed - cpu MHz : 2660.644</li>
+<li>Memory - MemTotal: 484412 kB</li>
+<li>Platform -
+ Linux-2.6.12-9-386-i686-with-debian-testing-unstable</li>
+<li>Compiler - g++ (GCC) 4.0.2 20050808 (prerelease)
+ (Ubuntu 4.0.1-4ubuntu9) Copyright (C) 2005 Free Software
+ Foundation, Inc. This is free software; see the source
+ for copying conditions. There is NO warranty; not even
+ for MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE.</li>
+</ul>
+</div>
+<div class="c2"></div>
+</div>
+<div id="msvc_settings_div">
+<div class="c1">
+<h3><a name="msvc" id="msvc"><u>msvc++</u></a></h3>
+<ul>
+<li>CPU speed - cpu MHz : 2660.554</li>
+<li>Memory - MemTotal: 484412 kB</li>
+<li>Platform - Windows XP Pro</li>
+<li>Compiler - Microsoft (R) 32-bit C/C++ Optimizing
+ Compiler Version 13.10.3077 for 80x86 Copyright (C)
+ Microsoft Corporation 1984-2002. All rights
+ reserved.</li>
+</ul>
+</div>
+<div class="c2"></div>
+</div>
+<div id="local_settings_div"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h3><a name = "local"><u>local</u></a></h3><ul>
+<li>CPU speed - cpu MHz : 2250.000</li>
+<li>Memory - MemTotal: 2076248 kB</li>
+<li>Platform - Linux-2.6.16-1.2133_FC5-i686-with-redhat-5-Bordeaux</li>
+<li>Compiler - g++ (GCC) 4.1.1 20060525 (Red Hat 4.1.1-1)
+Copyright (C) 2006 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</li>
+</ul>
+</div><div style = "width: 100%; height: 20px"></div></div>
+<h2><a name="assoc_tests" id="assoc_tests">Tests</a></h2>
+<h3><a name="hash_based" id="hash_based">Hash-Based
+ Containers</a></h3>
+<ol>
+<li><a href="hash_text_find_find_timing_test.html">Hash-Based
+ Text <tt>find</tt> Find Timing Test</a></li>
+<li><a href="hash_random_int_find_find_timing_test.html">Hash-Based
+ Random-Integer <tt>find</tt> Find Timing Test</a></li>
+<li><a href="hash_random_int_subscript_find_timing_test.html">Hash-Based
+ Random-Integer Subscript Find Timing Test</a></li>
+<li><a href="hash_random_int_subscript_insert_timing_test.html">Hash-Based
+ Random-Integer Subscript Insert Timing Test</a></li>
+<li><a href="hash_zlob_random_int_find_find_timing_test.html">Hash-Based
+ Skewed-Distribution Random-Integer <tt>find</tt> Find Timing
+ Test</a></li>
+<li><a href="hash_random_int_erase_mem_usage_test.html">Hash-Based Erase
+ Memory Use Test</a></li>
+</ol>
+<h3><a name="tree_like_based" id="tree_like_based">Tree-Like-Based Containers</a></h3>
+<ol>
+<li><a href="tree_text_insert_timing_test.html">Tree-Based
+ and Trie-Based Text Insert Timing Test</a></li>
+<li><a href="tree_text_find_find_timing_test.html">Tree-Based
+ and Trie-Based Text <tt>find</tt> Find Timing Test</a></li>
+<li><a href="tree_text_lor_find_find_timing_test.html">Tree-Based
+ Locality-of-Reference Text <tt>find</tt> Find Timing
+ Test</a></li>
+<li><a href="tree_random_int_find_find_timing_test.html">Tree-Based
+ Random-Integer <tt>find</tt> Find Timing Test</a></li>
+<li><a href="tree_split_join_timing_test.html">Tree Split and
+ Join Timing Test</a></li>
+<li><a href="tree_order_statistics_timing_test.html">Tree
+ Order-Statistics Timing Test</a></li>
+</ol>
+<h3><a name="multimaps" id="multimaps">Multimaps</a></h3>
+<ol>
+<li><a href="multimap_text_find_timing_test_small.html">"Multimap"
+ Text Find Timing Test with <u>Small</u> Average Secondary-Key
+ to Primary-Key Ratio</a></li>
+<li><a href="multimap_text_find_timing_test_large.html">"Multimap"
+ Text Find Timing Test with <u>Large</u> Average Secondary-Key
+ to Primary-Key Ratio</a></li>
+<li><a href="multimap_text_insert_timing_test_small.html">"Multimap"
+ Text Insert Timing Test with <u>Small</u> Average
+ Secondary-Key to Primary-Key Ratio</a></li>
+<li><a href="multimap_text_insert_timing_test_large.html">"Multimap"
+ Text Insert Timing Test with <u>Large</u> Average
+ Secondary-Key to Primary-Key Ratio</a></li>
+<li><a href="multimap_text_insert_mem_usage_test_small.html">"Multimap"
+ Text Insert Memory-Use Test with <u>Small</u> Average
+ Secondary-Key to Primary-Key Ratio</a></li>
+<li><a href="multimap_text_insert_mem_usage_test_large.html">"Multimap"
+ Text Insert Memory-Use Test with <u>Large</u> Average
+ Secondary-Key to Primary-Key Ratio</a></li>
+</ol>
+<h2><a name="assoc_observations" id="assoc_observations">Observations</a></h2>
+<h3><a name="dss_family_choice" id="dss_family_choice">Underlying Data-Structure Families</a></h3>
+<p>In general, hash-based containers (see <a href="hash_based_containers.html">Design::Associative
+ Containers::Hash-Based Containers</a>) have better timing
+ performance than containers based on different underlying-data
+ structures. The main reason to choose a tree-based (see
+ <a href="tree_based_containers.html">Design::Associative
+ Containers::Tree-Based Containers</a>) or trie-based container
+ (see <a href="trie_based_containers.html">Design::Associative
+ Containers::Trie-Based Containers</a>) is if a byproduct of the
+ tree-like structure is required: either order-preservation, or
+ the ability to utilize node invariants (see <a href="tree_based_containers.html#invariants">Design::Associative
+ Containers::Tree-Based Containers::Node Invariants</a> and
+ <a href="trie_based_containers.html#invariants">Design::Associative
+ Containers::Trie-Based Containers::Node Invariants</a>). If
+ memory-use is the major factor, an ordered-vector tree (see
+ <a href="tree_based_containers.html">Design::Associative
+ Containers::Tree-Based Containers</a>) gives optimal results
+ (albeit with high modificiation costs), and a list-based
+ container (see <a href="lu_based_containers.html">Design::Associative
+ Containers::List-Based Containers</a>) gives reasonable
+ results.</p>
+<h3><a name="hash_based_types" id="hash_based_types">Hash-Based
+ Container Types</a></h3>
+<p>Hash-based containers are typically either collision
+ chaining or probing (see <a href="hash_based_containers.html">Design::Associative
+ Containers::Hash-Based Containers</a>). Collision-chaining
+ containers are more flexible internally, and so offer better
+ timing performance. Probing containers, if used for simple
+ value-types, manage memory more efficiently (they perform far
+ fewer allocation-related calls). In general, therefore, a
+ collision-chaining table should be used. A probing container,
+ conversely, might be used efficiently for operations such as
+ eliminating duplicates in a sequence, or counting the number of
+ occurrences within a sequence. Probing containers might be more
+ useful also in multithreaded applications where each thread
+ manipulates a hash-based container: in the STL, allocators have
+ class-wise semantics (see [<a href="references.html#meyers96more">meyers96more</a>] - Item 10); a
+ probing container might incur less contention in this case.</p>
+<h3><a name="hash_based_policies" id="hash_based_policies">Hash-Based Containers' Policies</a></h3>
+<p>In hash-based containers, the range-hashing scheme (see
+ <a href="hash_based_containers.html#hash_policies">Design::Associative
+ Containers::Hash-Based Containers::Hash Policies</a>) seems to
+ affect performance more than other considerations. In most
+ settings, a mask-based scheme works well (or can be made to
+ work well). If the key-distribution can be estimated a-priori,
+ a simple hash function can produce nearly uniform hash-value
+ distribution. In many other cases (<i>e.g.</i>, text hashing,
+ floating-point hashing), the hash function is powerful enough
+ to generate hash values with good uniformity properties
+ [<a href="references.html#knuth98sorting">knuth98sorting</a>];
+ a modulo-based scheme, taking into account all bits of the hash
+ value, appears to overlap the hash function in its effort.</p>
+<p>The range-hashing scheme determines many of the other
+ policies (see <a href="hash_based_containers.html#policy_interaction">Design::Hash-Based
+ Containers::Policy Interaction</a>). A mask-based scheme works
+ well with an exponential-size policy (see <a href="hash_based_containers.html#resize_policies">Design::Associative
+ Containers::Hash-Based Containers::Resize Policies</a>) ; for
+ probing-based containers, it goes well with a linear-probe
+ function (see <a href="hash_based_containers.html#hash_policies">Design::Associative
+ Containers::Hash-Based Containers::Hash Policies</a>).</p>
+<p>An orthogonal consideration is the trigger policy (see
+ <a href="hash_based_containers.html#resize_policies">Design::Associative
+ Containers::Hash-Based Containers::Resize Policies</a>). This
+ presents difficult tradeoffs. <i>E.g.</i>, different load
+ factors in a load-check trigger policy yield a
+ space/amortized-cost tradeoff.</p>
+<h3><a name="tree_like_based_types" id="tree_like_based_types">Tree-Like-Based Container
+ Types</a></h3>
+<p>In general, there are several families of tree-based
+ underlying data structures: balanced node-based trees
+ (<i>e.g.</i>, red-black or AVL trees), high-probability
+ balanced node-based trees (<i>e.g.</i>, random treaps or
+ skip-lists), competitive node-based trees (<i>e.g.</i>, splay
+ trees), vector-based "trees", and tries. (Additionally, there
+ are disk-residing or network-residing trees, such as B-Trees
+ and their numerous variants. An interface for this would have
+ to deal with the execution model and ACID guarantees; this is
+ out of the scope of this library.) Following are some
+ observations on their application to different settings.</p>
+<p>Of the balanced node-based trees, this library includes a
+ red-black tree (see <a href="tree_based_containers.html">Design::Associative
+ Containers::Tree-Based Containers</a>), as does STL (in
+ practice). This type of tree is the "workhorse" of tree-based
+ containers: it offers both reasonable modification and
+ reasonable lookup time. Unfortunately, this data structure
+ stores a huge amount of metadata. Each node must contain,
+ besides a value, three pointers and a boolean. This type might
+ be avoided if space is at a premium [<a href="references.html#austern00noset">austern00noset</a>].</p>
+<p>High-probability balanced node-based trees suffer the
+ drawbacks of deterministic balanced trees. Although they are
+ fascinating data structures, preliminary tests with them showed
+ their performance was worse than red-black trees. The library
+ does not contain any such trees, therefore.</p>
+<p>Competitive node-based trees have two drawbacks. They are
+ usually somewhat unbalanced, and they perform a large number of
+ comparisons. Balanced trees perform one comparison per each
+ node they encounter on a search path; a splay tree performs two
+ comparisons. If the keys are complex objects, <i>e.g.</i>,
+ <tt>std::string</tt>, this can increase the running time.
+ Conversely, such trees do well when there is much locality of
+ reference. It is difficult to determine in which case to prefer
+ such trees over balanced trees. This library includes a splay
+ tree (see <a href="tree_based_containers.html">Design::Associative
+ Containers::Tree-Based Containers</a>).</p>
+<p>Ordered-vector trees (see <a href="tree_based_containers.html">Design::Associative
+ Containers::Tree-Based Containers</a>) use very little space
+ [<a href="references.html#austern00noset">austern00noset</a>].
+ They do not have any other advantages (at least in this
+ implementation).</p>
+<p>Large-fan-out PATRICIA tries (see <a href="trie_based_containers.html">Design::Associative
+ Containers::Trie-Based Containers</a>) have excellent lookup
+ performance, but they do so through maintaining, for each node,
+ a miniature "hash-table". Their space efficiency is low, and
+ their modification performance is bad. These tries might be
+ used for semi-static settings, where order preservation is
+ important. Alternatively, red-black trees cross-referenced with
+ hash tables can be used. [<a href="references.html#okasaki98mereable">okasaki98mereable</a>]
+ discusses small-fan-out PATRICIA tries for integers, but the
+ cited results seem to indicate that the amortized cost of
+ maintaining such trees is higher than that of balanced trees.
+ Moderate-fan-out trees might be useful for sequences where each
+ element has a limited number of choices, <i>e.g.</i>, DNA
+ strings (see <a href="assoc_examples.html#trie_based">Examples::Associative
+ Containers::Trie-Based Containers</a>).</p>
+<h3><a name="msc" id="msc">Mapping-Semantics
+ Considerations</a></h3>
+<p>Different mapping semantics were discussed in <a href="motivation.html#assoc_mapping_semantics">Motivation::Associative
+ Containers::Alternative to Multiple Equivalent Keys</a> and
+ <a href="tutorial.html#assoc_ms">Tutorial::Associative
+ Containers::Associative Containers Others than Maps</a>. We
+ will focus here on the case where a keys can be composed into
+ primary keys and secondary keys. (In the case where some keys
+ are completely identical, it is trivial that one should use an
+ associative container mapping values to size types.) In this
+ case there are (at least) five possibilities:</p>
+<ol>
+<li>Use an associative container that allows equivalent-key
+ values (such as <tt>std::multimap</tt>)</li>
+<li>Use a unique-key value associative container that maps
+ each primary key to some complex associative container of
+ secondary keys, say a tree-based or hash-based container (see
+ <a href="tree_based_containers.html">Design::Associative
+ Containers::Tree-Based Containers</a> and <a href="hash_based_containers.html">Design::Associative
+ Containers::Hash-Based Containers</a>)</li>
+<li>Use a unique-key value associative container that maps
+ each primary key to some simple associative container of
+ secondary keys, say a list-based container (see <a href="lu_based_containers.html">Design::Associative
+ Containers::List-Based Containers</a>)</li>
+<li>Use a unique-key value associative container that maps
+ each primary key to some non-associative container
+ (<i>e.g.</i>, <tt>std::vector</tt>)</li>
+<li>Use a unique-key value associative container that takes
+ into account both primary and secondary keys.</li>
+</ol>
+<p>We do not think there is a simple answer for this (excluding
+ option 1, which we think should be avoided in all cases).</p>
+<p>If the expected ratio of secondary keys to primary keys is
+ small, then 3 and 4 seem reasonable. Both types of secondary
+ containers are relatively lightweight (in terms of memory use
+ and construction time), and so creating an entire container
+ object for each primary key is not too expensive. Option 4
+ might be preferable to option 3 if changing the secondary key
+ of some primary key is frequent - one cannot modify an
+ associative container's key, and the only possibility,
+ therefore, is erasing the secondary key and inserting another
+ one instead; a non-associative container, conversely, can
+ support in-place modification. The actual cost of erasing a
+ secondary key and inserting another one depends also on the
+ allocator used for secondary associative-containers (The tests
+ above used the standard allocator, but in practice one might
+ choose to use, <i>e.g.</i>, [<a href="references.html#boost_pool">boost_pool</a>]). Option 2 is
+ definitely an overkill in this case. Option 1 loses out either
+ immediately (when there is one secondary key per primary key)
+ or almost immediately after that. Option 5 has the same
+ drawbacks as option 2, but it has the additional drawback that
+ finding all values whose primary key is equivalent to some key,
+ might be linear in the total number of values stored (for
+ example, if using a hash-based container).</p>
+<p>If the expected ratio of secondary keys to primary keys is
+ large, then the answer is more complicated. It depends on the
+ distribution of secondary keys to primary keys, the
+ distribution of accesses according to primary keys, and the
+ types of operations most frequent.</p>
+<p>To be more precise, assume there are <i>m</i> primary keys,
+ primary key <i>i</i> is mapped to <i>n<sub>i</sub></i>
+ secondary keys, and each primary key is mapped, on average, to
+ <i>n</i> secondary keys (<i>i.e.</i>,
+ <i><b>E</b>(n<sub>i</sub>) = n</i>).</p>
+<p>Suppose one wants to find a specific pair of primary and
+ secondary keys. Using 1 with a tree based container
+ (<tt>std::multimap</tt>), the expected cost is
+ <i><b>E</b>(&Theta;(log(m) + n<sub>i</sub>)) = &Theta;(log(m) +
+ n)</i>; using 1 with a hash-based container
+ (<tt>std::tr1::unordered_multimap</tt>), the expected cost is
+ <i>&Theta;(n)</i>. Using 2 with a primary hash-based container
+ and secondary hash-based containers, the expected cost is
+ <i>O(1)</i>; using 2 with a primary tree-based container and
+ secondary tree-based containers, the expected cost is (using
+ the Jensen inequality [<a href="references.html#motwani95random">motwani95random</a>])
+ <i><b>E</b>(O(log(m) + log(n<sub>i</sub>)) = O(log(m)) +
+ <b>E</b>(O(log(n<sub>i</sub>)) = O(log(m)) + O(log(n))</i>,
+ assuming that primary keys are accessed equiprobably. 3 and 4
+ are similar to 1, but with lower constants. Using 5 with a
+ hash-based container, the expected cost is <i>O(1)</i>; using 5
+ with a tree based container, the cost is
+ <i><b>E</b>(&Theta;(log(mn))) = &Theta;(log(m) +
+ log(n))</i>.</p>
+<p>Suppose one needs the values whose primary key matches some
+ given key. Using 1 with a hash-based container, the expected
+ cost is <i>&Theta;(n)</i>, but the values will not be ordered
+ by secondary keys (which may or may not be required); using 1
+ with a tree-based container, the expected cost is
+ <i>&Theta;(log(m) + n)</i>, but with high constants; again the
+ values will not be ordered by secondary keys. 2, 3, and 4 are
+ similar to 1, but typically with lower constants (and,
+ additionally, if one uses a tree-based container for secondary
+ keys, they will be ordered). Using 5 with a hash-based
+ container, the cost is <i>&Theta;(mn)</i>.</p>
+<p>Suppose one wants to assign to a primary key all secondary
+ keys assigned to a different primary key. Using 1 with a
+ hash-based container, the expected cost is <i>&Theta;(n)</i>,
+ but with very high constants; using 1 with a tree-based
+ container, the cost is <i>&Theta;(nlog(mn))</i>. Using 2, 3,
+ and 4, the expected cost is <i>&Theta;(n)</i>, but typically
+ with far lower costs than 1. 5 is similar to 1.</p>
+</div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/assoc_regression_tests.html b/libstdc++-v3/doc/html/ext/pb_ds/assoc_regression_tests.html
new file mode 100644
index 000000000..9b6b6b839
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/assoc_regression_tests.html
@@ -0,0 +1,93 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>Associative-Container Regression Tests</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+<base href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/regression/">
+ </head>
+
+<body>
+ <div id="page">
+ <h1>Associative-Container Regression Tests</h1>
+
+ <h2><a name="assoc_desc" id="assoc_desc">Description</a></h2>
+
+ <p>The library contains a single comprehensive regression test.
+ For a given container type in <tt>pb_ds</tt>, the test creates
+ an object of the container type and an object of the
+ corresponding STL type (<i>e.g.</i>, <tt>std::set</tt>). It
+ then performs a random sequence of methods with random
+ arguments (<i>e.g.</i>, inserts, erases, and so forth) on both
+ objects. At each operation, the test checks the return value of
+ the method, and optionally both compares <tt>pb_ds</tt>'s
+ object with the STL's object as well as performing other
+ consistency checks on <tt>pb_ds</tt>'s object (<i>e.g.</i>,
+ order preservation, when applicable, or node invariants, when
+ applicable).</p>
+
+ <p>Additionally, the test integrally checks exception safety
+ and resource leaks. This is done as follows. A special
+ allocator type, written for the purpose of the test, both
+ randomly throws an exceptions when allocations are performed,
+ and tracks allocations and de-allocations. The exceptions thrown
+ at allocations simulate memory-allocation failures; the
+ tracking mechanism checks for memory-related bugs (<i>e.g.</i>,
+ resource leaks and multiple de-allocations). Both
+ <tt>pb_ds</tt>'s containers and the containers' value-types are
+ configured to use this allocator.</p>
+
+ <p>Due to compiler constraints, the test is split into the
+ several sources, each checking only some containers.</p>
+
+ <h2><a name="assoc_tests" id="assoc_tests">Tests</a></h2>
+
+ <h3><a name="assoc_tests_set" id="assoc_tests_set">"Set"
+ Tests</a></h3>
+
+ <p>The following check all "set" types:</p>
+
+ <ol>
+ <li><a href=
+ "hash_no_data_map_rand.cc"><tt>hash_no_data_map_rand.cc</tt></a>
+ checks all hash-based "set" types.</li>
+
+ <li><a href=
+ "list_update_no_data_map_rand.cc"><tt>list_update_no_data_map_rand.cc</tt></a>
+ checks all list-based "set" types.</li>
+
+ <li><a href=
+ "tree_no_data_map_rand.cc"><tt>tree_no_data_map_rand.cc</tt></a>
+ checks all tree-based "set" types.</li>
+
+ <li><a href=
+ "trie_no_data_map_rand.cc"><tt>trie_no_data_map_rand.cc</tt></a>
+ checks all PATRICIA-trie-based "set" types.</li>
+ </ol>
+
+ <h3><a name="assoc_tests_map" id="assoc_tests_map">"Map"
+ Tests</a></h3>
+
+ <p>The following check all "map" types:</p>
+
+ <ol>
+ <li><a href= "hash_data_map_rand.cc"><tt>hash_data_map_rand.cc</tt></a>
+ checks all hash-based "map" types.</li>
+
+ <li><a href= "list_update_data_map_rand.cc"><tt>list_update_data_map_rand.cc</tt></a>
+ checks all list-based "map" types.</li>
+
+ <li><a href= "tree_data_map_rand.cc"><tt>tree_data_map_rand.cc</tt></a>
+ checks all tree-based "map" types.</li>
+
+ <li><a href= "trie_data_map_rand.cc"><tt>trie_data_map_rand.cc</tt></a>
+ checks all PATRICIA-trie-based "map" types.</li>
+ </ol>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/assoc_tests.html b/libstdc++-v3/doc/html/ext/pb_ds/assoc_tests.html
new file mode 100644
index 000000000..6e4474945
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/assoc_tests.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>Associative-Container Tests</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1>Associative-Container Tests</h1>
+
+ <p><a href="assoc_regression_tests.html">Associative-Container
+ Regression Tests</a> describes the regression tests; <a href=
+ "assoc_performance_tests.html">Associative-Container
+ Performance Tests</a> describes the performance tests.</p>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/associative_container_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/associative_container_tag.html
new file mode 100644
index 000000000..ceb91cdc7
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/associative_container_tag.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>associative_container_tag Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>associative_container_tag</tt> Interface</h1>
+
+ <p>Basic associative-container data structure tag.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Base Classes</a></h2>
+
+ <table class="c1" width="100%" border="1" summary="Bases">
+ <tr>
+ <td width="80%" align="left"><b>Class</b></td>
+
+ <td width="20%" align="left"><b>Derivation Type</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="container_tag.html"><span class=
+"c2"><tt>container_tag</tt></span></a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/balls_and_bins.png b/libstdc++-v3/doc/html/ext/pb_ds/balls_and_bins.png
new file mode 100644
index 000000000..529c3ae41
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/balls_and_bins.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/basic_hash_table.html b/libstdc++-v3/doc/html/ext/pb_ds/basic_hash_table.html
new file mode 100644
index 000000000..668e681d8
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/basic_hash_table.html
@@ -0,0 +1,436 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>basic_hash_table Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>basic_hash_table</tt> Interface</h1>
+
+ <p>An abstract basic hash-based associative container.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/assoc_container.hpp"><tt>assoc_container.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Template Parameters</a></h2>
+
+ <table class="c1" width="100%" border="1" summary=
+ "Template Parameters">
+ <tr>
+ <td width="20%" align="left"><b>Parameter</b></td>
+
+ <td width="50%" align="left"><b>Description</b></td>
+
+ <td width="30%" align="left"><b>Default Value</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Key2501" id="Key2501"><b>typename</b> Key</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Key type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Mapped318655" id="Mapped318655"><b>typename</b> Mapped</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Mapped type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Hash_Fn1515835" id=
+"Hash_Fn1515835"><b>class</b> Hash_Fn</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Hash functor.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Eq_Fn60085" id="Eq_Fn60085"><b>class</b> Eq_Fn</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Equivalence functor.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Resize_Policy566860465" id=
+"Resize_Policy566860465"><b>class</b> Resize_Policy</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Resize policy.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Store_Hash218262104" id=
+"Store_Hash218262104"><b>bool</b> Store_Hash</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Indicates whether the hash value will be stored along
+ with each key.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Tag278938" id="Tag278938"><b>class</b> Tag</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Mapped-structure tag.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Allocator35940069" id=
+"Allocator35940069"><b>class</b> Allocator</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Allocator type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+ </table>
+
+ <h2><a name="link2" id="link2">Base Classes</a></h2>
+
+ <table class="c1" width="100%" border="1" summary="Bases">
+ <tr>
+ <td width="80%" align="left"><b>Class</b></td>
+
+ <td width="20%" align="left"><b>Derivation Type</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#Resize_Policy566860465"><tt>Resize_Policy</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="container_base.html"><span class=
+"c2"><tt>container_base</tt></span></a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link3" id="link3">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link4" id="link4">Policy Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="hash_fn2015995" id="hash_fn2015995">hash_fn</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Hash_Fn1515835"><tt>Hash_Fn</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Hash functor type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="eq_fn80245" id="eq_fn80245">eq_fn</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Eq_Fn60085"><tt>Eq_Fn</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Equivalence functor type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="resize_policy4084493169" id=
+"resize_policy4084493169">resize_policy</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Resize_Policy566860465"><tt>Resize_Policy</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Resize policy type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="store_hash280766104" id=
+"store_hash280766104">store_hash</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Store_Hash218262104"><tt>Store_Hash</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Indicates whether a hash value is stored with each
+ entry.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link5" id="link5">Public Methods</a></h2>
+
+ <h3><a name="link6" id="link6">Constructors, Destructor, and
+ Related</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b>
+ ~basic_hash_table
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Destructor.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link7" id="link7">Policy Access Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#hash_fn2015995"><tt>hash_fn</tt></a> &amp;
+ get_hash_fn
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Access to the <a href=
+ "#hash_fn2015995"><tt>hash_fn</tt></a> object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>const</b> <a href="#hash_fn2015995"><tt>hash_fn</tt></a> &amp;
+ get_hash_fn
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Const access to the <a href=
+ "#hash_fn2015995"><tt>hash_fn</tt></a> object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#eq_fn80245"><tt>eq_fn</tt></a> &amp;
+ get_eq_fn
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Access to the <a href="#eq_fn80245"><tt>eq_fn</tt></a>
+ object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>const</b> <a href="#eq_fn80245"><tt>eq_fn</tt></a> &amp;
+ get_eq_fn
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Const access to the <a href=
+ "#eq_fn80245"><tt>eq_fn</tt></a> object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#resize_policy4084493169"><tt>resize_policy</tt></a> &amp;
+ get_resize_policy
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Access to the <a href=
+ "#resize_policy4084493169"><tt>resize_policy</tt></a>
+ object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>const</b> <a href=
+"#resize_policy4084493169"><tt>resize_policy</tt></a> &amp;
+ get_resize_policy
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Const access to the <a href=
+ "#resize_policy4084493169"><tt>resize_policy</tt></a>
+ object.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link8" id="link8">Private Methods</a></h2>
+
+ <h3><a name="link9" id="link9">Resize Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b> <b>void</b>
+ do_resize
+ (size_type new_size)
+</pre>
+ </td>
+
+ <td>
+ <p>Resizes the container object to <span class=
+ "c1"><tt>new_size</tt></span>.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/basic_hash_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/basic_hash_tag.html
new file mode 100644
index 000000000..9dc5e6d86
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/basic_hash_tag.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>basic_hash_tag Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>basic_hash_tag</tt> Interface</h1>
+
+ <p>Basic hash data structure tag.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Base Classes</a></h2>
+
+ <table class="c1" width="100%" border="1" summary="Bases">
+ <tr>
+ <td width="80%" align="left"><b>Class</b></td>
+
+ <td width="20%" align="left"><b>Derivation Type</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="associative_container_tag.html"><span class=
+"c2"><tt>associative_container_tag</tt></span></a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/basic_invalidation_guarantee.html b/libstdc++-v3/doc/html/ext/pb_ds/basic_invalidation_guarantee.html
new file mode 100644
index 000000000..d4a0df23f
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/basic_invalidation_guarantee.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>basic_invalidation_guarantee Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>basic_invalidation_guarantee</tt> Interface</h1>
+
+ <p>Signifies a basic invalidation guarantee that any iterator,
+ pointer, or reference to a container object's mapped value type
+ is valid as long as the container is not modified.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/basic_tree.html b/libstdc++-v3/doc/html/ext/pb_ds/basic_tree.html
new file mode 100644
index 000000000..3811707fa
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/basic_tree.html
@@ -0,0 +1,660 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>basic_tree Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>basic_tree</tt> Interface</h1>
+
+ <p>An abstract basic tree-like-based associative container.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/assoc_container.hpp"><tt>assoc_container.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Template Parameters</a></h2>
+
+ <table class="c1" width="100%" border="1" summary=
+ "Template Parameters">
+ <tr>
+ <td width="20%" align="left"><b>Parameter</b></td>
+
+ <td width="50%" align="left"><b>Description</b></td>
+
+ <td width="30%" align="left"><b>Default Value</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Key2501" id="Key2501"><b>typename</b> Key</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Key type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Mapped318655" id="Mapped318655"><b>typename</b> Mapped</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Mapped type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Tag278938" id="Tag278938"><b>class</b> Tag</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Mapped-structure tag.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Node_Update841554648" id=
+"Node_Update841554648"><b>class</b> Node_Update</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Node updater.</p>
+
+ <p>Restores node-invariants when invalidated.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Policy_Tl42017403" id=
+"Policy_Tl42017403"><b>class</b> Policy_Tl</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Policy typelist.</p>
+
+ <p>Contains subclasses' policies.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Allocator35940069" id=
+"Allocator35940069"><b>class</b> Allocator</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Allocator type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+ </table>
+
+ <h2><a name="link2" id="link2">Base Classes</a></h2>
+
+ <table class="c1" width="100%" border="1" summary="Bases">
+ <tr>
+ <td width="80%" align="left"><b>Class</b></td>
+
+ <td width="20%" align="left"><b>Derivation Type</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#Node_Update841554648"><tt>Node_Update</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="container_base.html"><span class=
+"c2"><tt>container_base</tt></span></a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link3" id="link3">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link4" id="link4">Key-Type Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_key_reference3185471705" id=
+"const_key_reference3185471705">const_key_reference</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href="container_base.html"><span class=
+"c2"><tt>container_base</tt></span></a>::const_key_reference
+</pre>
+ </td>
+
+ <td>
+ <p>Const key reference type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link5" id="link5">Policy Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="node_update2404554648" id=
+"node_update2404554648">node_update</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Node_Update841554648"><tt>Node_Update</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Node updater type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link6" id="link6">Iterator Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_iterator98626788" id=
+"const_iterator98626788">const_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href="container_base.html"><span class=
+"c2"><tt>container_base</tt></span></a>::const_iterator
+</pre>
+ </td>
+
+ <td>
+ <p>Const range-type iterator.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="iterator10418194" id="iterator10418194">iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href="container_base.html"><span class=
+"c2"><tt>container_base</tt></span></a>::iterator
+</pre>
+ </td>
+
+ <td>
+ <p>Range-type iterator.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_reverse_iterator4151293083" id=
+"const_reverse_iterator4151293083">const_reverse_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+Const reverse range-type iterator.
+</pre>
+ </td>
+
+ <td>
+ <p>Const reverse range-type <a href=
+ "#iterator10418194"><tt>iterator</tt></a>.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="reverse_iterator1896910345" id=
+"reverse_iterator1896910345">reverse_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+Reverse range-type iterator.<br />
+If <a href="#Mapped318655"><tt>Mapped</tt></a> is <a href=
+"null_mapped_type.html"><span class=
+"c2"><tt>null_mapped_type</tt></span></a>, then this is synonymous to <a href="#const_reverse_iterator4151293083"><tt>const_reverse_iterator</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Reverse range-type <a href=
+ "#iterator10418194"><tt>iterator</tt></a>.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link7" id="link7">Public Methods</a></h2>
+
+ <h3><a name="link8" id="link8">Constructors, Destructor, and
+ Related</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b>
+ ~basic_tree
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Destructor.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link9" id="link9">Policy Access Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#node_update2404554648"><tt>node_update</tt></a> &amp;
+ get_node_update
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Access to the <a href=
+ "#node_update2404554648"><tt>node_update</tt></a>
+ object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>const</b> <a href=
+"#node_update2404554648"><tt>node_update</tt></a> &amp;
+ get_node_update
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Const access to the <a href=
+ "#node_update2404554648"><tt>node_update</tt></a>
+ object.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link10" id="link10">Find Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#iterator10418194"><tt>iterator</tt></a>
+ lower_bound
+ (<a href=
+"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key)
+</pre>
+ </td>
+
+ <td>
+ <p>Returns an <a href=
+ "#iterator10418194"><tt>iterator</tt></a> corresponding
+ to the entry whose key is the smallest one at least as
+ large as <span class="c1"><tt>r_key</tt></span>.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#const_iterator98626788"><tt>const_iterator</tt></a>
+ lower_bound
+ (<a href=
+"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns a <tt><b>const</b></tt> <a href=
+ "#iterator10418194"><tt>iterator</tt></a> corresponding
+ to the entry whose key is the smallest one at least as
+ large as <span class="c1"><tt>r_key</tt></span>.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#iterator10418194"><tt>iterator</tt></a>
+ upper_bound
+ (<a href=
+"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key)
+</pre>
+ </td>
+
+ <td>
+ <p>Returns an <a href=
+ "#iterator10418194"><tt>iterator</tt></a> corresponding
+ to the entry whose key is the smallest one larger than
+ <span class="c1"><tt>r_key</tt></span>.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#const_iterator98626788"><tt>const_iterator</tt></a>
+ upper_bound
+ (<a href=
+"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns a <a href=
+ "#const_iterator98626788"><tt>const_iterator</tt></a>
+ corresponding to the entry whose key is the smallest one
+ larger than <span class="c1"><tt>r_key</tt></span>.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link11" id="link11">Erase Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#iterator10418194"><tt>iterator</tt></a>
+ erase
+ (<a href="#iterator10418194"><tt>iterator</tt></a> it)
+</pre>
+ </td>
+
+ <td>
+ <p>Erases the value_type corresponding to the <a href=
+ "#iterator10418194"><tt>iterator</tt></a> <span class=
+ "c1"><tt>it</tt></span>. Returns the <a href=
+ "#iterator10418194"><tt>iterator</tt></a> corresponding
+ to the next value_type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#reverse_iterator1896910345"><tt>reverse_iterator</tt></a>
+ erase
+ (<a href=
+"#reverse_iterator1896910345"><tt>reverse_iterator</tt></a> it)
+</pre>
+ </td>
+
+ <td>
+ <p>Erases the value_type corresponding to the <a href=
+ "#reverse_iterator1896910345"><tt>reverse_iterator</tt></a>
+ <span class="c1"><tt>it</tt></span>. Returns the <a href=
+ "#reverse_iterator1896910345"><tt>reverse_iterator</tt></a>
+ corresponding to the previous value_type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link12" id="link12">Iteration Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#reverse_iterator1896910345"><tt>reverse_iterator</tt></a>
+ rbegin
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Returns a <a href=
+ "#reverse_iterator1896910345"><tt>reverse_iterator</tt></a>
+ corresponding to the last value_type in the
+ container.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href=
+"#const_reverse_iterator4151293083"><tt>const_reverse_iterator</tt></a>
+ rbegin
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns a <a href=
+ "#const_reverse_iterator4151293083"><tt>const_reverse_iterator</tt></a>
+ corresponding to the last value_type in the
+ container.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#reverse_iterator1896910345"><tt>reverse_iterator</tt></a>
+ rend
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Returns a <a href=
+ "#reverse_iterator1896910345"><tt>reverse_iterator</tt></a>
+ corresponding to the just-before-first value_type in the
+ container.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href=
+"#const_reverse_iterator4151293083"><tt>const_reverse_iterator</tt></a>
+ rend
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns a <a href=
+ "#const_reverse_iterator4151293083"><tt>const_reverse_iterator</tt></a>
+ corresponding to the just-before-first value_type in the
+ container.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link13" id="link13">Split and join
+ Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ join
+ (<span class=
+"c2"><tt>basic_tree</tt></span> &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Joins two trees. When this function returns,
+ <span class="c1"><tt>other</tt></span> will be
+ empty.</p>
+
+ <p>When calling this method, <span class=
+ "c1"><tt>other</tt></span>'s keys must be all larger or
+ all smaller than this object's keys, and <span class=
+ "c1"><tt>other</tt></span>'s policies must be
+ equivalent to this object's policies.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ split
+ (<a href=
+"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key,
+ <span class=
+"c2"><tt>basic_tree</tt></span> &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Splits into two trees. When this function returns,
+ <span class="c1"><tt>other</tt></span> will contain
+ only keys larger than <span class=
+ "c1"><tt>r_key</tt></span>.</p>
+
+ <p>When calling this method, <span class=
+ "c1"><tt>other</tt></span>'s policies must be
+ equivalent to this object's policies.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/basic_tree_assoc_container_const_node_iterator.html b/libstdc++-v3/doc/html/ext/pb_ds/basic_tree_assoc_container_const_node_iterator.html
new file mode 100644
index 000000000..5647f551e
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/basic_tree_assoc_container_const_node_iterator.html
@@ -0,0 +1,383 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>tree::const_node_iterator
+ Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt><span class=
+ "c2"><tt>tree</tt></span>::const_node_iterator</tt>
+ Interface</h1>
+
+ <p>Const node iterator.</p>
+
+ <p>This is an &amp;qout;iterator to an iterator&amp;qout; - it
+ iterates over nodes, and de-referencing it returns one of the
+ tree's iterators</p>
+
+ <h2><a name="link1" id="link1">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link2" id="link2">Iterator Definitions</a></h3>
+
+ <table class="c2" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="iterator_category2821876439" id=
+"iterator_category2821876439">iterator_category</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+trivial_iterator_tag
+</pre>
+ </td>
+
+ <td>
+ <p>Category.</p>
+
+ <p>This tag identifies that the iterator has none of the
+ STL's iterators' movement abilities.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="difference_type868028452" id=
+"difference_type868028452">difference_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre class="c1">
+void
+</pre>
+ </td>
+
+ <td>
+ <p>Difference type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link3" id="link3">Value-Type Definitions</a></h3>
+
+ <p>Note that a node iterator's value type is actually a tree
+ iterator.</p>
+
+ <table class="c2" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="value_type279018186" id=
+"value_type279018186">value_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href=
+"container_base.html#const_iterator98626788"><span class="c2"><tt>container_base</tt></span>::const_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Iterator's value type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="reference54418471" id="reference54418471">reference</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href=
+"container_base.html#const_iterator98626788"><span class="c2"><tt>container_base</tt></span>::const_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Iterator's reference type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_reference495461441" id=
+"const_reference495461441">const_reference</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href=
+"container_base.html#const_iterator98626788"><span class="c2"><tt>container_base</tt></span>::const_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Iterator's const <a href=
+ "#reference54418471"><tt>reference</tt></a> type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link4" id="link4">Metadata Definitions</a></h3>
+
+ <p>These are only defined if <a href=
+ "basic_tree.html#Node_Update841554648"><span class="c2">
+ <tt>basic_tree</tt></span>::Node_Update</a>
+ is not <a href="null_tree_node_update.html"><span class=
+ "c2"><tt>null_tree_node_update</tt></span></a></p>
+
+ <table class="c2" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="metadata_type2849297114" id=
+"metadata_type2849297114">metadata_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<tt><b>typename</b></tt> <a href=
+"basic_tree.html#Node_Update841554648"><span class="c2"><tt>basic_tree</tt></span>::Node_Update</a><tt>::metadata_type</tt>
+</pre>
+ </td>
+
+ <td>
+ <p>Metadata type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_metadata_reference1108857465" id=
+"const_metadata_reference1108857465">const_metadata_reference</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> Allocator::<b>template</b> rebind&lt;
+ <a href=
+"#metadata_type2849297114"><tt>metadata_type</tt></a>&gt;::other::<a href="#const_reference495461441"><tt>const_reference</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Const metadata <a href=
+ "#reference54418471"><tt>reference</tt></a> type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link5" id="link5">Public Methods</a></h2>
+
+ <h3><a name="link6" id="link6">Constructors, Destructor, and
+ Related</a></h3>
+
+ <table class="c2" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b>
+ const_node_iterator
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Default constructor.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link7" id="link7">Access Methods</a></h3>
+
+ <table class="c2" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href=
+"#const_reference495461441"><tt>const_reference</tt></a>
+ <b>operator</b>*
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Access.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link8" id="link8">Metadata Access Methods</a></h3>
+
+ <p>These are only defined if <a href=
+ "basic_tree.html#Node_Update841554648"><span class="c2">
+ <tt>basic_tree</tt></span>::Node_Update</a>
+ is not <a href="null_tree_node_update.html"><span class=
+ "c2"><tt>null_tree_node_update</tt></span></a></p>
+
+ <table class="c2" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href=
+"#const_metadata_reference1108857465"><tt>const_metadata_reference</tt></a>
+ get_metadata
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Metadata access.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link9" id="link9">Movement Methods</a></h3>
+
+ <table class="c2" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <span class="c2"><tt>const_node_iterator</tt></span>
+ get_l_child
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the const node iterator associated with the
+ left node.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <span class="c2"><tt>const_node_iterator</tt></span>
+ get_r_child
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the const node iterator associated with the
+ right node.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link10" id="link10">Comparison Methods</a></h3>
+
+ <table class="c2" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>bool</b>
+ <b>operator</b>==
+ (<b>const</b> <span class=
+"c2"><tt>const_node_iterator</tt></span> &amp;other) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Compares to a different iterator object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>bool</b>
+ <b>operator</b>!=
+ (<b>const</b> <span class=
+"c2"><tt>const_node_iterator</tt></span> &amp;other) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Compares (negatively) to a different iterator
+ object.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/basic_tree_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/basic_tree_tag.html
new file mode 100644
index 000000000..8eca2a818
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/basic_tree_tag.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>basic_tree_tag Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>basic_tree_tag</tt> Interface</h1>
+
+ <p>Basic tree-like data structure tag.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Base Classes</a></h2>
+
+ <table class="c1" width="100%" border="1" summary="Bases">
+ <tr>
+ <td width="80%" align="left"><b>Class</b></td>
+
+ <td width="20%" align="left"><b>Derivation Type</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="associative_container_tag.html"><span class=
+"c2"><tt>associative_container_tag</tt></span></a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/binary_heap_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/binary_heap_tag.html
new file mode 100644
index 000000000..47873b1cf
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/binary_heap_tag.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>binary_heap_tag Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>binary_heap_tag</tt> Interface</h1>
+
+ <p>Binary-heap (array-based) data structure tag.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Base Classes</a></h2>
+
+ <table class="c1" width="100%" border="1" summary="Bases">
+ <tr>
+ <td width="80%" align="left"><b>Class</b></td>
+
+ <td width="20%" align="left"><b>Derivation Type</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="priority_queue_tag.html"><span class=
+"c2"><tt>priority_queue_tag</tt></span></a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/binary_priority_queue_random_int_push_timing_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/binary_priority_queue_random_int_push_timing_test_gcc.png
new file mode 100644
index 000000000..07f0953a6
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/binary_priority_queue_random_int_push_timing_test_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/binary_priority_queue_random_int_push_timing_test_local.png b/libstdc++-v3/doc/html/ext/pb_ds/binary_priority_queue_random_int_push_timing_test_local.png
new file mode 100644
index 000000000..76e02f134
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/binary_priority_queue_random_int_push_timing_test_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/binary_priority_queue_random_int_push_timing_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/binary_priority_queue_random_int_push_timing_test_msvc.png
new file mode 100644
index 000000000..b8a3b2371
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/binary_priority_queue_random_int_push_timing_test_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/binomial_heap_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/binomial_heap_tag.html
new file mode 100644
index 000000000..fde6a913b
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/binomial_heap_tag.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>binomial_heap_tag Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>binomial_heap_tag</tt> Interface</h1>
+
+ <p>Binomial-heap data structure tag.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Base Classes</a></h2>
+
+ <table class="c1" width="100%" border="1" summary="Bases">
+ <tr>
+ <td width="80%" align="left"><b>Class</b></td>
+
+ <td width="20%" align="left"><b>Derivation Type</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="priority_queue_tag.html"><span class=
+"c2"><tt>priority_queue_tag</tt></span></a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_max_collision_check_resize_trigger.html b/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_max_collision_check_resize_trigger.html
new file mode 100644
index 000000000..a6b512b0d
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_max_collision_check_resize_trigger.html
@@ -0,0 +1,532 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>cc_hash_max_collision_check_resize_trigger
+ Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>cc_hash_max_collision_check_resize_trigger</tt>
+ Interface</h1>
+
+ <p>A resize trigger policy based on collision checks. It keeps
+ the simulated load factor lower than some given load
+ factor.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/hash_policy.hpp"><tt>hash_policy.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Template Parameters</a></h2>
+
+ <table class="c1" width="100%" border="1" summary=
+ "Template Parameters">
+ <tr>
+ <td width="20%" align="left"><b>Parameter</b></td>
+
+ <td width="50%" align="left"><b>Description</b></td>
+
+ <td width="30%" align="left"><b>Default Value</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="External_Load_Access1313998607" id=
+"External_Load_Access1313998607"><b>bool</b> External_Load_Access </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Specifies whether the load factor can be accessed
+ externally. The two options have different trade-offs in
+ terms of flexibility, genericity, and encapsulation.</p>
+ </td>
+
+ <td><tt><b>false</b></tt></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Size_Type42920436" id=
+"Size_Type42920436"><b>typename</b> Size_Type </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+
+ <td>size_t</td>
+ </tr>
+ </table>
+
+ <h2><a name="link2" id="link2">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link3" id="link3">General Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="size_type55424436" id="size_type55424436">size_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Size_Type42920436"><tt>Size_Type</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="external_load_access3976598639" id=
+"external_load_access3976598639">external_load_access</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href=
+"#External_Load_Access1313998607"><tt>External_Load_Access</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Indicates whether loads can be accessed externally</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link4" id="link4">Public Methods</a></h2>
+
+ <h3><a name="link5" id="link5">Constructors, Destructor, and
+ Related</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ cc_hash_max_collision_check_resize_trigger
+ (float load = 0.5)
+</pre>
+ </td>
+
+ <td>
+ <p>Default constructor, or constructor taking
+ <span class="c1"><tt>load</tt></span>, a load factor
+ which it will attempt to maintain.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ swap
+ (<span class=
+"c2"><tt>cc_hash_max_collision_check_resize_trigger</tt></span> &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Swaps content.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link6" id="link6">Load Access Methods</a></h3>
+
+ <p>These methods are only available if the external access
+ parameter is set.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> float
+ get_load
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the current load.</p>
+
+ <p>Calling this method will not compile when <a href=
+ "#External_Load_Access1313998607"><tt>External_Load_Access</tt></a>
+ == <tt><b>false</b></tt>.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ set_load
+ (float load)
+</pre>
+ </td>
+
+ <td>
+ <p>Sets the <span class="c1"><tt>load</tt></span>; does
+ not resize the container.</p>
+
+ <p>It is the responsibility of the user to pass an
+ appropriate <span class="c1"><tt>load</tt></span> to this
+ function. Calling this method will not compile when
+ <a href=
+ "#External_Load_Access1313998607"><tt>External_Load_Access</tt></a>
+ == <tt><b>false</b></tt>.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link7" id="link7">Protected Methods</a></h2>
+
+ <h3><a name="link8" id="link8">Insert Search
+ Notifications.</a></h3>
+
+ <p>Notifications called during an insert operation.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_insert_search_start
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search started.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_insert_search_collision
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search encountered a collision.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_insert_search_end
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search ended.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link9" id="link9">Find Search
+ Notifications.</a></h3>
+
+ <p>Notifications called during a find operation.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_find_search_start
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search started.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_find_search_collision
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search encountered a collision.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_find_search_end
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search ended.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link10" id="link10">Erase Search
+ Notifications.</a></h3>
+
+ <p>Notifications called during an insert operation.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_erase_search_start
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search started.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_erase_search_collision
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search encountered a collision.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_erase_search_end
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search ended.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link11" id="link11">Content Change
+ Notifications</a></h3>
+
+ <p>Notifications called when the content of the table changes
+ in a way that can affect the resize policy.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_inserted
+ (<a href="#size_type55424436"><tt>size_type</tt></a> num_entries)
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies an element was inserted.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_erased
+ (<a href="#size_type55424436"><tt>size_type</tt></a> num_entries)
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies an element was erased.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ notify_cleared
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies the table was cleared.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link12" id="link12">Size Change
+ Notifications</a></h3>
+
+ <p>Notifications called when the table changes size.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ notify_resized
+ (<a href="#size_type55424436"><tt>size_type</tt></a> new_size)
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies the table was resized as a result of this
+ object's signifying that a resize is needed.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ notify_externally_resized
+ (<a href="#size_type55424436"><tt>size_type</tt></a> new_size)
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies the table was resized externally.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link13" id="link13">Queries</a></h3>
+
+ <p>Called to query whether/how to resize.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>bool</b>
+ is_resize_needed
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Queries whether a resize is needed.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>bool</b>
+ is_grow_needed
+ (<a href=
+"#size_type55424436"><tt>size_type</tt></a> size, <a href=
+"#size_type55424436"><tt>size_type</tt></a> num_entries) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Queries whether a grow is needed.</p>
+
+ <p>This method is called only if this object indicated is
+ needed.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_find_timing_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_find_timing_test_gcc.png
new file mode 100644
index 000000000..85b9eca4f
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_find_timing_test_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_find_timing_test_local.png b/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_find_timing_test_local.png
new file mode 100644
index 000000000..4f578c65b
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_find_timing_test_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_find_timing_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_find_timing_test_msvc.png
new file mode 100644
index 000000000..d1234aa11
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_find_timing_test_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_find_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_find_gcc.png
new file mode 100644
index 000000000..1db2cc0c6
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_find_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_find_local.png b/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_find_local.png
new file mode 100644
index 000000000..ca4db96f4
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_find_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_find_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_find_msvc.png
new file mode 100644
index 000000000..0b51d9432
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_find_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_insert_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_insert_gcc.png
new file mode 100644
index 000000000..6e4940381
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_insert_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_insert_local.png b/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_insert_local.png
new file mode 100644
index 000000000..48fcf76c0
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_insert_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_insert_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_insert_msvc.png
new file mode 100644
index 000000000..39c96ad8d
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_insert_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_table.html b/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_table.html
new file mode 100644
index 000000000..0557732a5
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_table.html
@@ -0,0 +1,724 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>cc_hash_table Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>cc_hash_table</tt> Interface</h1>
+
+ <p>A concrete collision-chaining hash-based associative
+ container.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/assoc_container.hpp"><tt>assoc_container.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Template Parameters</a></h2>
+
+ <table class="c1" width="100%" border="1" summary=
+ "Template Parameters">
+ <tr>
+ <td width="20%" align="left"><b>Parameter</b></td>
+
+ <td width="50%" align="left"><b>Description</b></td>
+
+ <td width="30%" align="left"><b>Default Value</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Key2501" id="Key2501"><b>typename</b> Key</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Key type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Mapped318655" id="Mapped318655"><b>typename</b> Mapped</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Mapped type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Hash_Fn1515835" id=
+"Hash_Fn1515835"><b>class</b> Hash_Fn </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Hash functor.</p>
+ </td>
+
+ <td>
+ <pre>
+__gnu_cxx::hash&lt;<a href="#Key2501"><tt>Key</tt></a>&gt;
+</pre>if using gcc;
+ <pre>
+stdext::hash_value&lt;<a href="#Key2501"><tt>Key</tt></a>&gt;
+</pre>if using Visual C++ .net
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Eq_Fn60085" id="Eq_Fn60085"><b>class</b> Eq_Fn </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Equivalence functor.</p>
+ </td>
+
+ <td>
+ <pre>
+std::equal_to&lt;<a href="#Key2501"><tt>Key</tt></a>&gt;
+</pre>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Comb_Hash_Fn320611039" id=
+"Comb_Hash_Fn320611039"><b>class</b> Comb_Hash_Fn </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Combining hash functor.</p>
+
+ <p>If <a href="#Hash_Fn1515835"><tt>Hash_Fn</tt></a> is
+ not <a href="null_hash_fn.html"><span class=
+ "c2"><tt>null_hash_fn</tt></span></a>, then this is the
+ ranged-hash functor; otherwise, this is the range-hashing
+ functor.</p>
+
+ <p>(See <a href=
+ "hash_based_containers.html#hash_policies">Design::Hash-Based
+ Containers::Hash Policies</a>.)</p>
+ </td>
+
+ <td>
+ <pre>
+<a href="direct_mask_range_hashing.html"><span class=
+"c2"><tt>direct_mask_range_hashing</tt></span></a>
+</pre>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Resize_Policy566860465" id=
+"Resize_Policy566860465"><b>class</b> Resize_Policy </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Resize policy.</p>
+ </td>
+
+ <td>
+ If <tt><a href=
+ "#Comb_Hash_Fn320611039"><tt>Comb_Hash_Fn</tt></a></tt>
+ is <tt><a href=
+ "direct_mask_range_hashing.html"><span class=
+ "c2"><tt>direct_mask_range_hashing</tt></span></a></tt>,
+ then
+ <pre>
+<a href="hash_standard_resize_policy.html"><span class=
+"c2"><tt>hash_standard_resize_policy</tt></span></a>&lt;
+ <a href="hash_exponential_size_policy.html"><span class=
+"c2"><tt>hash_exponential_size_policy</tt></span></a>&lt;
+ <b>typename</b> <a href=
+"#Comb_Hash_Fn320611039"><tt>Comb_Hash_Fn</tt></a>::size_type&gt;,
+ <a href="hash_load_check_resize_trigger.html"><span class=
+"c2"><tt>hash_load_check_resize_trigger</tt></span></a>&lt;
+ <b>typename</b> <a href=
+"#Comb_Hash_Fn320611039"><tt>Comb_Hash_Fn</tt></a>::size_type&gt;,
+ <b>false</b>,
+ <b>typename</b> <a href=
+"#Comb_Hash_Fn320611039"><tt>Comb_Hash_Fn</tt></a>::size_type&gt;
+</pre>otherwise,
+ <pre>
+<a href="hash_standard_resize_policy.html"><span class=
+"c2"><tt>hash_standard_resize_policy</tt></span></a>&lt;
+ <a href="hash_exponential_size_policy.html"><span class=
+"c2"><tt>hash_exponential_size_policy</tt></span></a>&lt;
+ <b>typename</b> <a href=
+"#Comb_Hash_Fn320611039"><tt>Comb_Hash_Fn</tt></a>::size_type&gt;,
+ <a href="hash_load_check_resize_trigger.html"><span class=
+"c2"><tt>hash_load_check_resize_trigger</tt></span></a>&lt;
+ <b>typename</b> <a href=
+"#Comb_Hash_Fn320611039"><tt>Comb_Hash_Fn</tt></a>::size_type&gt;,
+ <b>false</b>,
+ <b>typename</b> <a href=
+"#Comb_Hash_Fn320611039"><tt>Comb_Hash_Fn</tt></a>::size_type&gt;
+</pre>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Store_Hash218262104" id=
+"Store_Hash218262104"><b>bool</b> Store_Hash </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Indicates whether the hash value will be stored along
+ with each key.</p>
+
+ <p>If <tt><a href=
+ "#hash_fn2015995"><tt>hash_fn</tt></a></tt> is <a href=
+ "null_hash_fn.html"><span class=
+ "c2"><tt>null_hash_fn</tt></span></a>, then the container
+ will not compile if this value is
+ <tt><b>true</b></tt></p>
+ </td>
+
+ <td>
+ <pre>
+<tt><b>false</b></tt>
+</pre>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Allocator35940069" id=
+"Allocator35940069"><b>class</b> Allocator </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Allocator type.</p>
+ </td>
+
+ <td>
+ <pre>
+std::allocator&lt;<b>char</b>&gt;
+</pre>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link2" id="link2">Base Classes</a></h2>
+
+ <table class="c1" width="100%" border="1" summary="Bases">
+ <tr>
+ <td width="80%" align="left"><b>Class</b></td>
+
+ <td width="20%" align="left"><b>Derivation Type</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="basic_hash_table.html"><span class=
+"c2"><tt>basic_hash_table</tt></span></a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link3" id="link3">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link4" id="link4">Policy Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="hash_fn2015995" id="hash_fn2015995">hash_fn</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Hash_Fn1515835"><tt>Hash_Fn</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Hash functor type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="eq_fn80245" id="eq_fn80245">eq_fn</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Eq_Fn60085"><tt>Eq_Fn</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Equivalence functor type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="resize_policy4084493169" id=
+"resize_policy4084493169">resize_policy</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Resize_Policy566860465"><tt>Resize_Policy</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Resize policy type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="comb_hash_fn1883611199" id=
+"comb_hash_fn1883611199">comb_hash_fn</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Comb_Hash_Fn320611039"><tt>Comb_Hash_Fn</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Combining hash functor type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link5" id="link5">Public Methods</a></h2>
+
+ <h3><a name="link6" id="link6">Constructors, Destructor, and
+ Related</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ cc_hash_table
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Default constructor.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ cc_hash_table
+ (<b>const</b> <a href=
+"#hash_fn2015995"><tt>hash_fn</tt></a> &amp;r_hash_fn)
+</pre>
+ </td>
+
+ <td>
+ <p>Constructor taking some policy objects. <span class=
+ "c1"><tt>r_hash_fn</tt></span> will be copied by the
+ <a href="#Hash_Fn1515835"><tt>Hash_Fn</tt></a> object of
+ the container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ cc_hash_table
+ (<b>const</b> <a href=
+"#hash_fn2015995"><tt>hash_fn</tt></a> &amp;r_hash_fn,
+ <b>const</b> <a href=
+"#eq_fn80245"><tt>eq_fn</tt></a> &amp;r_eq_fn)
+</pre>
+ </td>
+
+ <td>
+ <p>Constructor taking some policy objects. <span class=
+ "c1"><tt>r_hash_fn</tt></span> will be copied by the
+ <a href="#hash_fn2015995"><tt>hash_fn</tt></a> object of
+ the container object, and <span class=
+ "c1"><tt>r_eq_fn</tt></span> will be copied by the
+ <a href="#eq_fn80245"><tt>eq_fn</tt></a> object of the
+ container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ cc_hash_table
+ (<b>const</b> <a href=
+"#hash_fn2015995"><tt>hash_fn</tt></a> &amp;r_hash_fn,
+ <b>const</b> <a href=
+"#eq_fn80245"><tt>eq_fn</tt></a> &amp;r_eq_fn,
+ <b>const</b> <a href=
+"#comb_hash_fn1883611199"><tt>comb_hash_fn</tt></a> &amp;r_comb_hash_fn)
+</pre>
+ </td>
+
+ <td>
+ <p>Constructor taking some policy objects. <span class=
+ "c1"><tt>r_hash_fn</tt></span> will be copied by the
+ <a href="#hash_fn2015995"><tt>hash_fn</tt></a> object of
+ the container object, <span class=
+ "c1"><tt>r_eq_fn</tt></span> will be copied by the
+ <a href="#eq_fn80245"><tt>eq_fn</tt></a> object of the
+ container object, and <span class=
+ "c1"><tt>r_comb_hash_fn</tt></span> will be copied by the
+ <a href=
+ "#comb_hash_fn1883611199"><tt>comb_hash_fn</tt></a>
+ object of the container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ cc_hash_table
+ (<b>const</b> <a href=
+"#hash_fn2015995"><tt>hash_fn</tt></a> &amp;r_hash_fn,
+ <b>const</b> <a href=
+"#eq_fn80245"><tt>eq_fn</tt></a> &amp;r_eq_fn,
+ <b>const</b> <a href=
+"#comb_hash_fn1883611199"><tt>comb_hash_fn</tt></a> &amp;r_comb_hash_fn,
+ <b>const</b> <a href=
+"#resize_policy4084493169"><tt>resize_policy</tt></a> &amp;r_resize_policy)
+</pre>
+ </td>
+
+ <td>
+ <p>Constructor taking some policy objects. <span class=
+ "c1"><tt>r_hash_fn</tt></span> will be copied by the
+ <a href="#hash_fn2015995"><tt>hash_fn</tt></a> object of
+ the container object, <span class=
+ "c1"><tt>r_eq_fn</tt></span> will be copied by the
+ <a href="#eq_fn80245"><tt>eq_fn</tt></a> object of the
+ container object, <span class=
+ "c1"><tt>r_comb_hash_fn</tt></span> will be copied by the
+ <a href=
+ "#comb_hash_fn1883611199"><tt>comb_hash_fn</tt></a>
+ object of the container object, and <span class=
+ "c1"><tt>r_resize_policy</tt></span> will be copied by
+ the <a href=
+ "#resize_policy4084493169"><tt>resize_policy</tt></a>
+ object of the container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>template</b>&lt;
+ <b>class</b> It&gt;
+ cc_hash_table
+ (It first_it,
+ It last_it)
+</pre>
+ </td>
+
+ <td>
+ <p>Constructor taking iterators to a range of
+ value_types. The value_types between <span class=
+ "c1"><tt>first_it</tt></span> and <span class=
+ "c1"><tt>last_it</tt></span> will be inserted into the
+ container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>template</b>&lt;
+ <b>class</b> It&gt;
+ cc_hash_table
+ (It first_it,
+ It last_it,
+ <b>const</b> <a href=
+"#hash_fn2015995"><tt>hash_fn</tt></a> &amp;r_hash_fn)
+</pre>
+ </td>
+
+ <td>
+ <p>Constructor taking iterators to a range of value_types
+ and some policy objects. The value_types between
+ <span class="c1"><tt>first_it</tt></span> and
+ <span class="c1"><tt>last_it</tt></span> will be inserted
+ into the container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>template</b>&lt;
+ <b>class</b> It&gt;
+ cc_hash_table
+ (It first_it,
+ It last_it,
+ <b>const</b> <a href=
+"#hash_fn2015995"><tt>hash_fn</tt></a> &amp;r_hash_fn,
+ <b>const</b> <a href=
+"#eq_fn80245"><tt>eq_fn</tt></a> &amp;r_eq_fn)
+</pre>
+ </td>
+
+ <td>
+ <p>Constructor taking iterators to a range of value_types
+ and some policy objects The value_types between
+ <span class="c1"><tt>first_it</tt></span> and
+ <span class="c1"><tt>last_it</tt></span> will be inserted
+ into the container object. <span class=
+ "c1"><tt>r_hash_fn</tt></span> will be copied by the
+ <a href="#hash_fn2015995"><tt>hash_fn</tt></a> object of
+ the container object, and <span class=
+ "c1"><tt>r_eq_fn</tt></span> will be copied by the
+ <a href="#eq_fn80245"><tt>eq_fn</tt></a> object of the
+ container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>template</b>&lt;
+ <b>class</b> It&gt;
+ cc_hash_table
+ (It first_it,
+ It last_it,
+ <b>const</b> <a href=
+"#hash_fn2015995"><tt>hash_fn</tt></a> &amp;r_hash_fn,
+ <b>const</b> <a href=
+"#eq_fn80245"><tt>eq_fn</tt></a> &amp;r_eq_fn,
+ <b>const</b> <a href=
+"#comb_hash_fn1883611199"><tt>comb_hash_fn</tt></a> &amp;r_comb_hash_fn)
+</pre>
+ </td>
+
+ <td>
+ <p>Constructor taking iterators to a range of value_types
+ and some policy objects The value_types between
+ <span class="c1"><tt>first_it</tt></span> and
+ <span class="c1"><tt>last_it</tt></span> will be inserted
+ into the container object. <span class=
+ "c1"><tt>r_hash_fn</tt></span> will be copied by the
+ <a href="#hash_fn2015995"><tt>hash_fn</tt></a> object of
+ the container object, <span class=
+ "c1"><tt>r_eq_fn</tt></span> will be copied by the
+ <a href="#eq_fn80245"><tt>eq_fn</tt></a> object of the
+ container object, and <span class=
+ "c1"><tt>r_comb_hash_fn</tt></span> will be copied by the
+ <a href=
+ "#comb_hash_fn1883611199"><tt>comb_hash_fn</tt></a>
+ object of the container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>template</b>&lt;
+ <b>class</b> It&gt;
+ cc_hash_table
+ (It first_it,
+ It last_it,
+ <b>const</b> <a href=
+"#hash_fn2015995"><tt>hash_fn</tt></a> &amp;r_hash_fn,
+ <b>const</b> <a href=
+"#eq_fn80245"><tt>eq_fn</tt></a> &amp;r_eq_fn,
+ <b>const</b> <a href=
+"#comb_hash_fn1883611199"><tt>comb_hash_fn</tt></a> &amp;r_comb_hash_fn,
+ <b>const</b> <a href=
+"#resize_policy4084493169"><tt>resize_policy</tt></a> &amp;r_resize_policy)
+</pre>
+ </td>
+
+ <td>
+ <p>Constructor taking iterators to a range of value_types
+ and some policy objects The value_types between
+ <span class="c1"><tt>first_it</tt></span> and
+ <span class="c1"><tt>last_it</tt></span> will be inserted
+ into the container object. <span class=
+ "c1"><tt>r_hash_fn</tt></span> will be copied by the
+ <a href="#hash_fn2015995"><tt>hash_fn</tt></a> object of
+ the container object, <span class=
+ "c1"><tt>r_eq_fn</tt></span> will be copied by the
+ <a href="#eq_fn80245"><tt>eq_fn</tt></a> object of the
+ container object, <span class=
+ "c1"><tt>r_comb_hash_fn</tt></span> will be copied by the
+ <a href=
+ "#comb_hash_fn1883611199"><tt>comb_hash_fn</tt></a>
+ object of the container object, and <span class=
+ "c1"><tt>r_resize_policy</tt></span> will be copied by
+ the <a href=
+ "#resize_policy4084493169"><tt>resize_policy</tt></a>
+ object of the container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ cc_hash_table
+ (<b>const</b> <span class=
+"c2"><tt>cc_hash_table</tt></span> &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Copy constructor.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b>
+ ~cc_hash_table
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Destructor.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<span class="c2"><tt>cc_hash_table</tt></span> &amp;
+ <b>operator</b>=
+ (<b>const</b> <span class=
+"c2"><tt>cc_hash_table</tt></span> &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Assignment operator.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ swap
+ (<span class=
+"c2"><tt>cc_hash_table</tt></span> &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Swaps content.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link7" id="link7">Policy Access Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#comb_hash_fn1883611199"><tt>comb_hash_fn</tt></a> &amp;
+ get_comb_hash_fn
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Access to the <a href=
+ "#comb_hash_fn1883611199"><tt>comb_hash_fn</tt></a>
+ object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>const</b> <a href=
+"#comb_hash_fn1883611199"><tt>comb_hash_fn</tt></a> &amp;
+ get_comb_hash_fn
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Const access to the <a href=
+ "#comb_hash_fn1883611199"><tt>comb_hash_fn</tt></a>
+ object.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_tag.html
new file mode 100644
index 000000000..1923e20fb
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_tag.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>cc_hash_tag Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>cc_hash_tag</tt> Interface</h1>
+
+ <p>Collision-chaining hash data structure tag.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Base Classes</a></h2>
+
+ <table class="c1" width="100%" border="1" summary="Bases">
+ <tr>
+ <td width="80%" align="left"><b>Class</b></td>
+
+ <td width="20%" align="left"><b>Derivation Type</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="basic_hash_tag.html"><span class=
+"c2"><tt>basic_hash_tag</tt></span></a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/ccgp_hash_random_int_subscript_timing_test_insert_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/ccgp_hash_random_int_subscript_timing_test_insert_gcc.png
new file mode 100644
index 000000000..fde6b41bf
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/ccgp_hash_random_int_subscript_timing_test_insert_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/ccgp_hash_random_int_subscript_timing_test_insert_local.png b/libstdc++-v3/doc/html/ext/pb_ds/ccgp_hash_random_int_subscript_timing_test_insert_local.png
new file mode 100644
index 000000000..2449e1de3
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/ccgp_hash_random_int_subscript_timing_test_insert_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/ccgp_hash_random_int_subscript_timing_test_insert_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/ccgp_hash_random_int_subscript_timing_test_insert_msvc.png
new file mode 100644
index 000000000..11dca77fc
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/ccgp_hash_random_int_subscript_timing_test_insert_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/checked_by_tidy.gif b/libstdc++-v3/doc/html/ext/pb_ds/checked_by_tidy.gif
new file mode 100644
index 000000000..47c2c4859
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/checked_by_tidy.gif
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/concepts.html b/libstdc++-v3/doc/html/ext/pb_ds/concepts.html
new file mode 100644
index 000000000..9f6c22462
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/concepts.html
@@ -0,0 +1,118 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>Concepts</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1>Concepts</h1>
+
+ <h2><a name="concepts_find_and_range_iterators" id=
+ "concepts_find_and_range_iterators">Point and Range Methods and
+ Iterators</a></h2>
+
+ <p>A point-type iterator is an iterator that refers to a
+ specific element, <i>e.g.</i> as returned through an
+ associative-container's <tt>find</tt> method; a range-type
+ iterator is an iterator that is used to go over a sequence of
+ elements, <i>e.g.</i>, as returned by a container's
+ <tt>find</tt> method. A point-type method is a method that
+ returns a point-type iterator; a range-type method is a method
+ that returns a range-type iterator.</p>
+
+ <p>For most containers, these types are synonymous; for
+ self-organizing containers, such as hash-based containers or
+ priority queues, these are inherently different (in any
+ implementation, including that of the STL), but in
+ <tt>pb_ds</tt> this is made explicit - they are distinct
+ types.</p>
+
+
+ <h2><a name="invalidation_guarantees" id=
+ "invalidation_guarantees">Invalidation Guarantees</a></h2>
+
+ <p>If one manipulates a container object, then iterators
+ previously obtained from it can be invalidated. In some cases a
+ previously-obtained iterator cannot be de-referenced; in other
+ cases, the iterator's next or previous element might have
+ changed unpredictably. This corresponds exactly to the question
+ whether a point-type or range-type iterator (see previous
+ concept) is valid or not. In <tt>pb_ds</tt> one can query a
+ container (in compile time) what are its invalidation
+ guarantees.</p>
+
+ <h2><a name="prm_sec" id="prm_sec">Primary and Secondary Keys
+ and Associative Containers</a></h2>
+
+ <p>In <tt>pb_ds</tt> there are no associative containers which
+ allow multiple values with equivalent keys (such as the STL's
+ <tt>std::multimap</tt>, for example). Instead, one maps the
+ unique part of a key - the primary key, into an
+ associative-container of the (originally) non-unique parts of
+ the key - the secondary key. A primary associative-container is
+ an associative container of primary keys; a secondary
+ associative-container is an associative container of secondary
+ keys.</p>
+
+
+ <h2><a name="concepts_null_policies" id=
+ "concepts_null_policies">Null Policy Classes</a></h2>
+
+ <p>Associative containers are typically parametrized by
+ various policies. For example, a hash-based associative
+ container is parametrized by a hash-functor, transforming each
+ key into an non-negative numerical type. Each such value is
+ then further mapped into a position within the table. The
+ mapping of a key into a position within the table is therefore
+ a two-step process.</p>
+
+ <p>In some cases, instantiations are <i>redundant</i>. For
+ example, when the keys are integers, it is possible to use a
+ <i>redundant</i> hash policy, which transforms each key into
+ its value.</p>
+
+ <p>In some other cases, these policies are <i>irrelevant</i>.
+ For example, a hash-based associative container might transform
+ keys into positions within a table by a different method than
+ the two-step method described above. In such a case, the hash
+ functor is simply irrelevant.</p>
+
+ <p><tt>pb_ds</tt> uses special pre-defined "null policies"
+ classes for these cases. Some null policies in <tt>pb_ds</tt>
+ are:</p>
+
+ <ol>
+ <li><a href=
+ "null_mapped_type.html"><tt>null_mapped_type</tt></a></li>
+
+ <li><a href=
+ "null_tree_node_update.html"><tt>null_tree_node_update</tt></a></li>
+
+ <li><a href=
+ "null_trie_node_update.html"><tt>null_trie_node_update</tt></a></li>
+
+ <li><a href=
+ "null_hash_fn.html"><tt>null_hash_fn</tt></a></li>
+
+ <li><a href=
+ "null_probe_fn.html"><tt>null_probe_fn</tt></a></li>
+ </ol>
+
+ <p>A "set" in <tt>pb_ds</tt>, for example, is an associative
+ container with its <tt>Data_Parameter</tt> instantiated by
+ <a href="null_mapped_type.html"><tt>null_mapped_type</tt></a>.
+ <a href=
+ "tree_based_containers.html#invariants">Design::Tree-Based
+ Containers::Node Invariants</a> explains another case where a
+ null policy is needed.</p>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/contact.html b/libstdc++-v3/doc/html/ext/pb_ds/contact.html
new file mode 100644
index 000000000..3d506c975
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/contact.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>Contact</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1>Contact</h1>
+
+ <p>For anything relevant, please write to <a href=
+ "mailto:pbassoc@gmail.com">pbassoc@gmail.com</a></p>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/container_base.html b/libstdc++-v3/doc/html/ext/pb_ds/container_base.html
new file mode 100644
index 000000000..359e02459
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/container_base.html
@@ -0,0 +1,1063 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>container_base Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>container_base</tt> Interface</h1>
+
+ <p>An abstract basic associative container.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/assoc_container.hpp"><tt>assoc_container.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Template Parameters</a></h2>
+
+ <table class="c1" width="100%" border="1" summary=
+ "Template Parameters">
+ <tr>
+ <td width="20%" align="left"><b>Parameter</b></td>
+
+ <td width="50%" align="left"><b>Description</b></td>
+
+ <td width="30%" align="left"><b>Default Value</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Key2501" id="Key2501"><b>typename</b> Key</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Key type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Mapped318655" id="Mapped318655"><b>typename</b> Mapped</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Mapped type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Tag278938" id="Tag278938"><b>class</b> Tag</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Data structure tag.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Policy_Tl42017403" id=
+"Policy_Tl42017403"><b>class</b> Policy_Tl</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Policy typelist.</p>
+
+ <p>Contains subclasses' policies.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Allocator35940069" id=
+"Allocator35940069"><b>class</b> Allocator</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Allocator type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+ </table>
+
+ <h2><a name="link2" id="link2">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link3" id="link3">General Container
+ Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="size_type55424436" id="size_type55424436">size_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#Allocator35940069"><tt>Allocator</tt></a>::size_type
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="difference_type868028452" id=
+"difference_type868028452">difference_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#Allocator35940069"><tt>Allocator</tt></a>::difference_type
+</pre>
+ </td>
+
+ <td>
+ <p>Difference type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link4" id="link4">Categories</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="container_category1247973216" id=
+"container_category1247973216">container_category</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Tag278938"><tt>Tag</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>The underlying mapped-structure tag of the
+ container.</p>
+
+ <p>This is one of:</p>
+
+ <ol>
+ <li><a href="cc_hash_tag.html"><span class=
+ "c2"><tt>cc_hash_tag</tt></span></a></li>
+
+ <li><a href="gp_hash_tag.html"><span class=
+ "c2"><tt>gp_hash_tag</tt></span></a></li>
+
+ <li><a href="rb_tree_tag.html"><span class=
+ "c2"><tt>rb_tree_tag</tt></span></a></li>
+
+ <li><a href="ov_tree_tag.html"><span class=
+ "c2"><tt>ov_tree_tag</tt></span></a></li>
+
+ <li><a href="splay_tree_tag.html"><span class=
+ "c2"><tt>splay_tree_tag</tt></span></a></li>
+
+ <li><a href="pat_trie_tag.html"><span class=
+ "c2"><tt>pat_trie_tag</tt></span></a></li>
+
+ <li><a href="list_update_tag.html"><span class=
+ "c2"><tt>list_update_tag</tt></span></a></li>
+ </ol>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link5" id="link5">Policy Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="allocator48440069" id="allocator48440069">allocator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Allocator35940069"><tt>Allocator</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p><a href="#Allocator35940069"><tt>Allocator</tt></a>
+ type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link6" id="link6">Key-Type Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="key_type10393186" id="key_type10393186">key_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind&lt;
+ <a href="#Key2501"><tt>Key</tt></a>&gt;::other::value_type
+</pre>
+ </td>
+
+ <td>
+ <p><a href="#Key2501"><tt>Key</tt></a> type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="key_reference2411522399" id=
+"key_reference2411522399">key_reference</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind&lt;
+ <a href=
+"#key_type10393186"><tt>key_type</tt></a>&gt;::other::reference
+</pre>
+ </td>
+
+ <td>
+ <p><a href="#Key2501"><tt>Key</tt></a> reference
+ type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_key_reference3185471705" id=
+"const_key_reference3185471705">const_key_reference</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind&lt;
+ <a href=
+"#key_type10393186"><tt>key_type</tt></a>&gt;::other::const_reference
+</pre>
+ </td>
+
+ <td>
+ <p>Const key reference type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="key_pointer1299054769" id=
+"key_pointer1299054769">key_pointer</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind&lt;
+ <a href=
+"#key_type10393186"><tt>key_type</tt></a>&gt;::other::pointer
+</pre>
+ </td>
+
+ <td>
+ <p><a href="#Key2501"><tt>Key</tt></a> pointer type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_key_pointer3735194427" id=
+"const_key_pointer3735194427">const_key_pointer</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind&lt;
+ <a href=
+"#key_type10393186"><tt>key_type</tt></a>&gt;::other::const_pointer
+</pre>
+ </td>
+
+ <td>
+ <p>Const key pointer type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link7" id="link7">Mapped-Type Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="mapped_type1308374436" id=
+"mapped_type1308374436">mapped_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Mapped318655"><tt>Mapped</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p><a href="#Mapped318655"><tt>Mapped</tt></a> type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="mapped_reference4153801225" id=
+"mapped_reference4153801225">mapped_reference</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind&lt;
+ <a href=
+"#mapped_type1308374436"><tt>mapped_type</tt></a>&gt;::other::reference
+</pre>
+ </td>
+
+ <td>
+ <p><a href="#Mapped318655"><tt>Mapped</tt></a> reference
+ type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_mapped_reference2113216667" id=
+"const_mapped_reference2113216667">const_mapped_reference</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind&lt;
+ <a href=
+"#mapped_type1308374436"><tt>mapped_type</tt></a>&gt;::other::const_reference
+</pre>
+ </td>
+
+ <td>
+ <p>Const mapped reference type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="mapped_pointer337953771" id=
+"mapped_pointer337953771">mapped_pointer</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind&lt;
+ <a href=
+"#mapped_type1308374436"><tt>mapped_type</tt></a>&gt;::other::pointer
+</pre>
+ </td>
+
+ <td>
+ <p><a href="#Mapped318655"><tt>Mapped</tt></a> pointer
+ type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_mapped_pointer4207700301" id=
+"const_mapped_pointer4207700301">const_mapped_pointer</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind&lt;
+ <a href=
+"#mapped_type1308374436"><tt>mapped_type</tt></a>&gt;::other::const_pointer
+</pre>
+ </td>
+
+ <td>
+ <p>Const mapped pointer type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link8" id="link8">Value-Type Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="value_type279018186" id=
+"value_type279018186">value_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<br />
+If <a href="#Mapped318655"><tt>Mapped</tt></a> is <a href=
+"null_mapped_type.html"><span class=
+"c2"><tt>null_mapped_type</tt></span></a>, then <a href=
+"#Key2501"><tt>Key</tt></a><br />
+Otherwise, <a href="#Mapped318655"><tt>Mapped</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Value type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="reference54418471" id="reference54418471">reference</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind&lt;
+ <a href=
+"#value_type279018186"><tt>value_type</tt></a>&gt;::other::reference
+</pre>
+ </td>
+
+ <td>
+ <p>Value reference type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_reference495461441" id=
+"const_reference495461441">const_reference</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind&lt;
+ <a href=
+"#value_type279018186"><tt>value_type</tt></a>&gt;::other::const_reference
+</pre>
+ </td>
+
+ <td>
+ <p>Const value <a href=
+ "#reference54418471"><tt>reference</tt></a> type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="pointer2179769" id="pointer2179769">pointer</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind&lt;
+ <a href=
+"#value_type279018186"><tt>value_type</tt></a>&gt;::other::pointer
+</pre>
+ </td>
+
+ <td>
+ <p>Value pointer type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_pointer878814947" id=
+"const_pointer878814947">const_pointer</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind&lt;
+ <a href=
+"#value_type279018186"><tt>value_type</tt></a>&gt;::other::const_pointer
+</pre>
+ </td>
+
+ <td>
+ <p>Const Value <a href=
+ "#pointer2179769"><tt>pointer</tt></a> type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link9" id="link9">Iterator Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_point_iterator2364676009" id=
+"const_point_iterator2364676009">const_point_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+Const point-type iterator.
+</pre>
+ </td>
+
+ <td>
+ <p>Const point-type iterator.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="point_iterator2789896775" id=
+"point_iterator2789896775">point_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<br />
+Point-type iterator.<br />
+If <a href="#Mapped318655"><tt>Mapped</tt></a> is <a href=
+"null_mapped_type.html"><span class=
+"c2"><tt>null_mapped_type</tt></span></a>, then this is synonymous to <a href="#const_point_iterator2364676009"><tt>const_point_iterator</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Point-type iterator.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_iterator98626788" id=
+"const_iterator98626788">const_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+Const range-type iterator.
+</pre>
+ </td>
+
+ <td>
+ <p>Const range-type iterator.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="iterator10418194" id="iterator10418194">iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<br />
+Range-type iterator.<br />
+If <a href="#Mapped318655"><tt>Mapped</tt></a> is <a href=
+"null_mapped_type.html"><span class=
+"c2"><tt>null_mapped_type</tt></span></a>, then this is synonymous to <a href="#const_iterator98626788"><tt>const_iterator</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Range-type iterator.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link10" id="link10">Public Methods</a></h2>
+
+ <h3><a name="link11" id="link11">Constructors, Destructor, and
+ Related</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b>
+ ~container_base
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Destructor.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link12" id="link12">Information Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a>
+ size
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the number of distinct <a href=
+ "#value_type279018186"><tt>value_type</tt></a> objects
+ the container object is storing.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a>
+ max_size
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns an upper bound on the number of distinct
+ <a href="#value_type279018186"><tt>value_type</tt></a>
+ objects this container can store.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>bool</b>
+ empty
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns whether the container object is not storing
+ any <a href=
+ "#value_type279018186"><tt>value_type</tt></a>
+ objects.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link13" id="link13">Insert Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+std::pair&lt;<a href=
+"#point_iterator2789896775"><tt>point_iterator</tt></a>, <b>bool</b>&gt;
+ insert
+ (<a href=
+"#const_reference495461441"><tt>const_reference</tt></a> r_val)
+</pre>
+ </td>
+
+ <td>
+ <p>Inserts a <a href=
+ "#value_type279018186"><tt>value_type</tt></a> object. If
+ no <a href="#value_type279018186"><tt>value_type</tt></a>
+ with <span class="c1"><tt>r_val</tt></span>'s key was in
+ the container object, inserts and returns (<a href=
+ "#point_iterator2789896775"><tt>point_iterator</tt></a>
+ object associated with <span class=
+ "c1"><tt>r_val</tt></span>, <tt><b>true</b></tt>);
+ otherwise just returns (<a href=
+ "#point_iterator2789896775"><tt>point_iterator</tt></a>
+ object associated with <span class=
+ "c1"><tt>r_val</tt></span>'s key,
+ <tt><b>false</b></tt>).</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#mapped_reference4153801225"><tt>mapped_reference</tt></a>
+ <b>operator</b>[]
+ (<a href=
+"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key)
+</pre>
+ </td>
+
+ <td>
+ <p>Subscript operator.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link14" id="link14">Find Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#point_iterator2789896775"><tt>point_iterator</tt></a>
+ find
+ (<a href=
+"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key)
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the <a href=
+ "#point_iterator2789896775"><tt>point_iterator</tt></a>
+ corresponding to the <a href=
+ "#value_type279018186"><tt>value_type</tt></a> with
+ <span class="c1"><tt>r_key</tt></span> as its key, or the
+ <a href=
+ "#point_iterator2789896775"><tt>point_iterator</tt></a>
+ corresponding to the just-after-last entry if no such
+ <a href=
+ "#value_type279018186"><tt>value_type</tt></a>.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href=
+"#const_point_iterator2364676009"><tt>const_point_iterator</tt></a>
+ find
+ (<a href=
+"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the <a href=
+ "#const_point_iterator2364676009"><tt>const_point_iterator</tt></a>
+ corresponding to the <a href=
+ "#value_type279018186"><tt>value_type</tt></a> with
+ <span class="c1"><tt>r_key</tt></span> as its key, or the
+ <a href=
+ "#const_point_iterator2364676009"><tt>const_point_iterator</tt></a>
+ corresponding to the just-after-last entry if no such
+ <a href=
+ "#value_type279018186"><tt>value_type</tt></a>.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link15" id="link15">Erase Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>bool</b>
+ erase
+ (<a href=
+"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key)
+</pre>
+ </td>
+
+ <td>
+ <p>Erases the <a href=
+ "#value_type279018186"><tt>value_type</tt></a> associated
+ with <span class="c1"><tt>r_key</tt></span>. returns
+ <tt><b>false</b></tt> iff <span class=
+ "c1"><tt>r_key</tt></span> was not contained.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>template</b>&lt;
+ <b>class</b> Pred&gt;
+<a href="#size_type55424436"><tt>size_type</tt></a>
+ erase_if
+ (Pred prd)
+</pre>
+ </td>
+
+ <td>
+ <p>Erases any <a href=
+ "#value_type279018186"><tt>value_type</tt></a> satisfying
+ the predicate <span class="c1"><tt>prd</tt></span> (this
+ is transactional, either all matching <a href=
+ "#value_type279018186"><tt>value_type</tt></a>s are
+ erased, or, if an exception is thrown (for types whose
+ erase can throw an exception) none); returns the number
+ of <a href=
+ "#value_type279018186"><tt>value_type</tt></a>s
+ erased.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ clear
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Clears the container object.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link16" id="link16">Iteration Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#iterator10418194"><tt>iterator</tt></a>
+ begin
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Returns an <a href=
+ "#iterator10418194"><tt>iterator</tt></a> corresponding
+ to the first <a href=
+ "#value_type279018186"><tt>value_type</tt></a> in the
+ container.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#const_iterator98626788"><tt>const_iterator</tt></a>
+ begin
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns a <a href=
+ "#const_iterator98626788"><tt>const_iterator</tt></a>
+ corresponding to the first <a href=
+ "#value_type279018186"><tt>value_type</tt></a> in the
+ container.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#iterator10418194"><tt>iterator</tt></a>
+ end
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Returns an <a href=
+ "#iterator10418194"><tt>iterator</tt></a> corresponding
+ to the just-after-last <a href=
+ "#value_type279018186"><tt>value_type</tt></a> in the
+ container.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#const_iterator98626788"><tt>const_iterator</tt></a>
+ end
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns a <a href=
+ "#const_iterator98626788"><tt>const_iterator</tt></a>
+ corresponding to the just-after-last <a href=
+ "#value_type279018186"><tt>value_type</tt></a> in the
+ container.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/container_cd.png b/libstdc++-v3/doc/html/ext/pb_ds/container_cd.png
new file mode 100644
index 000000000..52553278c
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/container_cd.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/container_cd.svg b/libstdc++-v3/doc/html/ext/pb_ds/container_cd.svg
new file mode 100644
index 000000000..3b5a98189
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/container_cd.svg
@@ -0,0 +1,418 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="11in"
+ height="8.5in"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.43"
+ version="1.0"
+ sodipodi:docbase="/mnt/share/src/policy_based_data_structures/current/pb_ds/doc"
+ sodipodi:docname="container_cd.svg"
+ inkscape:export-filename="/mnt/share/src/policy_based_data_structures/current/pb_ds/doc/container_cd.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow1Mstart"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow1Mstart"
+ style="overflow:visible">
+ <path
+ id="path3311"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
+ transform="scale(0.4)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Sstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Sstart"
+ style="overflow:visible">
+ <path
+ id="path3319"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="matrix(0.3,0,0,0.3,-1.5,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Sstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Sstart"
+ style="overflow:visible">
+ <path
+ id="path3337"
+ d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="scale(0.2,0.2)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Send"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Send"
+ style="overflow:visible">
+ <path
+ id="path3316"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="matrix(-0.3,0,0,-0.3,1.5,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Mend"
+ style="overflow:visible">
+ <path
+ id="path3322"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="matrix(-0.6,0,0,-0.6,3,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path3346"
+ d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="scale(-0.8,-0.8)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lstart"
+ style="overflow:visible">
+ <path
+ id="path3331"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="matrix(1.1,0,0,1.1,-5.5,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path3328"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="matrix(-1.1,0,0,-1.1,5.5,0)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2"
+ inkscape:cx="396.81316"
+ inkscape:cy="280"
+ inkscape:document-units="in"
+ inkscape:current-layer="layer1"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="1278"
+ inkscape:window-height="973"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ gridtolerance="0.125in"
+ guidetolerance="0.125in">
+ <sodipodi:guide
+ orientation="horizontal"
+ position="629"
+ id="guide1307" />
+ <sodipodi:guide
+ orientation="horizontal"
+ position="449"
+ id="guide1309" />
+ <sodipodi:guide
+ orientation="horizontal"
+ position="269"
+ id="guide1311" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="496"
+ id="guide1313" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="361"
+ id="guide1315" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="226"
+ id="guide1317" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="631"
+ id="guide1319" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="766"
+ id="guide1321" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="91"
+ id="guide1345" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="901"
+ id="guide1347" />
+ <sodipodi:guide
+ orientation="horizontal"
+ position="539"
+ id="guide3390" />
+ <sodipodi:guide
+ orientation="horizontal"
+ position="359"
+ id="guide3392" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="280.5"
+ id="guide3324" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="172"
+ id="guide3326" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="388"
+ id="guide3328" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="711.5"
+ id="guide3340" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Benjamin Kosnik</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect1425"
+ width="141.64481"
+ height="23.200001"
+ x="209.57762"
+ y="382.56177" />
+ <rect
+ y="382.56177"
+ x="425.57761"
+ height="23.200001"
+ width="141.64481"
+ id="rect3376"
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3378"
+ width="141.64481"
+ height="23.200001"
+ x="640.77765"
+ y="382.56177" />
+ <text
+ sodipodi:linespacing="100%"
+ id="use1329"
+ y="397.09772"
+ x="497.20001"
+ style="font-size:9.60000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ sodipodi:role="line"
+ id="tspan1703"
+ x="497.20001"
+ y="397.09772">list_update</tspan><tspan
+ sodipodi:role="line"
+ id="tspan1705"
+ x="497.20001"
+ y="406.69772" /></text>
+ <text
+ xml:space="preserve"
+ style="font-size:9.60000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="712.40002"
+ y="397.09772"
+ id="use1337"
+ sodipodi:linespacing="100%"><tspan
+ sodipodi:role="line"
+ id="tspan1707"
+ x="712.40002"
+ y="397.09772">basic_hash_table</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:9.60000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="282"
+ y="397.09772"
+ id="text1339"
+ sodipodi:linespacing="100%"><tspan
+ sodipodi:role="line"
+ id="tspan1701"
+ x="282"
+ y="397.09772">basic_tree</tspan></text>
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3418"
+ width="141.64481"
+ height="23.200001"
+ x="101.57762"
+ y="472.5618" />
+ <rect
+ y="472.5618"
+ x="317.57761"
+ height="23.200001"
+ width="141.64481"
+ id="rect3420"
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3422"
+ width="141.64481"
+ height="23.200001"
+ x="533.57764"
+ y="472.5618" />
+ <rect
+ y="472.5618"
+ x="748.77765"
+ height="23.200001"
+ width="141.64481"
+ id="rect3424"
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ xml:space="preserve"
+ style="font-size:9.60000038;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="171.20001"
+ y="486.29773"
+ id="text3394"
+ sodipodi:linespacing="100%"><tspan
+ sodipodi:role="line"
+ id="tspan1715"
+ x="171.20001"
+ y="486.29773">tree</tspan><tspan
+ sodipodi:role="line"
+ id="tspan1717"
+ x="171.20001"
+ y="495.89773" /></text>
+ <text
+ sodipodi:linespacing="100%"
+ id="text3400"
+ y="486.29773"
+ x="386.39999"
+ style="font-size:9.60000038;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ sodipodi:role="line"
+ id="tspan1709"
+ x="386.39999"
+ y="486.29773">trie</tspan><tspan
+ sodipodi:role="line"
+ id="tspan1711"
+ x="386.39999"
+ y="495.89773" /></text>
+ <text
+ sodipodi:linespacing="100%"
+ id="text3406"
+ y="486.29773"
+ x="601.20001"
+ style="font-size:9.60000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ sodipodi:role="line"
+ id="tspan1713"
+ x="601.20001"
+ y="486.29773">cc_hash_table</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:9.60000038;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="818"
+ y="486.29773"
+ id="text3412"
+ sodipodi:linespacing="100%"><tspan
+ sodipodi:role="line"
+ id="tspan1719"
+ x="818"
+ y="486.29773">gp_hash_table</tspan></text>
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3380"
+ width="141.64481"
+ height="23.200001"
+ x="425.57764"
+ y="292.56177" />
+ <text
+ xml:space="preserve"
+ style="font-size:9.60000038;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="497.20001"
+ y="307.09772"
+ id="text1323"
+ sodipodi:linespacing="100%"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ inkscape:export-filename="/mnt/share/src/policy_based_data_structures/pb_ds_images/container_diagram.png"><tspan
+ sodipodi:role="line"
+ id="tspan1369"
+ x="497.20001"
+ y="307.09772">container_base</tspan></text>
+ <path
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.97031623px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 170.97058,472.5 L 170.97058,451 L 387.51871,450 L 387.51871,472.5"
+ id="path2244" />
+ <path
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 280.5,450.53297 L 280.5,410.62445"
+ id="path3332" />
+ <path
+ id="path3353"
+ d="M 601.47058,472.5 L 601.47058,451 L 818.01871,450 L 818.01871,472.5"
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.97031623px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path3355"
+ d="M 711,450.53297 L 711,410.62445"
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path3344"
+ d="M 281.18218,383.28102 L 281.18218,361.78102 L 711.79281,360.78102 L 711.79281,383.28102"
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.3682909px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path3347"
+ d="M 497.75146,383.49616 L 497.75146,322.77107"
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+</svg>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/container_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/container_tag.html
new file mode 100644
index 000000000..de187a94d
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/container_tag.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>container _tag Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>container _tag</tt> Interface</h1>
+
+ <p>Basic data structure tag.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/counter_lu_policy.html b/libstdc++-v3/doc/html/ext/pb_ds/counter_lu_policy.html
new file mode 100644
index 000000000..d9d5112c0
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/counter_lu_policy.html
@@ -0,0 +1,259 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>counter_lu_policy Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>counter_lu_policy</tt> Interface</h1>
+
+ <p>A list-update policy that moves elements to the front of the
+ list based on the counter algorithm.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/list_update_policy.hpp"><tt>list_update_policy.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Template Parameters</a></h2>
+
+ <table class="c1" width="100%" border="1" summary=
+ "Template Parameters">
+ <tr>
+ <td width="20%" align="left"><b>Parameter</b></td>
+
+ <td width="50%" align="left"><b>Description</b></td>
+
+ <td width="30%" align="left"><b>Default Value</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Max_Count39887466" id=
+"Max_Count39887466">size_t Max_Count </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Maximum count.</p>
+
+ <p>When some element is accessed this number of times, it
+ will be moved to the front of the list.</p>
+ </td>
+
+ <td>5</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Allocator35940069" id=
+"Allocator35940069"><b>class</b> Allocator </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Allocator type.</p>
+
+ <p>This is used only for definitions, e.g., the size
+ type.</p>
+ </td>
+
+ <td>
+ <pre>
+std::allocator&lt;<b>char</b>&gt;
+</pre>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link2" id="link2">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link3" id="link3">Policy Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="allocator48440069" id="allocator48440069">allocator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Allocator35940069"><tt>Allocator</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p><a href="#Allocator35940069"><tt>Allocator</tt></a>
+ type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="max_count52407466" id="max_count52407466">max_count</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Max_Count39887466"><tt>Max_Count</tt></a>
+}
+</pre>
+ </td>
+
+ <td>
+ <p>Maximum count.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link4" id="link4">General Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="size_type55424436" id="size_type55424436">size_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#allocator48440069"><tt>allocator</tt></a>::size_type
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link5" id="link5">Metadata-Type
+ Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="metadata_type2849297114" id=
+"metadata_type2849297114">metadata_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+Some class containing a counter.
+</pre>
+ </td>
+
+ <td>
+ <p>Metadata on which this functor operates.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="metadata_reference583863863" id=
+"metadata_reference583863863">metadata_reference</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#Allocator35940069"><tt>Allocator</tt></a>::<b>template</b> rebind&lt;
+ <a href=
+"#metadata_type2849297114"><tt>metadata_type</tt></a>&gt;::other::reference
+</pre>
+ </td>
+
+ <td>
+ <p>Reference to metadata on which this functor
+ operates.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link6" id="link6">Public Methods</a></h2>
+
+ <h3><a name="link7" id="link7">Metadata Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#metadata_type2849297114"><tt>metadata_type</tt></a>
+ <b>operator</b>()
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Creates a metadata object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>bool</b>
+ <b>operator</b>()
+ (<a href=
+"#metadata_reference583863863"><tt>metadata_reference</tt></a> r_metadata) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Decides whether a metadata object should be moved to
+ the front of the list.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/design.html b/libstdc++-v3/doc/html/ext/pb_ds/design.html
new file mode 100644
index 000000000..e83bd4dd2
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/design.html
@@ -0,0 +1,96 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>Design</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1>Design</h1>
+
+ <p>The <tt>pb_ds</tt> namespace contains:</p>
+
+ <ol>
+ <li>Exception classes (see <a href=
+ "interface.html#exceptions_common">Interface::Exceptions::Common</a>)</li>
+
+ <li>Invalidation-guarantee tags (see <a href=
+ "ds_gen.html#inv_guar">Design::Invalidation Guarantees</a>
+ and <a href=
+ "interface.html#ds_inv_tag">Interface::Data-Structure Tags
+ and Traits::Invalidation-Guarantee Tags</a>).</li>
+
+ <li>Associative Containers (see <a href=
+ "tree_based_containers.html">Design::Associative
+ Containers::Tree-Based Containers</a>, <a href=
+ "trie_based_containers.html">Design::Associative
+ Containers::Trie-Based Containers</a>, <a href=
+ "hash_based_containers.html">Design::Associative
+ Containers::Hash-Based Containers</a>, and <a href=
+ "lu_based_containers.html">Design::Associative
+ Containers::List-Based Containers</a>, and <a href=
+ "interface.html#containers_assoc">Interface::Containers::Associative
+ Containers</a>).</li>
+
+ <li>Associative Container tags and traits
+ (see <a href="ds_gen.html">Design::Associative
+ Containers::Data-Structure Genericity</a>, <a href=
+ "interface.html#ds_ts_assoc">Interface::Data-Structure Tags
+ and Traits::Data-Structure Tags::Associative-Containers</a>,
+ and <a href=
+ "interface.html#container_traits">Interface::Data-Structure Tags and
+ Traits::Data-Structure
+ Traits::Associative-Containers</a>).</li>
+
+ <li>Associative Container policies (see
+ <a href="tree_based_containers.html">Design::Associative
+ Containers::Tree-Based Containers</a>, <a href=
+ "trie_based_containers.html">Design::Associative
+ Containers::Trie-Based Containers</a>, <a href=
+ "hash_based_containers.html">Design::Associative
+ Containers::Hash-Based Containers</a>, and <a href=
+ "lu_based_containers.html">Design::Associative
+ Containers::List-Based Containers</a>, and <a href=
+ "interface.html#ds_policy_classes">Interface::Container
+ Policy Classes</a>).</li>
+
+
+ <li>Mapped types for setting the mapping semantics of
+ associative containers (see <a href=
+ "tutorial.html#assoc_ms">Tutorial::Associative
+ Containers::Associative Containers Others than Maps</a> and
+ <a href="interface.html#ds_pol">Interface::Mapped-Type
+ Policies</a>).</li>
+
+
+ <li>Priority Queues (see <a href="pq_design.html">Design::Priority
+ Queues</a> and <a href=
+ "interface.html#containers_pq">Interface::Containers::Priority
+ Queues</a>).</li>
+
+ <li>Priority Queue tags and traits
+ (see <a href="pq_design.html#pq_traits">Design::Priority
+ Queues::Traits</a>, <a href=
+ "interface.html#ds_ts_pq">Interface::Data-Structure Tags and
+ Traits::Data-Structure Tags::Priority Queues</a>, and
+ <a href="interface.html#container_traits">Interface::Data-Structure
+ Tags and Traits::Data-Structure Traits::Priority
+ Queues</a>).</li>
+ </ol>
+
+
+ <p><a href="assoc_design.html">Associative-Container Design</a>
+ describes associative-container design.</p>
+
+ <p><a href="pq_design.html">Priority-Queue Design</a> describes
+ priority-queue design.</p>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/different_underlying_dss.png b/libstdc++-v3/doc/html/ext/pb_ds/different_underlying_dss.png
new file mode 100644
index 000000000..adee12636
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/different_underlying_dss.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/direct_mask_range_hashing.html b/libstdc++-v3/doc/html/ext/pb_ds/direct_mask_range_hashing.html
new file mode 100644
index 000000000..19f8621c2
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/direct_mask_range_hashing.html
@@ -0,0 +1,167 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>direct_mask_range_hashing Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>direct_mask_range_hashing</tt> Interface</h1>
+
+ <p>A mask range-hashing class (uses a bit-mask).</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/hash_policy.hpp"><tt>hash_policy.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Template Parameters</a></h2>
+
+ <table class="c1" width="100%" border="1" summary=
+ "Template Parameters">
+ <tr>
+ <td width="20%" align="left"><b>Parameter</b></td>
+
+ <td width="50%" align="left"><b>Description</b></td>
+
+ <td width="30%" align="left"><b>Default Value</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Size_Type42920436" id=
+"Size_Type42920436"><b>typename</b> Size_Type </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+
+ <td>size_t</td>
+ </tr>
+ </table>
+
+ <h2><a name="link2" id="link2">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link3" id="link3">General Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="size_type55424436" id="size_type55424436">size_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Size_Type42920436"><tt>Size_Type</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link4" id="link4">Public Methods</a></h2>
+
+ <h3><a name="link5" id="link5">Constructors, Destructor, and
+ Related</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ swap
+ (<span class=
+"c2"><tt>direct_mask_range_hashing</tt></span> &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Swaps content.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link6" id="link6">Protected Methods</a></h2>
+
+ <h3><a name="link7" id="link7">Notification Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ notify_resized
+ (<a href="#size_type55424436"><tt>size_type</tt></a> size)
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies the policy object that the container's size
+ has changed to <span class="c1"><tt>size</tt></span>.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link8" id="link8">Operators.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a>
+ <b>operator</b>()
+ (<a href=
+"#size_type55424436"><tt>size_type</tt></a> hash) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Transforms the hash value <span class=
+ "c1"><tt>hash</tt></span> into a ranged-hash value (using
+ a bit-mask).</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/direct_mod_range_hashing.html b/libstdc++-v3/doc/html/ext/pb_ds/direct_mod_range_hashing.html
new file mode 100644
index 000000000..f3f9295d4
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/direct_mod_range_hashing.html
@@ -0,0 +1,144 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>direct_mod_range_hashing Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>direct_mod_range_hashing</tt> Interface</h1>
+
+ <p>A mod range-hashing class (uses the modulo function).</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/hash_policy.hpp"><tt>hash_policy.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Template Parameters</a></h2>
+
+ <table class="c1" width="100%" border="1" summary=
+ "Template Parameters">
+ <tr>
+ <td width="20%" align="left"><b>Parameter</b></td>
+
+ <td width="50%" align="left"><b>Description</b></td>
+
+ <td width="30%" align="left"><b>Default Value</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Size_Type42920436" id=
+"Size_Type42920436"><b>typename</b> Size_Type </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+
+ <td>size_t</td>
+ </tr>
+ </table>
+
+ <h2><a name="link2" id="link2">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link3" id="link3">General Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="size_type55424436" id="size_type55424436">size_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Size_Type42920436"><tt>Size_Type</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link4" id="link4">Public Methods</a></h2>
+
+ <h3><a name="link5" id="link5">Constructors, Destructor, and
+ Related</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ swap
+ (<span class=
+"c2"><tt>direct_mod_range_hashing</tt></span> &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Swaps content.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link6" id="link6">Protected Methods</a></h2>
+
+ <h3><a name="link7" id="link7">Notification Methods</a></h3>
+
+ <h3><a name="link8" id="link8">Operators.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a>
+ <b>operator</b>()
+ (<a href=
+"#size_type55424436"><tt>size_type</tt></a> hash) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Transforms the hash value <span class=
+ "c1"><tt>hash</tt></span> into a ranged-hash value (using
+ a modulo operation).</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/disclaimer.html b/libstdc++-v3/doc/html/ext/pb_ds/disclaimer.html
new file mode 100644
index 000000000..681af4edf
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/disclaimer.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>What, me worry?</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h2>Disclaimer and Copyright</h2>
+
+ <p>Revised 16 February, 2004</p>&copy; Copyright Ami Tavory and
+ Vladimir Dreizin, IBM-HRL, 2004, and Benjamin Kosnik, Red Hat,
+ 2004.
+
+ <p>Permission to use, copy, modify, sell, and distribute this
+ software is hereby granted without fee, provided that the above
+ copyright notice appears in all copies, and that both that
+ copyright notice and this permission notice appear in
+ supporting documentation.</p>
+
+ <p>None of the above authors, nor IBM Haifa Research
+ Laboratories, Red Hat, or both, make any representation about
+ the suitability of this software for any purpose. It is
+ provided "as is" without express or implied warranty.</p>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/ds_gen.html b/libstdc++-v3/doc/html/ext/pb_ds/ds_gen.html
new file mode 100644
index 000000000..ec99c4d5f
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/ds_gen.html
@@ -0,0 +1,344 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>Data-Structure Genericity</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1>Data-Structure Genericity</h1>
+
+ <h2><a name="problem" id="problem">The Basic Problem</a></h2>
+
+ <p>The design attempts to address the following problem. When
+ writing a function manipulating a generic container object,
+ what is the behavior of the object? <i>E.g.</i>, suppose one
+ writes</p>
+ <pre>
+<b>template</b>&lt;<b>typename</b> Cntnr&gt;
+<b>void</b>
+some_op_sequence(Cntnr &amp;r_container)
+{
+ ...
+}
+</pre>then one needs to address the following questions in the body
+of <tt>some_op_sequence</tt>:
+
+ <ol>
+ <li>Which types and methods does <tt>Cntnr</tt> support?
+ Containers based on hash tables can be queries for the
+ hash-functor type and object; this is meaningless for
+ tree-based containers. Containers based on trees can be
+ split, joined, or can erase iterators and return the
+ following iterator; this cannot be done by hash-based
+ containers.</li>
+
+ <li>What are the guarantees of <tt>Cntnr</tt>? A container
+ based on a probing hash-table invalidates all iterators when
+ it is modified; this is not the case for containers based on
+ node-based trees. Containers based on a node-based tree can
+ be split or joined without exceptions; this is not the case
+ for containers based on vector-based trees.</li>
+
+ <li>How does the container maintain its elements? Tree-based
+ and Trie-based containers store elements by key order;
+ others, typically, do not. A container based on a splay trees
+ or lists with update policies "cache" "frequently accessed"
+ elements; containers based on most other underlying
+ data structures do not.</li>
+ </ol>
+
+ <p>The remainder of this section deals with these issues.</p>
+
+ <h2><a name="ds_hierarchy" id="ds_hierarchy">Container
+ Hierarchy</a></h2>
+
+ <p>Figure <a href="#cd">Container class hierarchy</a> shows the
+ container hierarchy.</p>
+
+ <h6 class="c1"><a name="cd" id="cd"><img src="container_cd.png" alt=
+ "no image" /></a></h6>
+
+ <h6 class="c1">Container class hierarchy.</h6>
+
+ <ol>
+ <li><a href=
+ "container_base.html"><tt>container_base</tt></a> is an
+ abstract base class for associative containers.</li>
+
+ <li>Tree-Like-Based Associative-Containers:
+
+ <ol>
+ <li><a href=
+ "basic_tree.html"><tt>basic_tree</tt></a>
+ is an abstract base class for tree-like-based
+ associative-containers</li>
+
+ <li><a href=
+ "tree.html"><tt>tree</tt></a>
+ is a concrete base class for tree-based
+ associative-containers</li>
+
+ <li><a href=
+ "trie.html"><tt>trie</tt></a>
+ is a concrete base class trie-based
+ associative-containers</li>
+ </ol>
+ </li>
+
+ <li>Hash-Based Associative-Containers:
+
+ <ol>
+ <li><a href=
+ "basic_hash_table.html"><tt>basic_hash_table</tt></a>
+ is an abstract base class for hash-based
+ associative-containers</li>
+
+ <li><a href=
+ "cc_hash_table.html"><tt>cc_hash_table</tt></a>
+ is a concrete collision-chaining hash-based
+ associative-containers</li>
+
+ <li><a href=
+ "gp_hash_table.html"><tt>gp_hash_table</tt></a>
+ is a concrete (general) probing hash-based
+ associative-containers</li>
+ </ol>
+ </li>
+
+ <li>List-Based Associative-Containers:
+
+ <ol>
+ <li><a href=
+ "list_update.html"><tt>list_update</tt></a> -
+ list-based update-policy associative container</li>
+ </ol>
+ </li>
+ </ol>
+
+ <p>The hierarchy is composed naturally so that commonality is
+ captured by base classes. Thus <tt><b>operator[]</b></tt> is
+ defined <a href=
+ "container_base.html"><tt>container_base</tt></a>, since
+ all containers support it. Conversely <tt>split</tt> is defined
+ in <a href=
+ "basic_tree.html"><tt>basic_tree</tt></a>,
+ since only tree-like containers support it. <a href=
+ "#container_traits">Data-Structure Tags and Traits</a> discusses how
+ to query which types and methods each container supports.</p>
+
+ <h2><a name="container_traits" id="container_traits">Data-Structure Tags and
+ Traits</a></h2>
+
+ <p>Tags and traits are very useful for manipulating generic
+ types. For example, if <tt>It</tt> is an iterator class, then
+ <tt><b>typename</b> It::iterator_category</tt> or
+ <tt><b>typename</b>
+ std::iterator_traits&lt;It&gt;::iterator_category</tt> will
+ yield its category, and <tt><b>typename</b>
+ std::iterator_traits&lt;It&gt;::value_type</tt> will yield its
+ value type.</p>
+
+ <p><tt>pb_ds</tt> contains a tag hierarchy corresponding to the
+ hierarchy in Figure <a href="#cd">Class hierarchy</a>. The tag
+ hierarchy is shown in Figure <a href=
+ "#tag_cd">Data-structure tag class hierarchy</a>.</p>
+
+ <h6 class="c1"><a name="tag_cd" id="tag_cd"><img src=
+ "assoc_container_tag_cd.png" alt="no image" /></a></h6>
+
+ <h6 class="c1">Data-structure tag class hierarchy.</h6>
+
+ <p><a href=
+ "container_base.html"><tt>container_base</tt></a>
+ publicly defines <tt>container_category</tt> as one of the classes in
+ Figure <a href="#tag_cd">Data-structure tag class
+ hierarchy</a>. Given any container <tt>Cntnr</tt>, the tag of
+ the underlying data structure can be found via
+ <tt><b>typename</b> Cntnr::container_category</tt>.</p>
+
+ <p>Additionally, a traits mechanism can be used to query a
+ container type for its attributes. Given any container
+ <tt>Cntnr</tt>, then <tt><a href=
+ "assoc_container_traits.html">__gnu_pbds::container_traits</a>&lt;Cntnr&gt;</tt>
+ is a traits class identifying the properties of the
+ container.</p>
+
+ <p>To find if a container can throw when a key is erased (which
+ is true for vector-based trees, for example), one can
+ use</p><a href=
+ "assoc_container_traits.html"><tt>container_traits</tt></a><tt>&lt;Cntnr&gt;::erase_can_throw</tt>,
+ for example.
+
+ <p>Some of the definitions in <a href=
+ "assoc_container_traits.html"><tt>container_traits</tt></a> are
+ dependent on other definitions. <i>E.g.</i>, if <a href=
+ "assoc_container_traits.html"><tt>container_traits</tt></a><tt>&lt;Cntnr&gt;::order_preserving</tt>
+ is <tt><b>true</b></tt> (which is the case for containers based
+ on trees and tries), then the container can be split or joined;
+ in this case, <a href=
+ "assoc_container_traits.html"><tt>container_traits</tt></a><tt>&lt;Cntnr&gt;::split_join_can_throw</tt>
+ indicates whether splits or joins can throw exceptions (which
+ is true for vector-based trees); otherwise <a href=
+ "assoc_container_traits.html"><tt>container_traits</tt></a><tt>&lt;Cntnr&gt;::split_join_can_throw</tt>
+ will yield a compilation error. (This is somewhat similar to a
+ compile-time version of the COM model [<a href=
+ "references.html#mscom">mscom</a>]).</p>
+
+ <h2><a name="find_range" id="find_range">Point-Type and
+ Range-Type Methods and Iterators</a></h2>
+
+ <h3><a name="it_unordered" id="it_unordered">Iterators in
+ Unordered Container Types</a></h3>
+
+ <p><tt>pb_ds</tt> differentiates between two types of methods
+ and iterators: point-type methods and iterators, and range-type
+ methods and iterators (see <a href=
+ "motivation.html#assoc_diff_it">Motivation::Associative
+ Containers::Differentiating between Iterator Types</a> and
+ <a href="tutorial.html#assoc_find_range">Tutorial::Associative
+ Containers::Point-Type and Range-Type Methods and
+ Iterators</a>). Each associative container's interface includes
+ the methods:</p>
+ <pre>
+const_point_iterator
+find(const_key_reference r_key) const;
+
+point_iterator
+find(const_key_reference r_key);
+
+std::pair&lt;point_iterator,<b>bool</b>&gt;
+insert(const_reference r_val);
+</pre>
+
+ <p>The relationship between these iterator types varies between
+ container types. Figure <a href=
+ "#point_iterators_cd">Point-type and range-type iterators</a>-A
+ shows the most general invariant between point-type and
+ range-type iterators: <tt>iterator</tt>, <i>e.g.</i>, can
+ always be converted to <tt>point_iterator</tt>. Figure <a href=
+ "#point_iterators_cd">Point-type and range-type iterators</a>-B
+ shows invariants for order-preserving containers: point-type
+ iterators are synonymous with range-type iterators.
+ Orthogonally, Figure <a href="#point_iterators_cd">Point-type
+ and range-type iterators</a>-C shows invariants for "set"
+ containers: iterators are synonymous with const iterators.</p>
+
+ <h6 class="c1"><a name="point_iterators_cd" id=
+ "point_iterators_cd"><img src="point_iterators_cd.png" alt=
+ "no image" /></a></h6>
+
+ <h6 class="c1">Point-type and range-type iterators.</h6>
+
+ <p>Note that point-type iterators in self-organizing containers
+ (<i>e.g.</i>, hash-based associative containers) lack movement
+ operators, such as <tt><b>operator++</b></tt> - in fact, this
+ is the reason why <tt>pb_ds</tt> differentiates from the STL's
+ design on this point.</p>
+
+ <p>Typically, one can determine an iterator's movement
+ capabilities in the STL using
+ <tt>std::iterator_traits&lt;It&gt;iterator_category</tt>, which
+ is a <tt><b>struct</b></tt> indicating the iterator's movement
+ capabilities. Unfortunately, none of the STL's predefined
+ categories reflect a pointer's <u>not</u> having any movement
+ capabilities whatsoever. Consequently, <tt>pb_ds</tt> adds a
+ type <a href=
+ "trivial_iterator_tag.html"><tt>trivial_iterator_tag</tt></a>
+ (whose name is taken from a concept in [<a href=
+ "references.html#sgi_stl">sgi_stl</a>]), which is the category
+ of iterators with no movement capabilities. All other STL tags,
+ such as <tt>forward_iterator_tag</tt> retain their common
+ use.</p>
+
+ <h3><a name="inv_guar" id="inv_guar">Invalidation
+ Guarantees</a></h3>
+
+ <p><a href=
+ "motivation.html#assoc_inv_guar">Motivation::Associative
+ Containers::Differentiating between Iterator
+ Types::Invalidation Guarantees</a> posed a problem. Given three
+ different types of associative containers, a modifying
+ operation (in that example, <tt>erase</tt>) invalidated
+ iterators in three different ways: the iterator of one
+ container remained completely valid - it could be de-referenced
+ and incremented; the iterator of a different container could
+ not even be de-referenced; the iterator of the third container
+ could be de-referenced, but its "next" iterator changed
+ unpredictably.</p>
+
+ <p>Distinguishing between find and range types allows
+ fine-grained invalidation guarantees, because these questions
+ correspond exactly to the question of whether point-type
+ iterators and range-type iterators are valid. <a href=
+ "#invalidation_guarantee_cd">Invalidation guarantees class
+ hierarchy</a> shows tags corresponding to different types of
+ invalidation guarantees.</p>
+
+ <h6 class="c1"><a name="invalidation_guarantee_cd" id=
+ "invalidation_guarantee_cd"><img src=
+ "invalidation_guarantee_cd.png" alt="no image" /></a></h6>
+
+ <h6 class="c1">Invalidation guarantees class hierarchy.</h6>
+
+ <ol>
+ <li><a href=
+ "basic_invalidation_guarantee.html"><tt>basic_invalidation_guarantee</tt></a>
+ corresponds to a basic guarantee that a point-type iterator,
+ a found pointer, or a found reference, remains valid as long
+ as the container object is not modified.</li>
+
+ <li><a href=
+ "point_invalidation_guarantee.html"><tt>point_invalidation_guarantee</tt></a>
+ corresponds to a guarantee that a point-type iterator, a
+ found pointer, or a found reference, remains valid even if
+ the container object is modified.</li>
+
+ <li><a href=
+ "range_invalidation_guarantee.html"><tt>range_invalidation_guarantee</tt></a>
+ corresponds to a guarantee that a range-type iterator remains
+ valid even if the container object is modified.</li>
+ </ol>
+
+ <p>As shown in <a href=
+ "tutorial.html#assoc_find_range">Tutorial::Associative
+ Containers::Point-Type and Range-Type Methods and
+ Iterators</a>, to find the invalidation guarantee of a
+ container, one can use</p>
+ <pre>
+<b>typename</b> <a href=
+"assoc_container_traits.html">container_traits</a>&lt;Cntnr&gt;::invalidation_guarantee
+</pre>
+
+ <p>which is one of the classes in Figure <a href=
+ "#invalidation_guarantee_cd">Invalidation guarantees class
+ hierarchy</a>.</p>
+
+ <p>Note that this hierarchy corresponds to the logic it
+ represents: if a container has range-invalidation guarantees,
+ then it must also have find invalidation guarantees;
+ correspondingly, its invalidation guarantee (in this case
+ <a href=
+ "range_invalidation_guarantee.html"><tt>range_invalidation_guarantee</tt></a>)
+ can be cast to its base class (in this case <a href=
+ "point_invalidation_guarantee.html"><tt>point_invalidation_guarantee</tt></a>).
+ This means that this this hierarchy can be used easily using
+ standard metaprogramming techniques, by specializing on the
+ type of <tt>invalidation_guarantee</tt>.</p>
+
+ <p>(These types of problems were addressed, in a more general
+ setting, in [<a href=
+ "references.html#meyers96more">meyers96more</a>] - Item 2. In
+ our opinion, an invalidation-guarantee hierarchy would solve
+ these problems in all container types - not just associative
+ containers.)</p>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/embedded_lists_1.png b/libstdc++-v3/doc/html/ext/pb_ds/embedded_lists_1.png
new file mode 100644
index 000000000..9470a65b5
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/embedded_lists_1.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/embedded_lists_2.png b/libstdc++-v3/doc/html/ext/pb_ds/embedded_lists_2.png
new file mode 100644
index 000000000..d2ac91c1a
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/embedded_lists_2.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/embedded_lists_3.png b/libstdc++-v3/doc/html/ext/pb_ds/embedded_lists_3.png
new file mode 100644
index 000000000..08ecb0ffe
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/embedded_lists_3.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/examples.html b/libstdc++-v3/doc/html/ext/pb_ds/examples.html
new file mode 100644
index 000000000..03c7a3910
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/examples.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>Examples</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1>Examples</h1>
+
+ <p><a href="assoc_examples.html">Associative-Container
+ Examples</a> shows examples for associative containers;
+ <a href="pq_examples.html">Priority-Queue Examples</a> shows
+ examples for priority queues.</p>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/exceptions.html b/libstdc++-v3/doc/html/ext/pb_ds/exceptions.html
new file mode 100644
index 000000000..a51e8ebe0
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/exceptions.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+<title>container_error Interface</title>
+<meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+</head>
+
+<body>
+<div id="page">
+<h1><tt>container_error</tt> Interface</h1>
+
+<p>Base class for associative-container exceptions.</p>
+
+<p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/exception.hpp"><tt>exception.hpp</tt></a></p>
+
+<h2><a name="link1" id="link1">Base Classes</a></h2>
+
+<table class="c1" width="100%" border="1" summary="Bases">
+<tr>
+<td width="80%" align="left"><b>Class</b></td>
+
+<td width="20%" align="left"><b>Derivation Type</b></td>
+</tr>
+
+<tr>
+<td>
+<pre>
+std::logic_error
+</pre>
+</td>
+
+<td>
+<p>public</p>
+</td>
+</tr>
+</table>
+</div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_find_timing_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_find_timing_test_gcc.png
new file mode 100644
index 000000000..d86299b7e
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_find_timing_test_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_find_timing_test_local.png b/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_find_timing_test_local.png
new file mode 100644
index 000000000..1b31b7f27
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_find_timing_test_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_find_timing_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_find_timing_test_msvc.png
new file mode 100644
index 000000000..b7082f286
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_find_timing_test_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_find_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_find_gcc.png
new file mode 100644
index 000000000..b9fbe00de
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_find_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_find_local.png b/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_find_local.png
new file mode 100644
index 000000000..c693ed386
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_find_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_find_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_find_msvc.png
new file mode 100644
index 000000000..248ff6b88
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_find_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_insert_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_insert_gcc.png
new file mode 100644
index 000000000..ac4f838fe
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_insert_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_insert_local.png b/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_insert_local.png
new file mode 100644
index 000000000..9fa08a0c2
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_insert_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_insert_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_insert_msvc.png
new file mode 100644
index 000000000..5f1d740b8
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_insert_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_table.html b/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_table.html
new file mode 100644
index 000000000..dd9d725d3
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_table.html
@@ -0,0 +1,891 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>gp_hash_table Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>gp_hash_table</tt> Interface</h1>
+
+ <p>A concrete general-probing hash-based associative
+ container.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/assoc_container.hpp"><tt>assoc_container.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Template Parameters</a></h2>
+
+ <table class="c1" width="100%" border="1" summary=
+ "Template Parameters">
+ <tr>
+ <td width="20%" align="left"><b>Parameter</b></td>
+
+ <td width="50%" align="left"><b>Description</b></td>
+
+ <td width="30%" align="left"><b>Default Value</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Key2501" id="Key2501"><b>typename</b> Key</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Key type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Mapped318655" id="Mapped318655"><b>typename</b> Mapped</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Mapped type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Hash_Fn1515835" id=
+"Hash_Fn1515835"><b>class</b> Hash_Fn </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Hash functor.</p>
+ </td>
+
+ <td>
+ <pre>
+__gnu_cxx::hash&lt;<a href="#Key2501"><tt>Key</tt></a>&gt;
+</pre>if using gcc;
+ <pre>
+stdext::hash_value&lt;<a href="#Key2501"><tt>Key</tt></a>&gt;
+</pre>if using Visual C++ .net
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Eq_Fn60085" id="Eq_Fn60085"><b>class</b> Eq_Fn </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Equivalence functor.</p>
+ </td>
+
+ <td>
+ <pre>
+std::equal_to&lt;<a href="#Key2501"><tt>Key</tt></a>&gt;
+</pre>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Comb_Probe_Fn1603930855" id=
+"Comb_Probe_Fn1603930855"><b>class</b> Comb_Probe_Fn </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Combining probe functor.</p>
+
+ <p>If <a href="#Hash_Fn1515835"><tt>Hash_Fn</tt></a> is
+ <a href="null_hash_fn.html"><span class=
+ "c2"><tt>null_hash_fn</tt></span></a>, and <a href=
+ "#Probe_Fn8454835"><tt>Probe_Fn</tt></a> is <a href=
+ "null_probe_fn.html"><span class=
+ "c2"><tt>null_probe_fn</tt></span></a>, then this is the
+ ranged-probe functor; otherwise, this is the
+ range-hashing functor.</p>
+
+ <p>(See <a href=
+ "hash_based_containers.html#hash_policies">Design::Hash-Based
+ Containers::Hash Policies</a>.)</p>
+ </td>
+
+ <td><a href="direct_mask_range_hashing.html"><span class=
+ "c2"><tt>direct_mask_range_hashing</tt></span></a></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Probe_Fn8454835" id=
+"Probe_Fn8454835"><b>class</b> Probe_Fn </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Probe functor.</p>
+ </td>
+
+ <td>
+ If <tt><a href=
+ "#Comb_Probe_Fn1603930855"><tt>Comb_Probe_Fn</tt></a></tt>
+ is <a href="direct_mask_range_hashing.html"><span class=
+ "c2"><tt>direct_mask_range_hashing</tt></span></a>, then
+ <pre>
+<a href="linear_probe_fn.html"><span class=
+"c2"><tt>linear_probe_fn</tt></span></a>&lt;
+ <b>typename</b> <a href=
+"#Comb_Probe_Fn1603930855"><tt>Comb_Probe_Fn</tt></a>::size_type&gt;
+</pre>otherwise,
+ <pre>
+<a href="quadratic_probe_fn.html"><span class=
+"c2"><tt>quadratic_probe_fn</tt></span></a>&lt;
+ <b>typename</b> <a href=
+"#Comb_Probe_Fn1603930855"><tt>Comb_Probe_Fn</tt></a>::size_type&gt;
+</pre>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Resize_Policy566860465" id=
+"Resize_Policy566860465"><b>class</b> Resize_Policy </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Resize policy.</p>
+ </td>
+
+ <td>
+ If <tt><a href=
+ "#Comb_Probe_Fn1603930855"><tt>Comb_Probe_Fn</tt></a></tt>
+ is <tt><a href=
+ "direct_mask_range_hashing.html"><span class=
+ "c2"><tt>direct_mask_range_hashing</tt></span></a></tt>,
+ then
+ <pre>
+<a href="hash_standard_resize_policy.html"><span class=
+"c2"><tt>hash_standard_resize_policy</tt></span></a>&lt;
+ <a href="hash_exponential_size_policy.html"><span class=
+"c2"><tt>hash_exponential_size_policy</tt></span></a>&lt;
+ <b>typename</b> <a href=
+"#Comb_Probe_Fn1603930855"><tt>Comb_Probe_Fn</tt></a>::size_type&gt;,
+ <a href="hash_load_check_resize_trigger.html"><span class=
+"c2"><tt>hash_load_check_resize_trigger</tt></span></a>&lt;
+ <b>typename</b> <a href=
+"#Comb_Probe_Fn1603930855"><tt>Comb_Probe_Fn</tt></a>::size_type&gt;,
+ <b>false</b>,
+ <b>typename</b> <a href=
+"#Comb_Probe_Fn1603930855"><tt>Comb_Probe_Fn</tt></a>::size_type&gt;
+</pre>otherwise,
+ <pre>
+<a href="hash_standard_resize_policy.html"><span class=
+"c2"><tt>hash_standard_resize_policy</tt></span></a>&lt;
+ <a href="hash_exponential_size_policy.html"><span class=
+"c2"><tt>hash_exponential_size_policy</tt></span></a>&lt;
+ <b>typename</b> <a href=
+"#Comb_Probe_Fn1603930855"><tt>Comb_Probe_Fn</tt></a>::size_type&gt;,
+ <a href="hash_load_check_resize_trigger.html"><span class=
+"c2"><tt>hash_load_check_resize_trigger</tt></span></a>&lt;
+ <b>typename</b> <a href=
+"#Comb_Probe_Fn1603930855"><tt>Comb_Probe_Fn</tt></a>::size_type&gt;,
+ <b>false</b>,
+ <b>typename</b> <a href=
+"#Comb_Probe_Fn1603930855"><tt>Comb_Probe_Fn</tt></a>::size_type&gt;
+</pre>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Store_Hash218262104" id=
+"Store_Hash218262104"><b>bool</b> Store_Hash </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Indicates whether the hash value will be stored along
+ with each key.</p>
+
+ <p>If <tt><a href=
+ "#hash_fn2015995"><tt>hash_fn</tt></a></tt> is <a href=
+ "null_hash_fn.html"><span class=
+ "c2"><tt>null_hash_fn</tt></span></a>, then the container
+ will not compile if this value is
+ <tt><b>true</b></tt></p>
+ </td>
+
+ <td>
+ <pre>
+<tt><b>false</b></tt>
+</pre>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Allocator35940069" id=
+"Allocator35940069"><b>class</b> Allocator </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Allocator type.</p>
+ </td>
+
+ <td>
+ <pre>
+std::allocator&lt;<b>char</b>&gt;
+</pre>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link2" id="link2">Base Classes</a></h2>
+
+ <table class="c1" width="100%" border="1" summary="Bases">
+ <tr>
+ <td width="80%" align="left"><b>Class</b></td>
+
+ <td width="20%" align="left"><b>Derivation Type</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="basic_hash_table.html"><span class=
+"c2"><tt>basic_hash_table</tt></span></a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link3" id="link3">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link4" id="link4">Policy Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="hash_fn2015995" id="hash_fn2015995">hash_fn</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Hash_Fn1515835"><tt>Hash_Fn</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Hash functor type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="eq_fn80245" id="eq_fn80245">eq_fn</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Eq_Fn60085"><tt>Eq_Fn</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Equivalence functor type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="comb_probe_fn828996423" id=
+"comb_probe_fn828996423">comb_probe_fn</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Comb_Probe_Fn1603930855"><tt>Comb_Probe_Fn</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Combining probe functor type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="probe_fn10954995" id="probe_fn10954995">probe_fn</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Probe_Fn8454835"><tt>Probe_Fn</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Probe functor type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="resize_policy4084493169" id=
+"resize_policy4084493169">resize_policy</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Resize_Policy566860465"><tt>Resize_Policy</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Resize policy type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link5" id="link5">Public Methods</a></h2>
+
+ <h3><a name="link6" id="link6">Constructors, Destructor, and
+ Related</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ gp_hash_table
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Default constructor.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ gp_hash_table
+ (<b>const</b> <a href=
+"#hash_fn2015995"><tt>hash_fn</tt></a> &amp;r_hash_fn)
+</pre>
+ </td>
+
+ <td>
+ <p>Constructor taking some policy objects. <span class=
+ "c1"><tt>r_hash_fn</tt></span> will be copied by the
+ <a href="#hash_fn2015995"><tt>hash_fn</tt></a> object of
+ the container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ gp_hash_table
+ (<b>const</b> <a href=
+"#hash_fn2015995"><tt>hash_fn</tt></a> &amp;r_hash_fn,
+ <b>const</b> <a href=
+"#eq_fn80245"><tt>eq_fn</tt></a> &amp;r_eq_fn)
+</pre>
+ </td>
+
+ <td>
+ <p>Constructor taking some policy objects. <span class=
+ "c1"><tt>r_hash_fn</tt></span> will be copied by the
+ <a href="#hash_fn2015995"><tt>hash_fn</tt></a> object of
+ the container object, and <span class=
+ "c1"><tt>r_eq_fn</tt></span> will be copied by the
+ <a href="#eq_fn80245"><tt>eq_fn</tt></a> object of the
+ container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ gp_hash_table
+ (<b>const</b> <a href=
+"#hash_fn2015995"><tt>hash_fn</tt></a> &amp;r_hash_fn,
+ <b>const</b> <a href=
+"#eq_fn80245"><tt>eq_fn</tt></a> &amp;r_eq_fn,
+ <b>const</b> <a href=
+"#comb_probe_fn828996423"><tt>comb_probe_fn</tt></a> &amp;r_comb_probe_fn)
+</pre>
+ </td>
+
+ <td>
+ <p>Constructor taking some policy objects. <span class=
+ "c1"><tt>r_hash_fn</tt></span> will be copied by the
+ <a href="#hash_fn2015995"><tt>hash_fn</tt></a> object of
+ the container object, <span class=
+ "c1"><tt>r_eq_fn</tt></span> will be copied by the
+ <a href="#eq_fn80245"><tt>eq_fn</tt></a> object of the
+ container object, and <span class=
+ "c1"><tt>r_comb_probe_fn</tt></span> will be copied by
+ the <a href=
+ "#comb_probe_fn828996423"><tt>comb_probe_fn</tt></a>
+ object of the container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ gp_hash_table
+ (<b>const</b> <a href=
+"#hash_fn2015995"><tt>hash_fn</tt></a> &amp;r_hash_fn,
+ <b>const</b> <a href=
+"#eq_fn80245"><tt>eq_fn</tt></a> &amp;r_eq_fn,
+ <b>const</b> <a href=
+"#comb_probe_fn828996423"><tt>comb_probe_fn</tt></a> &amp;r_comb_probe_fn,
+ <b>const</b> <a href=
+"#probe_fn10954995"><tt>probe_fn</tt></a> &amp;r_probe_fn)
+</pre>
+ </td>
+
+ <td>
+ <p>Constructor taking some policy objects. <span class=
+ "c1"><tt>r_hash_fn</tt></span> will be copied by the
+ <a href="#hash_fn2015995"><tt>hash_fn</tt></a> object of
+ the container object, <span class=
+ "c1"><tt>r_eq_fn</tt></span> will be copied by the
+ <a href="#eq_fn80245"><tt>eq_fn</tt></a> object of the
+ container object, <span class=
+ "c1"><tt>r_comb_probe_fn</tt></span> will be copied by
+ the <a href=
+ "#comb_probe_fn828996423"><tt>comb_probe_fn</tt></a>
+ object of the container object, and <span class=
+ "c1"><tt>r_probe_fn</tt></span> will be copied by the
+ <a href="#probe_fn10954995"><tt>probe_fn</tt></a> object
+ of the container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ gp_hash_table
+ (<b>const</b> <a href=
+"#hash_fn2015995"><tt>hash_fn</tt></a> &amp;r_hash_fn,
+ <b>const</b> <a href=
+"#eq_fn80245"><tt>eq_fn</tt></a> &amp;r_eq_fn,
+ <b>const</b> <a href=
+"#comb_probe_fn828996423"><tt>comb_probe_fn</tt></a> &amp;r_comb_probe_fn,
+ <b>const</b> <a href=
+"#probe_fn10954995"><tt>probe_fn</tt></a> &amp;r_probe_fn,
+ <b>const</b> <a href=
+"#resize_policy4084493169"><tt>resize_policy</tt></a> &amp;r_resize_policy)
+</pre>
+ </td>
+
+ <td>
+ <p>Constructor taking some policy objects. <span class=
+ "c1"><tt>r_hash_fn</tt></span> will be copied by the
+ <a href="#hash_fn2015995"><tt>hash_fn</tt></a> object of
+ the container object, <span class=
+ "c1"><tt>r_eq_fn</tt></span> will be copied by the
+ <a href="#eq_fn80245"><tt>eq_fn</tt></a> object of the
+ container object, <span class=
+ "c1"><tt>r_comb_probe_fn</tt></span> will be copied by
+ the <a href=
+ "#comb_probe_fn828996423"><tt>comb_probe_fn</tt></a>
+ object of the container object, <span class=
+ "c1"><tt>r_probe_fn</tt></span> will be copied by the
+ <a href="#probe_fn10954995"><tt>probe_fn</tt></a> object
+ of the container object, and <span class=
+ "c1"><tt>r_resize_policy</tt></span> will be copied by
+ the <a href=
+ "#Resize_Policy566860465"><tt>Resize_Policy</tt></a>
+ object of the container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>template</b>&lt;
+ <b>class</b> It&gt;
+ gp_hash_table
+ (It first_it,
+ It last_it)
+</pre>
+ </td>
+
+ <td>
+ <p>Constructor taking iterators to a range of
+ value_types. The value_types between <span class=
+ "c1"><tt>first_it</tt></span> and <span class=
+ "c1"><tt>last_it</tt></span> will be inserted into the
+ container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>template</b>&lt;
+ <b>class</b> It&gt;
+ gp_hash_table
+ (It first_it,
+ It last_it,
+ <b>const</b> <a href=
+"#hash_fn2015995"><tt>hash_fn</tt></a> &amp;r_hash_fn)
+</pre>
+ </td>
+
+ <td>
+ <p>Constructor taking iterators to a range of value_types
+ and some policy objects. The value_types between
+ <span class="c1"><tt>first_it</tt></span> and
+ <span class="c1"><tt>last_it</tt></span> will be inserted
+ into the container object. <span class=
+ "c1"><tt>r_hash_fn</tt></span> will be copied by the
+ <a href="#hash_fn2015995"><tt>hash_fn</tt></a> object of
+ the container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>template</b>&lt;
+ <b>class</b> It&gt;
+ gp_hash_table
+ (It first_it,
+ It last_it,
+ <b>const</b> <a href=
+"#hash_fn2015995"><tt>hash_fn</tt></a> &amp;r_hash_fn,
+ <b>const</b> <a href=
+"#eq_fn80245"><tt>eq_fn</tt></a> &amp;r_eq_fn)
+</pre>
+ </td>
+
+ <td>
+ <p>Constructor taking iterators to a range of value_types
+ and some policy objects. The value_types between
+ <span class="c1"><tt>first_it</tt></span> and
+ <span class="c1"><tt>last_it</tt></span> will be inserted
+ into the container object. <span class=
+ "c1"><tt>r_hash_fn</tt></span> will be copied by the
+ <a href="#hash_fn2015995"><tt>hash_fn</tt></a> object of
+ the container object, and <span class=
+ "c1"><tt>r_eq_fn</tt></span> will be copied by the
+ <a href="#eq_fn80245"><tt>eq_fn</tt></a> object of the
+ container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>template</b>&lt;
+ <b>class</b> It&gt;
+ gp_hash_table
+ (It first_it,
+ It last_it,
+ <b>const</b> <a href=
+"#hash_fn2015995"><tt>hash_fn</tt></a> &amp;r_hash_fn,
+ <b>const</b> <a href=
+"#eq_fn80245"><tt>eq_fn</tt></a> &amp;r_eq_fn,
+ <b>const</b> <a href=
+"#comb_probe_fn828996423"><tt>comb_probe_fn</tt></a> &amp;r_comb_probe_fn)
+</pre>
+ </td>
+
+ <td>
+ <p>Constructor taking iterators to a range of value_types
+ and some policy objects. The value_types between
+ <span class="c1"><tt>first_it</tt></span> and
+ <span class="c1"><tt>last_it</tt></span> will be inserted
+ into the container object. <span class=
+ "c1"><tt>r_hash_fn</tt></span> will be copied by the
+ <a href="#hash_fn2015995"><tt>hash_fn</tt></a> object of
+ the container object, <span class=
+ "c1"><tt>r_eq_fn</tt></span> will be copied by the
+ <a href="#eq_fn80245"><tt>eq_fn</tt></a> object of the
+ container object, and <span class=
+ "c1"><tt>r_comb_probe_fn</tt></span> will be copied by
+ the <a href=
+ "#comb_probe_fn828996423"><tt>comb_probe_fn</tt></a>
+ object of the container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>template</b>&lt;
+ <b>class</b> It&gt;
+ gp_hash_table
+ (It first_it,
+ It last_it,
+ <b>const</b> <a href=
+"#hash_fn2015995"><tt>hash_fn</tt></a> &amp;r_hash_fn,
+ <b>const</b> <a href=
+"#eq_fn80245"><tt>eq_fn</tt></a> &amp;r_eq_fn,
+ <b>const</b> <a href=
+"#comb_probe_fn828996423"><tt>comb_probe_fn</tt></a> &amp;r_comb_probe_fn,
+ <b>const</b> <a href=
+"#probe_fn10954995"><tt>probe_fn</tt></a> &amp;r_probe_fn)
+</pre>
+ </td>
+
+ <td>
+ <p>Constructor taking iterators to a range of value_types
+ and some policy objects. The value_types between
+ <span class="c1"><tt>first_it</tt></span> and
+ <span class="c1"><tt>last_it</tt></span> will be inserted
+ into the container object. <span class=
+ "c1"><tt>r_hash_fn</tt></span> will be copied by the
+ <a href="#hash_fn2015995"><tt>hash_fn</tt></a> object of
+ the container object, <span class=
+ "c1"><tt>r_eq_fn</tt></span> will be copied by the
+ <a href="#eq_fn80245"><tt>eq_fn</tt></a> object of the
+ container object, <span class=
+ "c1"><tt>r_comb_probe_fn</tt></span> will be copied by
+ the <a href=
+ "#comb_probe_fn828996423"><tt>comb_probe_fn</tt></a>
+ object of the container object, and <span class=
+ "c1"><tt>r_probe_fn</tt></span> will be copied by the
+ <a href="#probe_fn10954995"><tt>probe_fn</tt></a> object
+ of the container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>template</b>&lt;
+ <b>class</b> It&gt;
+ gp_hash_table
+ (It first_it,
+ It last_it,
+ <b>const</b> <a href=
+"#hash_fn2015995"><tt>hash_fn</tt></a> &amp;r_hash_fn,
+ <b>const</b> <a href=
+"#eq_fn80245"><tt>eq_fn</tt></a> &amp;r_eq_fn,
+ <b>const</b> <a href=
+"#comb_probe_fn828996423"><tt>comb_probe_fn</tt></a> &amp;r_comb_probe_fn,
+ <b>const</b> <a href=
+"#probe_fn10954995"><tt>probe_fn</tt></a> &amp;r_probe_fn,
+ <b>const</b> <a href=
+"#resize_policy4084493169"><tt>resize_policy</tt></a> &amp;r_resize_policy)
+</pre>
+ </td>
+
+ <td>
+ <p>Constructor taking iterators to a range of value_types
+ and some policy objects. The value_types between
+ <span class="c1"><tt>first_it</tt></span> and
+ <span class="c1"><tt>last_it</tt></span> will be inserted
+ into the container object. <span class=
+ "c1"><tt>r_hash_fn</tt></span> will be copied by the
+ <a href="#hash_fn2015995"><tt>hash_fn</tt></a> object of
+ the container object, <span class=
+ "c1"><tt>r_eq_fn</tt></span> will be copied by the
+ <a href="#eq_fn80245"><tt>eq_fn</tt></a> object of the
+ container object, <span class=
+ "c1"><tt>r_comb_probe_fn</tt></span> will be copied by
+ the <a href=
+ "#comb_probe_fn828996423"><tt>comb_probe_fn</tt></a>
+ object of the container object, <span class=
+ "c1"><tt>r_probe_fn</tt></span> will be copied by the
+ <a href="#probe_fn10954995"><tt>probe_fn</tt></a> object
+ of the container object, and <span class=
+ "c1"><tt>r_resize_policy</tt></span> will be copied by
+ the <a href=
+ "#resize_policy4084493169"><tt>resize_policy</tt></a>
+ object of the container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ gp_hash_table
+ (<b>const</b> <span class=
+"c2"><tt>gp_hash_table</tt></span> &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Copy constructor.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b>
+ ~gp_hash_table
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Destructor.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<span class="c2"><tt>gp_hash_table</tt></span> &amp;
+ <b>operator</b>=
+ (<b>const</b> <span class=
+"c2"><tt>gp_hash_table</tt></span> &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Assignment operator.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ swap
+ (<span class=
+"c2"><tt>gp_hash_table</tt></span> &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Swaps content.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link7" id="link7">Policy Access Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#comb_probe_fn828996423"><tt>comb_probe_fn</tt></a> &amp;
+ get_comb_probe_fn
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Access to the <a href=
+ "#comb_probe_fn828996423"><tt>comb_probe_fn</tt></a>
+ object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>const</b> <a href=
+"#comb_probe_fn828996423"><tt>comb_probe_fn</tt></a> &amp;
+ get_comb_probe_fn
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Const access to the <a href=
+ "#comb_probe_fn828996423"><tt>comb_probe_fn</tt></a>
+ object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#probe_fn10954995"><tt>probe_fn</tt></a> &amp;
+ get_probe_fn
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Access to the <a href=
+ "#probe_fn10954995"><tt>probe_fn</tt></a> object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>const</b> <a href=
+"#probe_fn10954995"><tt>probe_fn</tt></a> &amp;
+ get_probe_fn
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Const access to the <a href=
+ "#probe_fn10954995"><tt>probe_fn</tt></a> object.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_tag.html
new file mode 100644
index 000000000..4c5f06b57
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_tag.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>gp_hash_tag Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>gp_hash_tag</tt> Interface</h1>
+
+ <p>General-probing hash data structure tag.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Base Classes</a></h2>
+
+ <table class="c1" width="100%" border="1" summary="Bases">
+ <tr>
+ <td width="80%" align="left"><b>Class</b></td>
+
+ <td width="20%" align="left"><b>Derivation Type</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="basic_hash_tag.html"><span class=
+"c2"><tt>basic_hash_tag</tt></span></a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_based_containers.html b/libstdc++-v3/doc/html/ext/pb_ds/hash_based_containers.html
new file mode 100644
index 000000000..21d092a76
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/hash_based_containers.html
@@ -0,0 +1,835 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>Hash-Based Containers</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1>Hash Table Design</h1>
+
+ <h2><a name="overview" id="overview">Overview</a></h2>
+
+ <p>The collision-chaining hash-based container has the
+ following declaration.</p>
+ <pre>
+<b>template</b>&lt;
+ <b>typename</b> Key,
+ <b>typename</b> Mapped,
+ <b>typename</b> Hash_Fn = std::hash&lt;Key&gt;,
+ <b>typename</b> Eq_Fn = std::equal_to&lt;Key&gt;,
+ <b>typename</b> Comb_Hash_Fn = <a href=
+"direct_mask_range_hashing.html">direct_mask_range_hashing</a>&lt;&gt;
+ <b>typename</b> Resize_Policy = <i>default explained below.</i>
+ <b>bool</b> Store_Hash = <b>false</b>,
+ <b>typename</b> Allocator = std::allocator&lt;<b>char</b>&gt; &gt;
+<b>class</b> <a href=
+"cc_hash_table.html">cc_hash_table</a>;
+</pre>
+
+ <p>The parameters have the following meaning:</p>
+
+ <ol>
+ <li><tt>Key</tt> is the key type.</li>
+
+ <li><tt>Mapped</tt> is the mapped-policy, and is explained in
+ <a href="tutorial.html#assoc_ms">Tutorial::Associative
+ Containers::Associative Containers Others than Maps</a>.</li>
+
+ <li><tt>Hash_Fn</tt> is a key hashing functor.</li>
+
+ <li><tt>Eq_Fn</tt> is a key equivalence functor.</li>
+
+ <li><tt>Comb_Hash_Fn</tt> is a <i>range-hashing_functor</i>;
+ it describes how to translate hash values into positions
+ within the table. This is described in <a href=
+ "#hash_policies">Hash Policies</a>.</li>
+
+ <li><tt>Resize_Policy</tt> describes how a container object
+ should change its internal size. This is described in
+ <a href="#resize_policies">Resize Policies</a>.</li>
+
+ <li><tt>Store_Hash</tt> indicates whether the hash value
+ should be stored with each entry. This is described in
+ <a href="#policy_interaction">Policy Interaction</a>.</li>
+
+ <li><tt>Allocator</tt> is an allocator
+ type.</li>
+ </ol>
+
+ <p>The probing hash-based container has the following
+ declaration.</p>
+ <pre>
+<b>template</b>&lt;
+ <b>typename</b> Key,
+ <b>typename</b> Mapped,
+ <b>typename</b> Hash_Fn = std::hash&lt;Key&gt;,
+ <b>typename</b> Eq_Fn = std::equal_to&lt;Key&gt;,
+ <b>typename</b> Comb_Probe_Fn = <a href=
+"direct_mask_range_hashing.html">direct_mask_range_hashing</a>&lt;&gt;
+ <b>typename</b> Probe_Fn = <i>default explained below.</i>
+ <b>typename</b> Resize_Policy = <i>default explained below.</i>
+ <b>bool</b> Store_Hash = <b>false</b>,
+ <b>typename</b> Allocator = std::allocator&lt;<b>char</b>&gt; &gt;
+<b>class</b> <a href=
+"gp_hash_table.html">gp_hash_table</a>;
+</pre>
+
+ <p>The parameters are identical to those of the
+ collision-chaining container, except for the following.</p>
+
+ <ol>
+ <li><tt>Comb_Probe_Fn</tt> describes how to transform a probe
+ sequence into a sequence of positions within the table.</li>
+
+ <li><tt>Probe_Fn</tt> describes a probe sequence policy.</li>
+ </ol>
+
+ <p>Some of the default template values depend on the values of
+ other parameters, and are explained in <a href=
+ "#policy_interaction">Policy Interaction</a>.</p>
+
+ <h2><a name="hash_policies" id="hash_policies">Hash
+ Policies</a></h2>
+
+ <h3><a name="general_terms" id="general_terms">General
+ Terms</a></h3>
+
+ <p>Following is an explanation of some functions which hashing
+ involves. Figure <a href=
+ "#hash_ranged_hash_range_hashing_fns">Hash functions,
+ ranged-hash functions, and range-hashing functions</a>)
+ illustrates the discussion.</p>
+
+ <h6 class="c1"><a name="hash_ranged_hash_range_hashing_fns" id=
+ "hash_ranged_hash_range_hashing_fns"><img src=
+ "hash_ranged_hash_range_hashing_fns.png" alt=
+ "no image" /></a></h6>
+
+ <h6 class="c1">Hash functions, ranged-hash functions, and
+ range-hashing functions.</h6>
+
+ <p>Let <i>U</i> be a domain (<i>e.g.</i>, the integers, or the
+ strings of 3 characters). A hash-table algorithm needs to map
+ elements of <i>U</i> "uniformly" into the range <i>[0,..., m -
+ 1]</i> (where <i>m</i> is a non-negative integral value, and
+ is, in general, time varying). <i>I.e.</i>, the algorithm needs
+ a <i>ranged-hash</i> function</p>
+
+ <p><i>f : U &times; Z<sub>+</sub> &rarr; Z<sub>+</sub></i>
+ ,</p>
+
+ <p>such that for any <i>u</i> in <i>U</i> ,</p>
+
+ <p><i>0 &le; f(u, m) &le; m - 1</i> ,</p>
+
+ <p>and which has "good uniformity" properties [<a href=
+ "references.html#knuth98sorting">knuth98sorting</a>]. One
+ common solution is to use the composition of the hash
+ function</p>
+
+ <p><i>h : U &rarr; Z<sub>+</sub></i> ,</p>
+
+ <p>which maps elements of <i>U</i> into the non-negative
+ integrals, and</p>
+
+ <p class="c2">g : Z<sub>+</sub> &times; Z<sub>+</sub> &rarr;
+ Z<sub>+</sub>,</p>
+
+ <p>which maps a non-negative hash value, and a non-negative
+ range upper-bound into a non-negative integral in the range
+ between 0 (inclusive) and the range upper bound (exclusive),
+ <i>i.e.</i>, for any <i>r</i> in <i>Z<sub>+</sub></i>,</p>
+
+ <p><i>0 &le; g(r, m) &le; m - 1</i> .</p>
+
+ <p>The resulting ranged-hash function, is</p>
+
+ <p><i><a name="ranged_hash_composed_of_hash_and_range_hashing"
+ id="ranged_hash_composed_of_hash_and_range_hashing">f(u , m) =
+ g(h(u), m)</a></i> (1) .</p>
+
+ <p>From the above, it is obvious that given <i>g</i> and
+ <i>h</i>, <i>f</i> can always be composed (however the converse
+ is not true). The STL's hash-based containers allow specifying
+ a hash function, and use a hard-wired range-hashing function;
+ the ranged-hash function is implicitly composed.</p>
+
+ <p>The above describes the case where a key is to be mapped
+ into a <i>single position</i> within a hash table, <i>e.g.</i>,
+ in a collision-chaining table. In other cases, a key is to be
+ mapped into a <i>sequence of positions</i> within a table,
+ <i>e.g.</i>, in a probing table. Similar terms apply in this
+ case: the table requires a <i>ranged probe</i> function,
+ mapping a key into a sequence of positions withing the table.
+ This is typically achieved by composing a <i>hash function</i>
+ mapping the key into a non-negative integral type, a
+ <i>probe</i> function transforming the hash value into a
+ sequence of hash values, and a <i>range-hashing</i> function
+ transforming the sequence of hash values into a sequence of
+ positions.</p>
+
+ <h3><a name="range_hashing_fns" id=
+ "range_hashing_fns">Range-Hashing Functions</a></h3>
+
+ <p>Some common choices for range-hashing functions are the
+ division, multiplication, and middle-square methods [<a href=
+ "references.html#knuth98sorting">knuth98sorting</a>], defined
+ as</p>
+
+ <p><i><a name="division_method" id="division_method">g(r, m) =
+ r mod m</a></i> (2) ,</p>
+
+ <p><i>g(r, m) = &lceil; u/v ( a r mod v ) &rceil;</i> ,</p>
+
+ <p>and</p>
+
+ <p><i>g(r, m) = &lceil; u/v ( r<sup>2</sup> mod v ) &rceil;</i>
+ ,</p>
+
+ <p>respectively, for some positive integrals <i>u</i> and
+ <i>v</i> (typically powers of 2), and some <i>a</i>. Each of
+ these range-hashing functions works best for some different
+ setting.</p>
+
+ <p>The division method <a href="#division_method">(2)</a> is a
+ very common choice. However, even this single method can be
+ implemented in two very different ways. It is possible to
+ implement <a href="#division_method">(2)</a> using the low
+ level <i>%</i> (modulo) operation (for any <i>m</i>), or the
+ low level <i>&amp;</i> (bit-mask) operation (for the case where
+ <i>m</i> is a power of 2), <i>i.e.</i>,</p>
+
+ <p><i><a name="division_method_prime_mod" id=
+ "division_method_prime_mod">g(r, m) = r % m</a></i> (3) ,</p>
+
+ <p>and</p>
+
+ <p><i><a name="division_method_bit_mask" id=
+ "division_method_bit_mask">g(r, m) = r &amp; m - 1, (m =
+ 2<sup>k</sup>)</a></i> for some <i>k)</i> (4),</p>
+
+ <p>respectively.</p>
+
+ <p>The <i>%</i> (modulo) implementation <a href=
+ "#division_method_prime_mod">(3)</a> has the advantage that for
+ <i>m</i> a prime far from a power of 2, <i>g(r, m)</i> is
+ affected by all the bits of <i>r</i> (minimizing the chance of
+ collision). It has the disadvantage of using the costly modulo
+ operation. This method is hard-wired into SGI's implementation
+ [<a href="references.html#sgi_stl">sgi_stl</a>].</p>
+
+ <p>The <i>&amp;</i> (bit-mask) implementation <a href=
+ "#division_method_bit_mask">(4)</a> has the advantage of
+ relying on the fast bit-wise and operation. It has the
+ disadvantage that for <i>g(r, m)</i> is affected only by the
+ low order bits of <i>r</i>. This method is hard-wired into
+ Dinkumware's implementation [<a href=
+ "references.html#dinkumware_stl">dinkumware_stl</a>].</p>
+
+ <h3><a name="hash_policies_ranged_hash_policies" id=
+ "hash_policies_ranged_hash_policies">Ranged-Hash
+ Functions</a></h3>
+
+ <p>In cases it is beneficial to allow the
+ client to directly specify a ranged-hash hash function. It is
+ true, that the writer of the ranged-hash function cannot rely
+ on the values of <i>m</i> having specific numerical properties
+ suitable for hashing (in the sense used in [<a href=
+ "references.html#knuth98sorting">knuth98sorting</a>]), since
+ the values of <i>m</i> are determined by a resize policy with
+ possibly orthogonal considerations.</p>
+
+ <p>There are two cases where a ranged-hash function can be
+ superior. The firs is when using perfect hashing [<a href=
+ "references.html#knuth98sorting">knuth98sorting</a>]; the
+ second is when the values of <i>m</i> can be used to estimate
+ the "general" number of distinct values required. This is
+ described in the following.</p>
+
+ <p>Let</p>
+
+ <p class="c2">s = [ s<sub>0</sub>,..., s<sub>t - 1</sub>]</p>
+
+ <p>be a string of <i>t</i> characters, each of which is from
+ domain <i>S</i>. Consider the following ranged-hash
+ function:</p>
+
+ <p><a name="total_string_dna_hash" id=
+ "total_string_dna_hash"><i>f<sub>1</sub>(s, m) = &sum; <sub>i =
+ 0</sub><sup>t - 1</sup> s<sub>i</sub> a<sup>i</sup></i> mod
+ <i>m</i></a> (5) ,</p>
+
+ <p>where <i>a</i> is some non-negative integral value. This is
+ the standard string-hashing function used in SGI's
+ implementation (with <i>a = 5</i>) [<a href=
+ "references.html#sgi_stl">sgi_stl</a>]. Its advantage is that
+ it takes into account all of the characters of the string.</p>
+
+ <p>Now assume that <i>s</i> is the string representation of a
+ of a long DNA sequence (and so <i>S = {'A', 'C', 'G',
+ 'T'}</i>). In this case, scanning the entire string might be
+ prohibitively expensive. A possible alternative might be to use
+ only the first <i>k</i> characters of the string, where</p>
+
+ <p>|S|<sup>k</sup> &ge; m ,</p>
+
+ <p><i>i.e.</i>, using the hash function</p>
+
+ <p><a name="only_k_string_dna_hash" id=
+ "only_k_string_dna_hash"><i>f<sub>2</sub>(s, m) = &sum; <sub>i
+ = 0</sub><sup>k - 1</sup> s<sub>i</sub> a<sup>i</sup></i> mod
+ <i>m</i></a> , (6)</p>
+
+ <p>requiring scanning over only</p>
+
+ <p><i>k =</i> log<i><sub>4</sub>( m )</i></p>
+
+ <p>characters.</p>
+
+ <p>Other more elaborate hash-functions might scan <i>k</i>
+ characters starting at a random position (determined at each
+ resize), or scanning <i>k</i> random positions (determined at
+ each resize), <i>i.e.</i>, using</p>
+
+ <p><i>f<sub>3</sub>(s, m) = &sum; <sub>i =
+ r</sub>0</i><sup>r<sub>0</sub> + k - 1</sup> s<sub>i</sub>
+ a<sup>i</sup> mod <i>m</i> ,</p>
+
+ <p>or</p>
+
+ <p><i>f<sub>4</sub>(s, m) = &sum; <sub>i = 0</sub><sup>k -
+ 1</sup> s<sub>r</sub>i</i> a<sup>r<sub>i</sub></sup> mod
+ <i>m</i> ,</p>
+
+ <p>respectively, for <i>r<sub>0</sub>,..., r<sub>k-1</sub></i>
+ each in the (inclusive) range <i>[0,...,t-1]</i>.</p>
+
+ <p>It should be noted that the above functions cannot be
+ decomposed as <a href=
+ "#ranged_hash_composed_of_hash_and_range_hashing">(1)</a> .</p>
+
+ <h3><a name="pb_ds_imp" id="pb_ds_imp">Implementation</a></h3>
+
+ <p>This sub-subsection describes the implementation of the
+ above in <tt>pb_ds</tt>. It first explains range-hashing
+ functions in collision-chaining tables, then ranged-hash
+ functions in collision-chaining tables, then probing-based
+ tables, and, finally, lists the relevant classes in
+ <tt>pb_ds</tt>.</p>
+
+ <h4>Range-Hashing and Ranged-Hashes in Collision-Chaining
+ Tables</h4>
+
+ <p><a href=
+ "cc_hash_table.html"><tt>cc_hash_table</tt></a> is
+ parametrized by <tt>Hash_Fn</tt> and <tt>Comb_Hash_Fn</tt>, a
+ hash functor and a combining hash functor, respectively.</p>
+
+ <p>In general, <tt>Comb_Hash_Fn</tt> is considered a
+ range-hashing functor. <a href=
+ "cc_hash_table.html"><tt>cc_hash_table</tt></a>
+ synthesizes a ranged-hash function from <tt>Hash_Fn</tt> and
+ <tt>Comb_Hash_Fn</tt> (see <a href=
+ "#ranged_hash_composed_of_hash_and_range_hashing">(1)</a>
+ above). Figure <a href="#hash_range_hashing_seq_diagram">Insert
+ hash sequence diagram</a> shows an <tt>insert</tt> sequence
+ diagram for this case. The user inserts an element (point A),
+ the container transforms the key into a non-negative integral
+ using the hash functor (points B and C), and transforms the
+ result into a position using the combining functor (points D
+ and E).</p>
+
+ <h6 class="c1"><a name="hash_range_hashing_seq_diagram" id=
+ "hash_range_hashing_seq_diagram"><img src=
+ "hash_range_hashing_seq_diagram.png" alt="no image" /></a></h6>
+
+ <h6 class="c1">Insert hash sequence diagram.</h6>
+
+ <p>If <a href=
+ "cc_hash_table.html"><tt>cc_hash_table</tt></a>'s
+ hash-functor, <tt>Hash_Fn</tt> is instantiated by <a href=
+ "null_hash_fn.html"><tt>null_hash_fn</tt></a> (see <a href=
+ "concepts.html#concepts_null_policies">Interface::Concepts::Null
+ Policy Classes</a>), then <tt>Comb_Hash_Fn</tt> is taken to be
+ a ranged-hash function. Figure <a href=
+ "#hash_range_hashing_seq_diagram2">Insert hash sequence diagram
+ with a null hash policy</a> shows an <tt>insert</tt> sequence
+ diagram. The user inserts an element (point A), the container
+ transforms the key into a position using the combining functor
+ (points B and C).</p>
+
+ <h6 class="c1"><a name="hash_range_hashing_seq_diagram2" id=
+ "hash_range_hashing_seq_diagram2"><img src=
+ "hash_range_hashing_seq_diagram2.png" alt=
+ "no image" /></a></h6>
+
+ <h6 class="c1">Insert hash sequence diagram with a null hash
+ policy.</h6>
+
+ <h4>Probing Tables</h4>
+
+ <p><a href=
+ "gp_hash_table.html"></a><tt>gp_hash_table</tt> is
+ parametrized by <tt>Hash_Fn</tt>, <tt>Probe_Fn</tt>, and
+ <tt>Comb_Probe_Fn</tt>. As before, if <tt>Hash_Fn</tt> and
+ <tt>Probe_Fn</tt> are, respectively, <a href=
+ "null_hash_fn.html"><tt>null_hash_fn</tt></a> and <a href=
+ "null_probe_fn.html"><tt>null_probe_fn</tt></a>, then
+ <tt>Comb_Probe_Fn</tt> is a ranged-probe functor. Otherwise,
+ <tt>Hash_Fn</tt> is a hash functor, <tt>Probe_Fn</tt> is a
+ functor for offsets from a hash value, and
+ <tt>Comb_Probe_Fn</tt> transforms a probe sequence into a
+ sequence of positions within the table.</p>
+
+ <h4>Pre-Defined Policies</h4>
+
+ <p><tt>pb_ds</tt> contains some pre-defined classes
+ implementing range-hashing and probing functions:</p>
+
+ <ol>
+ <li><a href=
+ "direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+ and <a href=
+ "direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+ are range-hashing functions based on a bit-mask and a modulo
+ operation, respectively.</li>
+
+ <li><a href=
+ "linear_probe_fn.html"><tt>linear_probe_fn</tt></a>, and
+ <a href=
+ "quadratic_probe_fn.html"><tt>quadratic_probe_fn</tt></a> are
+ a linear probe and a quadratic probe function,
+ respectively.</li>
+ </ol>Figure <a href="#hash_policy_cd">Hash policy class
+ diagram</a> shows a class diagram.
+
+ <h6 class="c1"><a name="hash_policy_cd" id=
+ "hash_policy_cd"><img src="hash_policy_cd.png" alt=
+ "no image" /></a></h6>
+
+ <h6 class="c1">Hash policy class diagram.</h6>
+
+ <h2><a name="resize_policies" id="resize_policies">Resize
+ Policies</a></h2>
+
+ <h3><a name="general" id="general">General Terms</a></h3>
+
+ <p>Hash-tables, as opposed to trees, do not naturally grow or
+ shrink. It is necessary to specify policies to determine how
+ and when a hash table should change its size. Usually, resize
+ policies can be decomposed into orthogonal policies:</p>
+
+ <ol>
+ <li>A <i>size policy</i> indicating <i>how</i> a hash table
+ should grow (<i>e.g.,</i> it should multiply by powers of
+ 2).</li>
+
+ <li>A <i>trigger policy</i> indicating <i>when</i> a hash
+ table should grow (<i>e.g.,</i> a load factor is
+ exceeded).</li>
+ </ol>
+
+ <h3><a name="size_policies" id="size_policies">Size
+ Policies</a></h3>
+
+ <p>Size policies determine how a hash table changes size. These
+ policies are simple, and there are relatively few sensible
+ options. An exponential-size policy (with the initial size and
+ growth factors both powers of 2) works well with a mask-based
+ range-hashing function (see <a href=
+ "#hash_policies">Range-Hashing Policies</a>), and is the
+ hard-wired policy used by Dinkumware [<a href=
+ "references.html#dinkumware_stl">dinkumware_stl</a>]. A
+ prime-list based policy works well with a modulo-prime range
+ hashing function (see <a href="#hash_policies">Range-Hashing
+ Policies</a>), and is the hard-wired policy used by SGI's
+ implementation [<a href=
+ "references.html#sgi_stl">sgi_stl</a>].</p>
+
+ <h3><a name="trigger_policies" id="trigger_policies">Trigger
+ Policies</a></h3>
+
+ <p>Trigger policies determine when a hash table changes size.
+ Following is a description of two policies: <i>load-check</i>
+ policies, and collision-check policies.</p>
+
+ <p>Load-check policies are straightforward. The user specifies
+ two factors, <i>&alpha;<sub>min</sub></i> and
+ <i>&alpha;<sub>max</sub></i>, and the hash table maintains the
+ invariant that</p>
+
+ <p><i><a name="load_factor_min_max" id=
+ "load_factor_min_max">&alpha;<sub>min</sub> &le; (number of
+ stored elements) / (hash-table size) &le;
+ &alpha;<sub>max</sub></a></i> (1) .</p>
+
+ <p>Collision-check policies work in the opposite direction of
+ load-check policies. They focus on keeping the number of
+ collisions moderate and hoping that the size of the table will
+ not grow very large, instead of keeping a moderate load-factor
+ and hoping that the number of collisions will be small. A
+ maximal collision-check policy resizes when the longest
+ probe-sequence grows too large.</p>
+
+ <p>Consider Figure <a href="#balls_and_bins">Balls and
+ bins</a>. Let the size of the hash table be denoted by
+ <i>m</i>, the length of a probe sequence be denoted by
+ <i>k</i>, and some load factor be denoted by &alpha;. We would
+ like to calculate the minimal length of <i>k</i>, such that if
+ there were <i>&alpha; m</i> elements in the hash table, a probe
+ sequence of length <i>k</i> would be found with probability at
+ most <i>1/m</i>.</p>
+
+ <h6 class="c1"><a name="balls_and_bins" id=
+ "balls_and_bins"><img src="balls_and_bins.png" alt=
+ "no image" /></a></h6>
+
+ <h6 class="c1">Balls and bins.</h6>
+
+ <p>Denote the probability that a probe sequence of length
+ <i>k</i> appears in bin <i>i</i> by <i>p<sub>i</sub></i>, the
+ length of the probe sequence of bin <i>i</i> by
+ <i>l<sub>i</sub></i>, and assume uniform distribution. Then</p>
+
+ <p><a name="prob_of_p1" id=
+ "prob_of_p1"><i>p<sub>1</sub></i></a> = (3)</p>
+
+ <p class="c2"><b>P</b>(l<sub>1</sub> &ge; k) =</p>
+
+ <p><i><b>P</b>(l<sub>1</sub> &ge; &alpha; ( 1 + k / &alpha; - 1
+ ) &le;</i> (a)</p>
+
+ <p><i>e ^ ( - ( &alpha; ( k / &alpha; - 1 )<sup>2</sup> ) /2
+ )</i> ,</p>
+
+ <p>where (a) follows from the Chernoff bound [<a href=
+ "references.html#motwani95random">motwani95random</a>]. To
+ calculate the probability that <i>some</i> bin contains a probe
+ sequence greater than <i>k</i>, we note that the
+ <i>l<sub>i</sub></i> are negatively-dependent [<a href=
+ "references.html#dubhashi98neg">dubhashi98neg</a>]. Let
+ <i><b>I</b>(.)</i> denote the indicator function. Then</p>
+
+ <p><a name="at_least_k_i_n_some_bin" id=
+ "at_least_k_i_n_some_bin"><i><b>P</b>( exists<sub>i</sub>
+ l<sub>i</sub> &ge; k ) =</i> (3)</a></p>
+
+ <p class="c2"><b>P</b> ( &sum; <sub>i = 1</sub><sup>m</sup>
+ <b>I</b>(l<sub>i</sub> &ge; k) &ge; 1 ) =</p>
+
+ <p><i><b>P</b> ( &sum; <sub>i = 1</sub><sup>m</sup> <b>I</b> (
+ l<sub>i</sub> &ge; k ) &ge; m p<sub>1</sub> ( 1 + 1 / (m
+ p<sub>1</sub>) - 1 ) ) &le;</i> (a)</p>
+
+ <p class="c2">e ^ ( ( - m p<sub>1</sub> ( 1 / (m p<sub>1</sub>)
+ - 1 ) <sup>2</sup> ) / 2 ) ,</p>
+
+ <p>where (a) follows from the fact that the Chernoff bound can
+ be applied to negatively-dependent variables [<a href=
+ "references.html#dubhashi98neg">dubhashi98neg</a>]. Inserting
+ <a href="#prob_of_p1">(2)</a> into <a href=
+ "#at_least_k_i_n_some_bin">(3)</a>, and equating with
+ <i>1/m</i>, we obtain</p>
+
+ <p><i>k ~ &radic; ( 2 &alpha;</i> ln <i>2 m</i> ln<i>(m) )
+ )</i> .</p>
+
+ <h3><a name="imp_pb_ds" id="imp_pb_ds">Implementation</a></h3>
+
+ <p>This sub-subsection describes the implementation of the
+ above in <tt>pb_ds</tt>. It first describes resize policies and
+ their decomposition into trigger and size policies, then
+ describes pre-defined classes, and finally discusses controlled
+ access the policies' internals.</p>
+
+ <h4>Resize Policies and Their Decomposition</h4>
+
+ <p>Each hash-based container is parametrized by a
+ <tt>Resize_Policy</tt> parameter; the container derives
+ <tt><b>public</b></tt>ly from <tt>Resize_Policy</tt>. For
+ example:</p>
+ <pre>
+<a href="cc_hash_table.html">cc_hash_table</a>&lt;
+ <b>typename</b> Key,
+ <b>typename</b> Mapped,
+ ...
+ <b>typename</b> Resize_Policy
+ ...&gt; :
+ <b>public</b> Resize_Policy
+</pre>
+
+ <p>As a container object is modified, it continuously notifies
+ its <tt>Resize_Policy</tt> base of internal changes
+ (<i>e.g.</i>, collisions encountered and elements being
+ inserted). It queries its <tt>Resize_Policy</tt> base whether
+ it needs to be resized, and if so, to what size.</p>
+
+ <p>Figure <a href="#insert_resize_sequence_diagram1">Insert
+ resize sequence diagram</a> shows a (possible) sequence diagram
+ of an insert operation. The user inserts an element; the hash
+ table notifies its resize policy that a search has started
+ (point A); in this case, a single collision is encountered -
+ the table notifies its resize policy of this (point B); the
+ container finally notifies its resize policy that the search
+ has ended (point C); it then queries its resize policy whether
+ a resize is needed, and if so, what is the new size (points D
+ to G); following the resize, it notifies the policy that a
+ resize has completed (point H); finally, the element is
+ inserted, and the policy notified (point I).</p>
+
+ <h6 class="c1"><a name="insert_resize_sequence_diagram1" id=
+ "insert_resize_sequence_diagram1"><img src=
+ "insert_resize_sequence_diagram1.png" alt=
+ "no image" /></a></h6>
+
+ <h6 class="c1">Insert resize sequence diagram.</h6>
+
+ <p>In practice, a resize policy can be usually orthogonally
+ decomposed to a size policy and a trigger policy. Consequently,
+ the library contains a single class for instantiating a resize
+ policy: <a href=
+ "hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ is parametrized by <tt>Size_Policy</tt> and
+ <tt>Trigger_Policy</tt>, derives <tt><b>public</b></tt>ly from
+ both, and acts as a standard delegate [<a href=
+ "references.html#gamma95designpatterns">gamma95designpatterns</a>]
+ to these policies.</p>
+
+ <p>Figures <a href="#insert_resize_sequence_diagram2">Standard
+ resize policy trigger sequence diagram</a> and <a href=
+ "#insert_resize_sequence_diagram3">Standard resize policy size
+ sequence diagram</a> show sequence diagrams illustrating the
+ interaction between the standard resize policy and its trigger
+ and size policies, respectively.</p>
+
+ <h6 class="c1"><a name="insert_resize_sequence_diagram2" id=
+ "insert_resize_sequence_diagram2"><img src=
+ "insert_resize_sequence_diagram2.png" alt=
+ "no image" /></a></h6>
+
+ <h6 class="c1">Standard resize policy trigger sequence
+ diagram.</h6>
+
+ <h6 class="c1"><a name="insert_resize_sequence_diagram3" id=
+ "insert_resize_sequence_diagram3"><img src=
+ "insert_resize_sequence_diagram3.png" alt=
+ "no image" /></a></h6>
+
+ <h6 class="c1">Standard resize policy size sequence
+ diagram.</h6>
+
+ <h4>Pre-Defined Policies</h4>
+
+ <p>The library includes the following
+ instantiations of size and trigger policies:</p>
+
+ <ol>
+ <li><a href=
+ "hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ implements a load check trigger policy.</li>
+
+ <li><a href=
+ "cc_hash_max_collision_check_resize_trigger.html"><tt>cc_hash_max_collision_check_resize_trigger</tt></a>
+ implements a collision check trigger policy.</li>
+
+ <li><a href=
+ "hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+ implements an exponential-size policy (which should be used
+ with mask range hashing).</li>
+
+ <li><a href=
+ "hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+ implementing a size policy based on a sequence of primes
+ [<a href="references.html#sgi_stl">sgi_stl</a>] (which should
+ be used with mod range hashing</li>
+ </ol>
+
+ <p>Figure <a href="#resize_policy_cd">Resize policy class
+ diagram</a> gives an overall picture of the resize-related
+ classes. <a href=
+ "basic_hash_table.html"><tt>basic_hash_table</tt></a>
+ is parametrized by <tt>Resize_Policy</tt>, which it subclasses
+ publicly. This class is currently instantiated only by <a href=
+ "hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>.
+ <a href=
+ "hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ itself is parametrized by <tt>Trigger_Policy</tt> and
+ <tt>Size_Policy</tt>. Currently, <tt>Trigger_Policy</tt> is
+ instantiated by <a href=
+ "hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>,
+ or <a href=
+ "cc_hash_max_collision_check_resize_trigger.html"><tt>cc_hash_max_collision_check_resize_trigger</tt></a>;
+ <tt>Size_Policy</tt> is instantiated by <a href=
+ "hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>,
+ or <a href=
+ "hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>.</p>
+
+ <h6 class="c1"><a name="resize_policy_cd" id=
+ "resize_policy_cd"><img src="resize_policy_cd.png" alt=
+ "no image" /></a></h6>
+
+ <h6 class="c1">Resize policy class diagram.</h6>
+
+ <h4>Controlled Access to Policies' Internals</h4>
+
+ <p>There are cases where (controlled) access to resize
+ policies' internals is beneficial. <i>E.g.</i>, it is sometimes
+ useful to query a hash-table for the table's actual size (as
+ opposed to its <tt>size()</tt> - the number of values it
+ currently holds); it is sometimes useful to set a table's
+ initial size, externally resize it, or change load factors.</p>
+
+ <p>Clearly, supporting such methods both decreases the
+ encapsulation of hash-based containers, and increases the
+ diversity between different associative-containers' interfaces.
+ Conversely, omitting such methods can decrease containers'
+ flexibility.</p>
+
+ <p>In order to avoid, to the extent possible, the above
+ conflict, the hash-based containers themselves do not address
+ any of these questions; this is deferred to the resize policies,
+ which are easier to change or replace. Thus, for example,
+ neither <a href=
+ "cc_hash_table.html"><tt>cc_hash_table</tt></a> nor
+ <a href=
+ "gp_hash_table.html"><tt>gp_hash_table</tt></a>
+ contain methods for querying the actual size of the table; this
+ is deferred to <a href=
+ "hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>.</p>
+
+ <p>Furthermore, the policies themselves are parametrized by
+ template arguments that determine the methods they support
+ ([<a href=
+ "references.html#alexandrescu01modern">alexandrescu01modern</a>]
+ shows techniques for doing so). <a href=
+ "hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ is parametrized by <tt>External_Size_Access</tt> that
+ determines whether it supports methods for querying the actual
+ size of the table or resizing it. <a href=
+ "hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ is parametrized by <tt>External_Load_Access</tt> that
+ determines whether it supports methods for querying or
+ modifying the loads. <a href=
+ "cc_hash_max_collision_check_resize_trigger.html"><tt>cc_hash_max_collision_check_resize_trigger</tt></a>
+ is parametrized by <tt>External_Load_Access</tt> that
+ determines whether it supports methods for querying the
+ load.</p>
+
+ <p>Some operations, for example, resizing a container at
+ run time, or changing the load factors of a load-check trigger
+ policy, require the container itself to resize. As mentioned
+ above, the hash-based containers themselves do not contain
+ these types of methods, only their resize policies.
+ Consequently, there must be some mechanism for a resize policy
+ to manipulate the hash-based container. As the hash-based
+ container is a subclass of the resize policy, this is done
+ through virtual methods. Each hash-based container has a
+ <tt><b>private</b></tt> <tt><b>virtual</b></tt> method:</p>
+ <pre>
+<b>virtual void</b>
+ do_resize
+ (size_type new_size);
+</pre>
+
+ <p>which resizes the container. Implementations of
+ <tt>Resize_Policy</tt> can export public methods for resizing
+ the container externally; these methods internally call
+ <tt>do_resize</tt> to resize the table.</p>
+
+ <h2><a name="policy_interaction" id="policy_interaction">Policy
+ Interaction</a></h2>
+
+ <p>Hash-tables are unfortunately especially susceptible to
+ choice of policies. One of the more complicated aspects of this
+ is that poor combinations of good policies can form a poor
+ container. Following are some considerations.</p>
+
+ <h3><a name="policy_interaction_probe_size_trigger" id=
+ "policy_interaction_probe_size_trigger">Probe Policies, Size
+ Policies, and Trigger Policies</a></h3>
+
+ <p>Some combinations do not work well for probing containers.
+ For example, combining a quadratic probe policy with an
+ exponential size policy can yield a poor container: when an
+ element is inserted, a trigger policy might decide that there
+ is no need to resize, as the table still contains unused
+ entries; the probe sequence, however, might never reach any of
+ the unused entries.</p>
+
+ <p>Unfortunately, <tt>pb_ds</tt> cannot detect such problems at
+ compilation (they are halting reducible). It therefore defines
+ an exception class <a href=
+ "insert_error.html"><tt>insert_error</tt></a> to throw an
+ exception in this case.</p>
+
+ <h3><a name="policy_interaction_hash_trigger" id=
+ "policy_interaction_hash_trigger">Hash Policies and Trigger
+ Policies</a></h3>
+
+ <p>Some trigger policies are especially susceptible to poor
+ hash functions. Suppose, as an extreme case, that the hash
+ function transforms each key to the same hash value. After some
+ inserts, a collision detecting policy will always indicate that
+ the container needs to grow.</p>
+
+ <p>The library, therefore, by design, limits each operation to
+ one resize. For each <tt>insert</tt>, for example, it queries
+ only once whether a resize is needed.</p>
+
+ <h3><a name="policy_interaction_eq_sth_hash" id=
+ "policy_interaction_eq_sth_hash">Equivalence Functors, Storing
+ Hash Values, and Hash Functions</a></h3>
+
+ <p><a href=
+ "cc_hash_table.html"><tt>cc_hash_table</tt></a> and
+ <a href=
+ "gp_hash_table.html"><tt>gp_hash_table</tt></a> are
+ parametrized by an equivalence functor and by a
+ <tt>Store_Hash</tt> parameter. If the latter parameter is
+ <tt><b>true</b></tt>, then the container stores with each entry
+ a hash value, and uses this value in case of collisions to
+ determine whether to apply a hash value. This can lower the
+ cost of collision for some types, but increase the cost of
+ collisions for other types.</p>
+
+ <p>If a ranged-hash function or ranged probe function is
+ directly supplied, however, then it makes no sense to store the
+ hash value with each entry. <tt>pb_ds</tt>'s container will
+ fail at compilation, by design, if this is attempted.</p>
+
+ <h3><a name="policy_interaction_size_load_check" id=
+ "policy_interaction_size_load_check">Size Policies and
+ Load-Check Trigger Policies</a></h3>
+
+ <p>Assume a size policy issues an increasing sequence of sizes
+ <i>a, a q, a q<sup>1</sup>, a q<sup>2</sup>, ...</i> For
+ example, an exponential size policy might issue the sequence of
+ sizes <i>8, 16, 32, 64, ...</i></p>
+
+ <p>If a load-check trigger policy is used, with loads
+ <i>&alpha;<sub>min</sub></i> and <i>&alpha;<sub>max</sub></i>,
+ respectively, then it is a good idea to have:</p>
+
+ <ol>
+ <li><i>&alpha;<sub>max</sub> ~ 1 / q</i></li>
+
+ <li><i>&alpha;<sub>min</sub> &lt; 1 / (2 q)</i></li>
+ </ol>
+
+ <p>This will ensure that the amortized hash cost of each
+ modifying operation is at most approximately 3.</p>
+
+ <p><i>&alpha;<sub>min</sub> ~ &alpha;<sub>max</sub></i> is, in
+ any case, a bad choice, and <i>&alpha;<sub>min</sub> &gt;
+ &alpha;<sub>max</sub></i> is horrendous.</p>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_exponential_size_policy.html b/libstdc++-v3/doc/html/ext/pb_ds/hash_exponential_size_policy.html
new file mode 100644
index 000000000..1089b1544
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/hash_exponential_size_policy.html
@@ -0,0 +1,183 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>hash_exponential_size_policy Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>hash_exponential_size_policy</tt> Interface</h1>
+
+ <p>A size policy whose sequence of sizes form an exponential
+ sequence (typically powers of 2)</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/hash_policy.hpp"><tt>hash_policy.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Template Parameters</a></h2>
+
+ <table class="c1" width="100%" border="1" summary=
+ "Template Parameters">
+ <tr>
+ <td width="20%" align="left"><b>Parameter</b></td>
+
+ <td width="50%" align="left"><b>Description</b></td>
+
+ <td width="30%" align="left"><b>Default Value</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Size_Type42920436" id=
+"Size_Type42920436"><b>typename</b> Size_Type </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+
+ <td>size_t</td>
+ </tr>
+ </table>
+
+ <h2><a name="link2" id="link2">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link3" id="link3">General Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="size_type55424436" id="size_type55424436">size_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Size_Type42920436"><tt>Size_Type</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link4" id="link4">Public Methods</a></h2>
+
+ <h3><a name="link5" id="link5">Constructors, Destructor, and
+ Related</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ hash_exponential_size_policy
+ (<a href=
+"#size_type55424436"><tt>size_type</tt></a> start_size = 8,
+ <a href=
+"#size_type55424436"><tt>size_type</tt></a> grow_factor = 2)
+</pre>
+ </td>
+
+ <td>
+ <p>Default constructor, or constructor taking a
+ <span class="c1"><tt>start_size</tt></span>, or
+ constructor taking a start size and <span class=
+ "c1"><tt>grow_factor</tt></span>. The policy will use the
+ sequence of sizes <span class=
+ "c1"><tt>start_size</tt></span>, <span class=
+ "c1"><tt>start_size</tt></span> * <span class=
+ "c1"><tt>grow_factor</tt></span>, <span class=
+ "c1"><tt>start_size</tt></span> * <span class=
+ "c1"><tt>grow_factor</tt></span>^2, ...</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ swap
+ (<span class=
+"c2"><tt>hash_exponential_size_policy</tt></span> &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Swaps content.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link6" id="link6">Protected Methods</a></h2>
+
+ <h3><a name="link7" id="link7">Size methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#size_type55424436"><tt>size_type</tt></a>
+ get_nearest_larger_size
+ (<a href=
+"#size_type55424436"><tt>size_type</tt></a> size) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Given a size <span class="c1"><tt>size</tt></span>,
+ returns a size that is larger.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#size_type55424436"><tt>size_type</tt></a>
+ get_nearest_smaller_size
+ (<a href=
+"#size_type55424436"><tt>size_type</tt></a> size) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Given a size <span class="c1"><tt>size</tt></span>,
+ returns a size that is smaller.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_load_check_resize_trigger.html b/libstdc++-v3/doc/html/ext/pb_ds/hash_load_check_resize_trigger.html
new file mode 100644
index 000000000..b22b7b5cf
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/hash_load_check_resize_trigger.html
@@ -0,0 +1,583 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>hash_load_check_resize_trigger Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>hash_load_check_resize_trigger</tt> Interface</h1>
+
+ <p>A resize trigger policy based on a load check. It keeps the
+ load factor between some load factors load_min and
+ load_max.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/hash_policy.hpp"><tt>hash_policy.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Template Parameters</a></h2>
+
+ <table class="c1" width="100%" border="1" summary=
+ "Template Parameters">
+ <tr>
+ <td width="20%" align="left"><b>Parameter</b></td>
+
+ <td width="50%" align="left"><b>Description</b></td>
+
+ <td width="30%" align="left"><b>Default Value</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="External_Load_Access1313998607" id=
+"External_Load_Access1313998607"><b>bool</b> External_Load_Access </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Specifies whether the load factor can be accessed
+ externally. The two options have different trade-offs in
+ terms of flexibility, genericity, and encapsulation.</p>
+ </td>
+
+ <td><tt><b>false</b></tt></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Size_Type42920436" id=
+"Size_Type42920436"><b>typename</b> Size_Type </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+
+ <td>size_t</td>
+ </tr>
+ </table>
+
+ <h2><a name="link2" id="link2">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link3" id="link3">General Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="size_type55424436" id="size_type55424436">size_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Size_Type42920436"><tt>Size_Type</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="external_load_access3976598639" id=
+"external_load_access3976598639">external_load_access</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href=
+"#External_Load_Access1313998607"><tt>External_Load_Access</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Indicates whether loads can be accessed externally</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link4" id="link4">Public Methods</a></h2>
+
+ <h3><a name="link5" id="link5">Constructors, Destructor, and
+ Related</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ hash_load_check_resize_trigger
+ (float load_min = 0.125,
+ float load_max = 0.5)
+</pre>
+ </td>
+
+ <td>
+ <p>Default constructor, or constructor taking
+ <span class="c1"><tt>load_min</tt></span> and
+ <span class="c1"><tt>load_max</tt></span> load factors
+ between which this policy will keep the actual load.</p>
+
+ <p>It is the responsibility of the user to ensure that
+ <span class="c1"><tt>load_min</tt></span> is smaller than
+ <span class="c1"><tt>load_max</tt></span>.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ swap
+ (<span class=
+"c2"><tt>hash_load_check_resize_trigger</tt></span> &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Swaps content.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ <b>virtual</b>
+ ~hash_load_check_resize_trigger
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Destructor.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link6" id="link6">Load Access Methods</a></h3>
+
+ <p>These methods are only available if the external access
+ parameter is set.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> std::pair&lt;float, float&gt;
+ get_loads
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns a pair of the minimal and maximal loads,
+ respectively.</p>
+
+ <p>Calling this method will not compile when <a href=
+ "#External_Load_Access1313998607"><tt>External_Load_Access</tt></a>
+ == <tt><b>false</b></tt>.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ set_loads
+ (std::pair&lt;float, float&gt; load_pair)
+</pre>
+ </td>
+
+ <td>
+ <p>Sets the loads through a pair of the minimal and
+ maximal loads, respectively.</p>
+
+ <p>Calling this method resizes the container, and might
+ throw an exception. It is the responsibility of the user
+ to pass appropriate loads to this function. Calling this
+ method will not compile when <a href=
+ "#External_Load_Access1313998607"><tt>External_Load_Access</tt></a>
+ == <tt><b>false</b></tt>.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link7" id="link7">Protected Methods</a></h2>
+
+ <h3><a name="link8" id="link8">Insert Search
+ Notifications.</a></h3>
+
+ <p>Notifications called during an insert operation.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_insert_search_start
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search started.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_insert_search_collision
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search encountered a collision.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_insert_search_end
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search ended.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link9" id="link9">Find Search
+ Notifications.</a></h3>
+
+ <p>Notifications called during a find operation.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_find_search_start
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search started.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_find_search_collision
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search encountered a collision.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_find_search_end
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search ended.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link10" id="link10">Erase Search
+ Notifications.</a></h3>
+
+ <p>Notifications called during an insert operation.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_erase_search_start
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search started.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_erase_search_collision
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search encountered a collision.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_erase_search_end
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search ended.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link11" id="link11">Content Change
+ Notifications.</a></h3>
+
+ <p>Notifications called when the content of the table changes
+ in a way that can affect the resize policy.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_inserted
+ (<a href="#size_type55424436"><tt>size_type</tt></a> num_entries)
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies an element was inserted. the total number of
+ entries in the table is <span class=
+ "c1"><tt>num_entries</tt></span>.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_erased
+ (<a href="#size_type55424436"><tt>size_type</tt></a> num_entries)
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies an element was erased.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ notify_cleared
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies the table was cleared.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link12" id="link12">Size Change
+ Notifications.</a></h3>
+
+ <p>Notifications called when the table changes size.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ notify_resized
+ (<a href="#size_type55424436"><tt>size_type</tt></a> new_size)
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies the table was resized as a result of this
+ object's signifying that a resize is needed.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ notify_externally_resized
+ (<a href="#size_type55424436"><tt>size_type</tt></a> new_size)
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies the table was resized externally.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link13" id="link13">Queries</a></h3>
+
+ <p>Called to query whether/how to resize.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>bool</b>
+ is_resize_needed
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Queries whether a resize is needed.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>bool</b>
+ is_grow_needed
+ (<a href="#size_type55424436"><tt>size_type</tt></a> size,
+ <a href=
+"#size_type55424436"><tt>size_type</tt></a> num_entries) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Queries whether a grow is needed.</p>
+
+ <p>This method is called only if this object indicated
+ resize is needed. The actual <span class=
+ "c1"><tt>size</tt></span> of the table is <span class=
+ "c1"><tt>size</tt></span>, and the number of entries in
+ it is <span class="c1"><tt>num_entries</tt></span>.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link14" id="link14">Private Methods</a></h2>
+
+ <h3><a name="link15" id="link15">Overrides</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b> <b>void</b>
+ do_resize
+ (<a href="#size_type55424436"><tt>size_type</tt></a> new_size)
+</pre>
+ </td>
+
+ <td>
+ <p>Resizes to <span class=
+ "c1"><tt>new_size</tt></span>.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_policy_cd.png b/libstdc++-v3/doc/html/ext/pb_ds/hash_policy_cd.png
new file mode 100644
index 000000000..f3122a112
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/hash_policy_cd.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_prime_size_policy.html b/libstdc++-v3/doc/html/ext/pb_ds/hash_prime_size_policy.html
new file mode 100644
index 000000000..8976767b4
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/hash_prime_size_policy.html
@@ -0,0 +1,149 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>hash_prime_size_policy Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>hash_prime_size_policy</tt> Interface</h1>
+
+ <p>A size policy whose sequence of sizes form a
+ nearly-exponential sequence of primes.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/hash_policy.hpp"><tt>hash_policy.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link2" id="link2">General Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="size_type55424436" id="size_type55424436">size_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+size_t
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link3" id="link3">Public Methods</a></h2>
+
+ <h3><a name="link4" id="link4">Constructors, Destructor, and
+ Related</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ hash_prime_size_policy
+ (<a href=
+"#size_type55424436"><tt>size_type</tt></a> start_size = 8)
+</pre>
+ </td>
+
+ <td>
+ <p>Default constructor, or constructor taking a
+ <span class="c1"><tt>start_size</tt></span> The policy
+ will use the sequence of sizes approximately <span class=
+ "c1"><tt>start_size</tt></span>, <span class=
+ "c1"><tt>start_size</tt></span> * 2, <span class=
+ "c1"><tt>start_size</tt></span> * 2^2, ...</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ swap
+ (<span class=
+"c2"><tt>hash_prime_size_policy</tt></span> &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Swaps content.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link5" id="link5">Protected Methods</a></h2>
+
+ <h3><a name="link6" id="link6">Size methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#size_type55424436"><tt>size_type</tt></a>
+ get_nearest_larger_size
+ (<a href=
+"#size_type55424436"><tt>size_type</tt></a> size) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Given a size <span class="c1"><tt>size</tt></span>,
+ returns a size that is larger.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#size_type55424436"><tt>size_type</tt></a>
+ get_nearest_smaller_size
+ (<a href=
+"#size_type55424436"><tt>size_type</tt></a> size) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Given a size <span class="c1"><tt>size</tt></span>,
+ returns a size that is smaller.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test.html b/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test.html
new file mode 100644
index 000000000..2867595b0
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test.html
@@ -0,0 +1,173 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+<title>Tree Text Locality of Reference Timing Test</title>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+</head>
+<body>
+<div id="page">
+<h1>Hash-Based Erase Memory-Use Test</h1>
+<h2><a name="description" id="description">Description</a></h2>
+<p>This test inserts a number of uniform i.i.d. integer keys
+ into a container, then erases all keys except one. It measures
+ the final size of the container.</p>
+<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/hash_random_int_erase_mem_usage.cc"><tt>hash_random_int_erase_mem_usage.cc</tt></a>
+ 2000 2000 2100)</p>
+<h2><a name="purpose" id="purpose">Purpose</a></h2>
+<p>The test checks how containers adjust internally as their
+ logical size decreases (see <a href="motivation.html#assoc_ers_methods">Motivation::Associative
+ Containers::Slightly Different Methods::Methods Related to
+ Erase</a>).</p>
+<h2><a name="results" id="results">Results</a></h2>
+<p>Figures <a href="#NHG">NHG</a>, <a href="#NHM">NHM</a> and
+ <a href="#NHL">NHL</a> show the results for the native and
+ collision-chaining types in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a> and
+ <a href="assoc_performance_tests.html#local"><u>local</u></a>,
+ respectively.</p>
+<div id="NHG_res_div">
+<div id="NHG_gcc">
+<div id="NHG_hash_random_int_erase_mem_usage_test">
+<div id="NHG_assoc">
+<div id="NHG_Native_456_collision-chaing_456_and_probing_456_hash_random_int_erase_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHG" id="NHG"><img src="hash_random_int_erase_mem_usage_test_gcc.png" alt="no image" /></a></h6>NHG: Native, collision-chaing, and probing, hash random int erase test - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_hash_set_ncah-
+<tt>std::tr1::unordered_set</tt> with <tt>cache_hash_code</tt> = <tt><b>false</b></tt></li>
+<li>
+gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_set-
+<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a>
+ with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="linear_probe_fn.html"><tt>linear_probe_fn</tt></a>
+</li>
+<li>
+cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_set-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/1</i></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NHM_res_div">
+<div id="NHM_msvc">
+<div id="NHM_hash_random_int_erase_mem_usage_test">
+<div id="NHM_assoc">
+<div id="NHM_Native_456_collision-chaing_456_and_probing_456_hash_random_int_erase_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHM" id="NHM"><img src="hash_random_int_erase_mem_usage_test_msvc.png" alt="no image" /></a></h6>NHM: Native, collision-chaing, and probing, hash random int erase test - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_hash_set_ncah-
+<tt>stdext::hash_set</tt></li>
+<li>
+gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_set-
+<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a>
+ with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="linear_probe_fn.html"><tt>linear_probe_fn</tt></a>
+</li>
+<li>
+cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_set-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/1</i></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NHM_res_div">
+<div id="NHM_msvc">
+<div id="NHM_hash_random_int_erase_mem_usage_test">
+<div id="NHM_assoc">
+<div id="NHM_Native_456_collision-chaing_456_and_probing_456_hash_random_int_erase_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHM" id="NHM"><img src="hash_random_int_erase_mem_usage_test_msvc.png" alt="no image" /></a></h6>NHM: Native, collision-chaing, and probing, hash random int erase test - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_hash_set_ncah-
+<tt>stdext::hash_set</tt></li>
+<li>
+gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_set-
+<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a>
+ with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="linear_probe_fn.html"><tt>linear_probe_fn</tt></a>
+</li>
+<li>
+cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_set-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/1</i></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NHL_res_div">
+<div id="NHL_local">
+<div id="NHL_hash_random_int_erase_mem_usage_test">
+<div id="NHL_assoc">
+<div id="NHL_Native_456_collision-chaing_456_and_probing_456_hash_random_int_erase_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHL" id= "NHL"><img src="hash_random_int_erase_mem_usage_test_local.png" alt="no image" /></a></h6>NHL: Native, collision-chaing, and probing, hash random int erase test - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<h2><a name="observations" id="observations">Observations</a></h2>
+<p>STL hash-based containers act very differently than trees in
+ this respect. When erasing numerous keys from an STL
+ associative-container, the resulting memory user varies greatly
+ depending on whether the container is tree-based or hash-based.
+ As noted in <a href="motivation.html#assoc_methods">Motivation::Choice of
+ Methods</a> , this is a fundamental consequence of the STL's
+ associative containers' interface, it is not due to a specific
+ implementation.</p>
+<p>(See <a href="priority_queue_text_pop_mem_usage_test.html">Priority Queue
+ Text <tt>pop</tt> Memory Use Test</a> for a similar phenomenon
+ regarding priority queues.)</p>
+</div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test_gcc.png
new file mode 100644
index 000000000..c552506a7
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test_local.png b/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test_local.png
new file mode 100644
index 000000000..dbd3ee9d3
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test_msvc.png
new file mode 100644
index 000000000..8c23d46da
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_find_find_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_find_find_timing_test.html
new file mode 100644
index 000000000..b6066e7cf
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_find_find_timing_test.html
@@ -0,0 +1,247 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+<title>Hash Random Int Find Timing Test</title>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+</head>
+<body>
+<div id="page">
+<h1>Hash-Based Random-Integer <tt>find</tt> Find Timing
+ Test</h1>
+<h2><a name="description" id="description">Description</a></h2>
+<p>This test inserts a number of values with uniform i.i.d.
+ integer keys into a container, then performs a series of finds
+ using <tt>find</tt>. It measures the average time
+ for<tt>find</tt> as a function of the number of values
+ inserted.</p>
+<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/random_int_find_timing.cc"><tt>random_int_find_timing_test</tt></a>
+ 200 200 2100)</p>
+<h2><a name="purpose" id="purpose">Purpose</a></h2>
+<p>The test checks the effect of different underlying
+ hash-tables (see <a href="hash_based_containers.html">Design::Associative
+ Containers::Associative Containers::Hash-Based Containers</a>),
+ range-hashing functions, and trigger policies (see <a href="hash_based_containers.html#hash_policies">Design::Associative
+ Containers::Hash-Based Containers::Hash Policies</a> and
+ <a href="hash_based_containers.html#resize_policies">Design::Associative
+ Containers::Hash-Based Containers::Resize Policies</a>).</p>
+<h2><a name="results" id="results">Results</a></h2>
+<p>Figures <a href="#NCCG">NCCG</a>, <a href="#NCCM">NCCM</a>,
+ and <a href="#NCCL">NCCL</a> show the results for the native
+ and collision-chaining types in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>MSVC++</u></a>, and
+ <a href="assoc_performance_tests.html#local"><u>local</u></a>,
+ respectively; Figures <a href="#NGPG">NGPG</a>, <a href="#NGPM">NGPM</a>, and <a href="#NGPL">NGPL</a> show the results
+ for the native and probing types in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>MSVC++</u></a>, and
+ <a href="assoc_performance_tests.html#local"><u>local</u></a>
+ respectively.</p>
+<div id="NCCG_res_div">
+<div id="NCCG_gcc">
+<div id="NCCG_cc_hash_random_int_find_timing_test">
+<div id="NCCG_assoc">
+<div id="NCCG_Native_and_collision-chaining_hash_random_int_find_timing_test_using__tt_find_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NCCG" id="NCCG"><img src="cc_hash_random_int_find_timing_test_gcc.png" alt="no image" /></a></h6>NCCG: Native and collision-chaining hash random int find timing test using <tt>find</tt> - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_hash_map_ncah-
+<tt>std::tr1::unordered_map</tt> with <tt>cache_hash_code</tt> = <tt><b>false</b></tt></li>
+<li>
+cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/1</i></li>
+<li>
+cc_hash_mod_prime_nea_lc_1div8_1div2_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/1</i></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NCCM_res_div">
+<div id="NCCM_msvc">
+<div id="NCCM_cc_hash_random_int_find_timing_test">
+<div id="NCCM_assoc">
+<div id="NCCM_Native_and_collision-chaining_hash_random_int_find_timing_test_using__tt_find_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NCCM" id="NCCM"><img src="cc_hash_random_int_find_timing_test_msvc.png" alt="no image" /></a></h6>NCCM: Native and collision-chaining hash random int find timing test using <tt>find</tt> - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/1</i></li>
+<li>
+cc_hash_mod_prime_nea_lc_1div8_1div2_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+<li>
+n_hash_map_ncah-
+<tt>stdext::hash_map</tt></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/1</i></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NCCL_res_div">
+<div id="NCCL_local">
+<div id="NCCL_cc_hash_random_int_find_timing_test">
+<div id="NCCL_assoc">
+<div id="NCCL_Native_and_collision-chaining_hash_random_int_find_timing_test_using__tt_find_455tt_"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NCCL" id= "NCCL"><img src="cc_hash_random_int_find_timing_test_local.png" alt="no image" /></a></h6>NCCL: Native and collision-chaining hash random int find timing test using <tt>find</tt> - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NGPG_res_div">
+<div id="NGPG_gcc">
+<div id="NGPG_gp_hash_random_int_find_timing_test">
+<div id="NGPG_assoc">
+<div id="NGPG_Native_and_collision-chaining_hash_random_int_find_timing_test_using__tt_find_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NGPG" id="NGPG"><img src="gp_hash_random_int_find_timing_test_gcc.png" alt="no image" /></a></h6>NGPG: Native and collision-chaining hash random int find timing test using <tt>find</tt> - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map-
+<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a>
+ with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="quadratic_probe_fn.html"><tt>quadratic_probe_fn</tt></a>
+</li>
+<li>
+n_hash_map_ncah-
+<tt>std::tr1::unordered_map</tt> with <tt>cache_hash_code</tt> = <tt><b>false</b></tt></li>
+<li>
+gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_map-
+<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a>
+ with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="linear_probe_fn.html"><tt>linear_probe_fn</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NGPM_res_div">
+<div id="NGPM_msvc">
+<div id="NGPM_gp_hash_random_int_find_timing_test">
+<div id="NGPM_assoc">
+<div id="NGPM_Native_and_collision-chaining_hash_random_int_find_timing_test_using__tt_find_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NGPM" id="NGPM"><img src="gp_hash_random_int_find_timing_test_msvc.png" alt="no image" /></a></h6>NGPM: Native and collision-chaining hash random int find timing test using <tt>find</tt> - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map-
+<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a>
+ with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="quadratic_probe_fn.html"><tt>quadratic_probe_fn</tt></a>
+</li>
+<li>
+n_hash_map_ncah-
+<tt>stdext::hash_map</tt></li>
+<li>
+gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_map-
+<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a>
+ with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="linear_probe_fn.html"><tt>linear_probe_fn</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NGPL_res_div">
+<div id="NGPL_local">
+<div id="NGPL_gp_hash_random_int_find_timing_test">
+<div id="NGPL_assoc">
+<div id="NGPL_Native_and_collision-chaining_hash_random_int_find_timing_test_using__tt_find_455tt_"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NGPL" id= "NGPL"><img src="gp_hash_random_int_find_timing_test_local.png" alt="no image" /></a></h6>NGPL: Native and collision-chaining hash random int find timing test using <tt>find</tt> - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<h2><a name="observations" id="observations">Observations</a></h2>
+<p>In this setting, the choice of underlying hash-table (see
+ <a href="hash_based_containers.html">Design::Associative
+ Containers::Hash-Based Containers</a> ) affects performance
+ most, then the range-hashing scheme (See <a href="hash_based_containers.html#hash_policies">Design::Associative
+ Containers::Hash-Based Containers::Hash Policies</a> ), and,
+ only finally, other policies.</p>
+<p>When comparing Figures <a href="#NCCG">NCCG</a> and <a href="#NCCM">NCCM</a> to <a href="#NGPG">NGPG</a> and <a href="#NGPM">NGPM</a> , respectively, it is apparent that the
+ probing containers are less efficient than the
+ collision-chaining containers (both
+ <tt>std::tr1::unordered_map</tt> and <tt>stdext::hash_map</tt>
+ use collision-chaining) in this case.</p>
+<p>( <a href="hash_random_int_subscript_insert_timing_test.html">Hash-Based
+ Random-Integer Subscript Insert Timing Test</a> shows a
+ different case, where the situation is reversed; <a href="assoc_performance_tests.html#hash_based_types">Observations::Hash-Based
+ Container Types</a> discusses some further considerations.)</p>
+<p>Within each type of hash-table, the range-hashing scheme
+ affects performance more than other policies; <a href="hash_text_find_find_timing_test.html#observations">Hash-Based
+ Text <tt>find</tt> Find Timing Test::Observations</a> discusses
+ this. In Figures <a href="#NCCG">NCCG</a> , <a href="#NCCM">NCCM</a> , <a href="#NGPG">NGPG</a> , and <a href="#NGPM">NGPM</a> , it should be noted that
+ <tt>std::tr1::unordered_map</tt> and <tt>stdext::hash_map</tt>
+ are hard-wired currently to mod-based and mask-based schemes,
+ respectively.</p>
+<p><a href="assoc_performance_tests.html#hash_based_types">Observations::Hash-Based
+ Container Types</a> summarizes some observations on hash-based
+ containers; <a href="assoc_performance_tests.html#hash_based_policies">Observations::Hash-Based
+ Containers' Policies</a> summarizes some observations on
+ hash-based containers' policies.</p>
+</div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_subscript_find_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_subscript_find_timing_test.html
new file mode 100644
index 000000000..002516370
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_subscript_find_timing_test.html
@@ -0,0 +1,220 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+<title>Hash Random Int Subscript Find Timing Test</title>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+</head>
+<body>
+<div id="page">
+<h1>Hash-Based Random-Integer <tt><b>operator</b>[]</tt>
+ FindTiming Test</h1>
+<h2><a name="description" id="description">Description</a></h2>
+<p>This test inserts a number of values with uniform i.i.d.
+ integer keys into a container, then performs a series of finds
+ using <tt><b>operator</b>[]</tt>. It measures the average time
+ for <tt><b>operator</b>[]</tt> as a function of the number of
+ values inserted.</p>
+<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/random_int_subscript_find_timing.cc"><tt>hash_random_int_subscript_find_timing_test</tt></a>
+ 200 200 2100)</p>
+<h2><a name="purpose" id="purpose">Purpose</a></h2>
+<p>The test checks the effect of different underlying
+ hash-tables (see <a href="hash_based_containers.html">Design::Hash-Based Containers</a>
+ ), range-hashing functions, and trigger policies (see <a href="hash_based_containers.html#hash_policies">Design::Hash-Based
+ Containers::Hash Policies</a> and <a href="hash_based_containers.html#resize_policies">Design::Hash-Based
+ Containers::Resize Policies</a> ).</p>
+<h2><a name="results" id="results">Results</a></h2>
+<p>Figures <a href="#NCCG">NCCG</a>, <a href="#NCCM">NCCM</a>,
+ and <a href="#NCCL">NCCL</a> show the results for the native
+ and collision-chaining types in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>MSVC++</u></a>, and
+ <a href="assoc_performance_tests.html#local"><u>local</u></a>,
+ respectively; Figures <a href="#NGPG">NGPG</a>, <a href="#NGPM">NGPM</a>, and <a href="#NGPL">NGPL</a> show the results
+ for the native and probing types in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>MSVC++</u></a>, and
+ <a href="assoc_performance_tests.html#local"><u>local</u></a>,
+ respectively.</p>
+<div id="NCCG_res_div">
+<div id="NCCG_gcc">
+<div id="NCCG_cc_hash_random_int_subscript_timing_test_find">
+<div id="NCCG_assoc">
+<div id="NCCG_Native_and_collision-chaining_hash_random_int_find_timing_test_using__tt__b_operator_455b__455tt__457"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NCCG" id="NCCG"><img src="cc_hash_random_int_subscript_timing_test_find_gcc.png" alt="no image" /></a></h6>NCCG: Native and collision-chaining hash random int find timing test using <tt><b>operator</b></tt>[] - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_hash_map_ncah-
+<tt>std::tr1::unordered_map</tt> with <tt>cache_hash_code</tt> = <tt><b>false</b></tt></li>
+<li>
+cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/1</i></li>
+<li>
+cc_hash_mod_prime_nea_lc_1div8_1div2_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/1</i></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NCCM_res_div">
+<div id="NCCM_msvc">
+<div id="NCCM_cc_hash_random_int_subscript_timing_test_find">
+<div id="NCCM_assoc">
+<div id="NCCM_Native_and_collision-chaining_hash_random_int_find_timing_test_using__tt__b_operator_455b__455tt__457"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NCCM" id="NCCM"><img src="cc_hash_random_int_subscript_timing_test_find_msvc.png" alt="no image" /></a></h6>NCCM: Native and collision-chaining hash random int find timing test using <tt><b>operator</b></tt>[] - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/1</i></li>
+<li>
+cc_hash_mod_prime_nea_lc_1div8_1div2_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+<li>
+n_hash_map_ncah-
+<tt>stdext::hash_map</tt></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/1</i></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NCCL_res_div">
+<div id="NCCL_local">
+<div id="NCCL_cc_hash_random_int_subscript_timing_test_find">
+<div id="NCCL_assoc">
+<div id="NCCL_Native_and_collision-chaining_hash_random_int_find_timing_test_using__tt__b_operator_455b__455tt__457"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NCCL" id= "NCCL"><img src="cc_hash_random_int_subscript_timing_test_find_local.png" alt="no image" /></a></h6>NCCL: Native and collision-chaining hash random int find timing test using <tt><b>operator</b></tt>[] - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NGPG_res_div">
+<div id="NGPG_gcc">
+<div id="NGPG_gp_hash_random_int_subscript_timing_test_find">
+<div id="NGPG_assoc">
+<div id="NGPG_Native_and_probing_hash_random_int_find_timing_test_using__tt__b_operator_455b__455tt__457"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NGPG" id="NGPG"><img src="gp_hash_random_int_subscript_timing_test_find_gcc.png" alt="no image" /></a></h6>NGPG: Native and probing hash random int find timing test using <tt><b>operator</b></tt>[] - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_hash_map_ncah-
+<tt>std::tr1::unordered_map</tt> with <tt>cache_hash_code</tt> = <tt><b>false</b></tt></li>
+<li>
+gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map-
+<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a>
+ with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="quadratic_probe_fn.html"><tt>quadratic_probe_fn</tt></a>
+</li>
+<li>
+gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_map-
+<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a>
+ with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="linear_probe_fn.html"><tt>linear_probe_fn</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NGPM_res_div">
+<div id="NGPM_msvc">
+<div id="NGPM_gp_hash_random_int_subscript_timing_test_find">
+<div id="NGPM_assoc">
+<div id="NGPM_Native_and_probing_hash_random_int_find_timing_test_using__tt__b_operator_455b__455tt__457"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NGPM" id="NGPM"><img src="gp_hash_random_int_subscript_timing_test_find_msvc.png" alt="no image" /></a></h6>NGPM: Native and probing hash random int find timing test using <tt><b>operator</b></tt>[] - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map-
+<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a>
+ with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="quadratic_probe_fn.html"><tt>quadratic_probe_fn</tt></a>
+</li>
+<li>
+n_hash_map_ncah-
+<tt>stdext::hash_map</tt></li>
+<li>
+gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_map-
+<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a>
+ with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="linear_probe_fn.html"><tt>linear_probe_fn</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NGPL_res_div">
+<div id="NGPL_local">
+<div id="NGPL_gp_hash_random_int_subscript_timing_test_find">
+<div id="NGPL_assoc">
+<div id="NGPL_Native_and_probing_hash_random_int_find_timing_test_using__tt__b_operator_455b__455tt__457"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NGPL" id= "NGPL"><img src="gp_hash_random_int_subscript_timing_test_find_local.png" alt="no image" /></a></h6>NGPL: Native and probing hash random int find timing test using <tt><b>operator</b></tt>[] - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<h2><a name="observations" id="observations">Observations</a></h2>
+<p>This test shows similar results to <a href="hash_random_int_find_find_timing_test.html">Hash-Based
+ Random-Integer <tt>find</tt> Find Timing Test</a> .</p>
+</div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_subscript_insert_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_subscript_insert_timing_test.html
new file mode 100644
index 000000000..a15d03ba4
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_subscript_insert_timing_test.html
@@ -0,0 +1,365 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+<title>Hash Random Int Subscript Insert Timing Test</title>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+</head>
+<body>
+<div id="page">
+<h1>Hash-Based Random-Integer <tt><b>operator</b>[]</tt> Insert
+ Timing Test</h1>
+<h2><a name="description" id="description">Description</a></h2>
+<p>This test inserts a number of values with uniform i.i.d.
+ integer keys into a container, using
+ <tt><b>operator</b>[]</tt>. It measures the average time for
+ <tt><b>operator</b>[]</tt> as a function of the number of
+ values inserted.</p>
+<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/random_int_subscript_insert_timing.cc"><tt>hash_random_int_subscript_insert_timing_test</tt></a>
+ 200 200 2100)</p>
+<h2><a name="purpose" id="purpose">Purpose</a></h2>
+<p>The test primarily checks the effect of different underlying
+ hash-tables (see <a href="hash_based_containers.html">Design::Associative
+ Containers::Associative Containers::Hash-Based
+ Containers</a>).</p>
+<h2><a name="results" id="results">Results</a></h2>
+<p>Figures <a href="#NCCG">NCCG</a>, <a href="#NCCM">NCCM</a>,
+ and <a href="#NCCL">NCCL</a> show the results for the native
+ and collision-chaining types in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>MSVC++</u></a>, and
+ <a href="assoc_performance_tests.html#local"><u>local</u></a>,
+ respectively; Figures <a href="#NGPG">NGPG</a>, <a href="#NGPM">NGPM</a>, and <a href="#NGPL">NGPL</a> show the results
+ for the native and probing types in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>, and
+ <a href="assoc_performance_tests.html#local"><u>local</u></a>
+ respectively; Figures <a href="#CCGPG">CCGPG</a>, <a href="#CCGPM">CCGPM</a>, and <a href="#CCGPL">CCGPL</a> compare the
+ results for the collision-chaining and probing types of
+ <tt>pb_ds</tt> only, in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>MSVC++</u></a>, and
+ <a href="assoc_performance_tests.html#local"><u>local</u></a>
+ respectively.</p>
+<div id="NCCG_res_div">
+<div id="NCCG_gcc">
+<div id="NCCG_cc_hash_random_int_subscript_timing_test_insert">
+<div id="NCCG_assoc">
+<div id="NCCG_Native_and_collision-chaining_hash_random_int_insert_timing_test_using__tt__b_operator_455b__455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NCCG" id="NCCG"><img src="cc_hash_random_int_subscript_timing_test_insert_gcc.png" alt="no image" /></a></h6>NCCG: Native and collision-chaining hash random int insert timing test using <tt><b>operator</b></tt> - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+cc_hash_mod_prime_nea_lc_1div8_1div2_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+<li>
+n_hash_map_ncah-
+<tt>std::tr1::unordered_map</tt> with <tt>cache_hash_code</tt> = <tt><b>false</b></tt></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+<li>
+cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/1</i></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/1</i></li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NCCM_res_div">
+<div id="NCCM_msvc">
+<div id="NCCM_cc_hash_random_int_subscript_timing_test_insert">
+<div id="NCCM_assoc">
+<div id="NCCM_Native_and_collision-chaining_hash_random_int_insert_timing_test_using__tt__b_operator_455b__455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NCCM" id="NCCM"><img src="cc_hash_random_int_subscript_timing_test_insert_msvc.png" alt="no image" /></a></h6>NCCM: Native and collision-chaining hash random int insert timing test using <tt><b>operator</b></tt> - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_hash_map_ncah-
+<tt>stdext::hash_map</tt></li>
+<li>
+cc_hash_mod_prime_nea_lc_1div8_1div2_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+<li>
+cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/1</i></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/1</i></li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NCCL_res_div">
+<div id="NCCL_local">
+<div id="NCCL_cc_hash_random_int_subscript_timing_test_insert">
+<div id="NCCL_assoc">
+<div id="NCCL_Native_and_collision-chaining_hash_random_int_insert_timing_test_using__tt__b_operator_455b__455tt_"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NCCL" id= "NCCL"><img src="cc_hash_random_int_subscript_timing_test_insert_local.png" alt="no image" /></a></h6>NCCL: Native and collision-chaining hash random int insert timing test using <tt><b>operator</b></tt> - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NGPG_res_div">
+<div id="NGPG_gcc">
+<div id="NGPG_gp_hash_random_int_subscript_timing_test_insert">
+<div id="NGPG_assoc">
+<div id="NGPG_Native_and_probing_hash_random_int_insert_timing_test_using__tt__b_operator_455b__455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NGPG" id="NGPG"><img src="gp_hash_random_int_subscript_timing_test_insert_gcc.png" alt="no image" /></a></h6>NGPG: Native and probing hash random int insert timing test using <tt><b>operator</b></tt> - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map-
+<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a>
+ with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="quadratic_probe_fn.html"><tt>quadratic_probe_fn</tt></a>
+</li>
+<li>
+n_hash_map_ncah-
+<tt>std::tr1::unordered_map</tt> with <tt>cache_hash_code</tt> = <tt><b>false</b></tt></li>
+<li>
+gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_map-
+<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a>
+ with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="linear_probe_fn.html"><tt>linear_probe_fn</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NGPM_res_div">
+<div id="NGPM_msvc">
+<div id="NGPM_gp_hash_random_int_subscript_timing_test_insert">
+<div id="NGPM_assoc">
+<div id="NGPM_Native_and_probing_hash_random_int_insert_timing_test_using__tt__b_operator_455b__455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NGPM" id="NGPM"><img src="gp_hash_random_int_subscript_timing_test_insert_msvc.png" alt="no image" /></a></h6>NGPM: Native and probing hash random int insert timing test using <tt><b>operator</b></tt> - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_hash_map_ncah-
+<tt>stdext::hash_map</tt></li>
+<li>
+gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map-
+<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a>
+ with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="quadratic_probe_fn.html"><tt>quadratic_probe_fn</tt></a>
+</li>
+<li>
+gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_map-
+<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a>
+ with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="linear_probe_fn.html"><tt>linear_probe_fn</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NGPL_res_div">
+<div id="NGPL_local">
+<div id="NGPL_gp_hash_random_int_subscript_timing_test_insert">
+<div id="NGPL_assoc">
+<div id="NGPL_Native_and_probing_hash_random_int_insert_timing_test_using__tt__b_operator_455b__455tt_"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NGPL" id= "NGPL"><img src="gp_hash_random_int_subscript_timing_test_insert_local.png" alt="no image" /></a></h6>NGPL: Native and probing hash random int insert timing test using <tt><b>operator</b></tt> - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="CCGPG_res_div">
+<div id="CCGPG_gcc">
+<div id="CCGPG_ccgp_hash_random_int_subscript_timing_test_insert">
+<div id="CCGPG_assoc">
+<div id="CCGPG_Collision-chaining_and_probing_hash_random_int_insert_timing_test_using__tt__b_operator_455b__455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="CCGPG" id="CCGPG"><img src="ccgp_hash_random_int_subscript_timing_test_insert_gcc.png" alt="no image" /></a></h6>CCGPG: Collision-chaining and probing hash random int insert timing test using <tt><b>operator</b></tt> - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map-
+<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a>
+ with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="quadratic_probe_fn.html"><tt>quadratic_probe_fn</tt></a>
+</li>
+<li>
+cc_hash_mod_prime_nea_lc_1div8_1div2_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+<li>
+gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_map-
+<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a>
+ with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="linear_probe_fn.html"><tt>linear_probe_fn</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="CCGPM_res_div">
+<div id="CCGPM_msvc">
+<div id="CCGPM_ccgp_hash_random_int_subscript_timing_test_insert">
+<div id="CCGPM_assoc">
+<div id="CCGPM_Collision-chaining_and_probing_hash_random_int_insert_timing_test_using__tt__b_operator_455b__455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="CCGPM" id="CCGPM"><img src="ccgp_hash_random_int_subscript_timing_test_insert_msvc.png" alt="no image" /></a></h6>CCGPM: Collision-chaining and probing hash random int insert timing test using <tt><b>operator</b></tt> - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+cc_hash_mod_prime_nea_lc_1div8_1div2_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+<li>
+gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map-
+<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a>
+ with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="quadratic_probe_fn.html"><tt>quadratic_probe_fn</tt></a>
+</li>
+<li>
+gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_map-
+<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a>
+ with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="linear_probe_fn.html"><tt>linear_probe_fn</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="CCGPL_res_div">
+<div id="CCGPL_local">
+<div id="CCGPL_ccgp_hash_random_int_subscript_timing_test_insert">
+<div id="CCGPL_assoc">
+<div id="CCGPL_Collision-chaining_and_probing_hash_random_int_insert_timing_test_using__tt__b_operator_455b__455tt_"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="CCGPL" id= "CCGPL"><img src="ccgp_hash_random_int_subscript_timing_test_insert_local.png" alt="no image" /></a></h6>CCGPL: Collision-chaining and probing hash random int insert timing test using <tt><b>operator</b></tt> - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<h2><a name="observations" id="observations">Observations</a></h2>
+<p>In this setting, as in <a href="hash_text_find_find_timing_test.html">Hash-Based Text
+ <tt>find</tt> Find Timing Test</a> and <a href="hash_random_int_find_find_timing_test.html">Hash-Based
+ Random-Integer <tt>find</tt> Find Timing Test</a> , the choice
+ of underlying hash-table underlying hash-table (see <a href="hash_based_containers.html">Design::Associative
+ Containers::Hash-Based Containers</a> ) affects performance
+ most, then the range-hashing scheme (See <a href="hash_based_containers.html#hash_policies">Design::Associative
+ Containers::Hash-Based Containers::Hash Policies</a> ), and,
+ only finally, other policies.</p>
+<p>There are some differences, however:</p>
+<ol>
+<li>In this setting, probing tables function sometimes more
+ efficiently than collision-chaining tables (see Figures
+ <a href="#CCGPG">CCGPG</a> and <a href="#CCGPM">CCGPM</a> ).
+ This is explained shortly.</li>
+<li>The performance graphs have a "saw-tooth" shape. The
+ average insert time rises and falls. As values are inserted
+ into the container, the load factor grows larger. Eventually,
+ a resize occurs. The reallocations and rehashing are
+ relatively expensive. After this, the load factor is smaller
+ than before.</li>
+</ol>
+<p>Collision-chaining containers use indirection for greater
+ flexibility; probing containers store values contiguously, in
+ an array (see Figure <a href="motivation.html#different_underlying_data_structures">Motivation::Different
+ underlying data structures</a> A and B, respectively). It
+ follows that for simple data types, probing containers access
+ their allocator less frequently than collision-chaining
+ containers, (although they still have less efficient probing
+ sequences). This explains why some probing containers fare
+ better than collision-chaining containers in this case.</p>
+<p>Within each type of hash-table, the range-hashing scheme
+ affects performance more than other policies. This is similar
+ to the situation in <a href="hash_text_find_find_timing_test.html">Hash-Based Text
+ <tt>find</tt> Find Timing Test</a> and <a href="hash_random_int_find_find_timing_test.html">Hash-Based
+ Random-Integer <tt>find</tt> Find Timing Test</a>.
+ Unsurprisingly, however, containers with <u>lower</u>
+<i>alpha<sub>max</sub></i> perform <u>worse</u> in this case,
+ since more re-hashes are performed.</p>
+<p><a href="assoc_performance_tests.html#hash_based_types">Observations::Hash-Based
+ Container Types</a> summarizes some observations on hash-based
+ containers; <a href="assoc_performance_tests.html#hash_based_policies">Observations::Hash-Based
+ Containers' Policies</a> summarizes some observations on
+ hash-based containers' policies.</p>
+</div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_range_hashing_seq_diagram.png b/libstdc++-v3/doc/html/ext/pb_ds/hash_range_hashing_seq_diagram.png
new file mode 100644
index 000000000..5c37407dd
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/hash_range_hashing_seq_diagram.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_range_hashing_seq_diagram2.png b/libstdc++-v3/doc/html/ext/pb_ds/hash_range_hashing_seq_diagram2.png
new file mode 100644
index 000000000..87763caac
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/hash_range_hashing_seq_diagram2.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_ranged_hash_range_hashing_fns.png b/libstdc++-v3/doc/html/ext/pb_ds/hash_ranged_hash_range_hashing_fns.png
new file mode 100644
index 000000000..5e0d7f403
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/hash_ranged_hash_range_hashing_fns.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_standard_resize_policy.html b/libstdc++-v3/doc/html/ext/pb_ds/hash_standard_resize_policy.html
new file mode 100644
index 000000000..8dbc57ce2
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/hash_standard_resize_policy.html
@@ -0,0 +1,795 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>hash_standard_resize_policy Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>hash_standard_resize_policy</tt> Interface</h1>
+
+ <p>A resize policy which delegates operations to size and
+ trigger policies.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/hash_policy.hpp"><tt>hash_policy.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Template Parameters</a></h2>
+
+ <table class="c1" width="100%" border="1" summary=
+ "Template Parameters">
+ <tr>
+ <td width="20%" align="left"><b>Parameter</b></td>
+
+ <td width="50%" align="left"><b>Description</b></td>
+
+ <td width="30%" align="left"><b>Default Value</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Size_Policy1072992366" id=
+"Size_Policy1072992366"><b>class</b> Size_Policy </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Size policy type.</p>
+ </td>
+
+ <td><a href=
+ "hash_exponential_size_policy.html"><span class="c2"><tt>hash_exponential_size_policy</tt></span></a></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Trigger_Policy3611271815" id=
+"Trigger_Policy3611271815"><b>class</b> Trigger_Policy </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Trigger policy type.</p>
+ </td>
+
+ <td><a href=
+ "hash_load_check_resize_trigger.html"><span class=
+ "c2"><tt>hash_load_check_resize_trigger</tt></span></a></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="External_Size_Access1380482982" id=
+"External_Size_Access1380482982"><b>bool</b> External_Size_Access </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Indicates whether physical sizes can be accessed
+ externally.</p>
+ </td>
+
+ <td><tt><b>false</b></tt></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Size_Type42920436" id=
+"Size_Type42920436"><b>typename</b> Size_Type </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+
+ <td>size_t</td>
+ </tr>
+ </table>
+
+ <h2><a name="link2" id="link2">Base Classes</a></h2>
+
+ <table class="c1" width="100%" border="1" summary="Bases">
+ <tr>
+ <td width="80%" align="left"><b>Class</b></td>
+
+ <td width="20%" align="left"><b>Derivation Type</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#Size_Policy1072992366"><tt>Size_Policy</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link3" id="link3">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link4" id="link4">General Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="size_type55424436" id="size_type55424436">size_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Size_Type42920436"><tt>Size_Type</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link5" id="link5">Policy Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="trigger_policy4019166151" id=
+"trigger_policy4019166151">trigger_policy</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Trigger policy type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="size_policy1385592366" id=
+"size_policy1385592366">size_policy</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Size_Policy1072992366"><tt>Size_Policy</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Size policy type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="external_size_access4043083014" id=
+"external_size_access4043083014">external_size_access</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href=
+"#External_Size_Access1380482982"><tt>External_Size_Access</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Indicates whether sizes can be accessed
+ externally.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link6" id="link6">Public Methods</a></h2>
+
+ <h3><a name="link7" id="link7">Constructors, Destructor, and
+ Related</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ hash_standard_resize_policy
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Default constructor.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ hash_standard_resize_policy
+ (<b>const</b> <a href=
+"#Size_Policy1072992366"><tt>Size_Policy</tt></a> &amp;r_size_policy)
+</pre>
+ </td>
+
+ <td>
+ <p>constructor taking some policies <span class=
+ "c1"><tt>r_size_policy</tt></span> will be copied by the
+ <a href="#Size_Policy1072992366"><tt>Size_Policy</tt></a>
+ object of this object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ hash_standard_resize_policy
+ (<b>const</b> <a href=
+"#Size_Policy1072992366"><tt>Size_Policy</tt></a> &amp;r_size_policy,
+ <b>const</b> <a href=
+"#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a> &amp;r_trigger_policy)
+</pre>
+ </td>
+
+ <td>
+ <p>constructor taking some policies. <span class=
+ "c1"><tt>r_size_policy</tt></span> will be copied by the
+ <a href="#Size_Policy1072992366"><tt>Size_Policy</tt></a>
+ object of this object. <span class=
+ "c1"><tt>r_trigger_policy</tt></span> will be copied by
+ the <a href=
+ "#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a>
+ object of this object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b>
+ ~hash_standard_resize_policy
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Destructor.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ swap
+ (<span class=
+"c2"><tt>hash_standard_resize_policy</tt></span> &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Swaps content.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link8" id="link8">Policy Access Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#Size_Policy1072992366"><tt>Size_Policy</tt></a> &amp;
+ get_size_policy
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Access to the <a href=
+ "#Size_Policy1072992366"><tt>Size_Policy</tt></a> object
+ used.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>const</b> <a href=
+"#Size_Policy1072992366"><tt>Size_Policy</tt></a> &amp;
+ get_size_policy
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Const access to the <a href=
+ "#Size_Policy1072992366"><tt>Size_Policy</tt></a> object
+ used.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href=
+"#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a> &amp;
+ get_trigger_policy
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Access to the <a href=
+ "#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a>
+ object used.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>const</b> <a href=
+"#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a> &amp;
+ get_trigger_policy
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Access to the <a href=
+ "#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a>
+ object used.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link9" id="link9">Size Access Methods</a></h3>
+
+ <p>These methods are available only if the external size
+ parameter indicates that external size access is allowed.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a>
+ get_actual_size
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the actual size of the container.</p>
+
+ <p>This method returns the number of entries (used and
+ unused) in the container. It is different from the
+ container's size method, which returns the number of used
+ entries. Calling this method will not compile when
+ <a href=
+ "#External_Size_Access1380482982"><tt>External_Size_Access</tt></a>
+ == <tt><b>false</b></tt>.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ resize
+ (<a href=
+"#size_type55424436"><tt>size_type</tt></a> suggested_new_size)
+</pre>
+ </td>
+
+ <td>
+ <p>Resizes the container to <span class=
+ "c1"><tt>suggested_new_size</tt></span>, a suggested size
+ (the actual size will be determined by the <a href=
+ "#Size_Policy1072992366"><tt>Size_Policy</tt></a>
+ object).</p>
+
+ <p>Calling this method will not compile when <a href=
+ "#External_Size_Access1380482982"><tt>External_Size_Access</tt></a>
+ == <tt><b>false</b></tt>.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link10" id="link10">Protected Methods</a></h2>
+
+ <h3><a name="link11" id="link11">Insert Search
+ Notifications.</a></h3>
+
+ <p>Notifications called during an insert operation.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_insert_search_start
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search started.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_insert_search_collision
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search encountered a collision.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_insert_search_end
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search ended.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link12" id="link12">Find Search
+ Notifications.</a></h3>
+
+ <p>Notifications called during a find operation.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_find_search_start
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search started.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_find_search_collision
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search encountered a collision.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_find_search_end
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search ended.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link13" id="link13">Erase Search
+ Notifications.</a></h3>
+
+ <p>Notifications called during an insert operation.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_erase_search_start
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search started.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_erase_search_collision
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search encountered a collision.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_erase_search_end
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search ended.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link14" id="link14">Content Change
+ Notifications</a></h3>
+
+ <p>Notifications called when the content of the table changes
+ in a way that can affect the resize policy.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_inserted
+ (<a href="#size_type55424436"><tt>size_type</tt></a> num_e)
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies an element was inserted.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_erased
+ (<a href="#size_type55424436"><tt>size_type</tt></a> num_e)
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies an element was erased.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ notify_cleared
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies the table was cleared.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link15" id="link15">Size Change
+ Notifications</a></h3>
+
+ <p>Notifications called when the table changes size.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ notify_resized
+ (<a href="#size_type55424436"><tt>size_type</tt></a> new_size)
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies the table was resized to <span class=
+ "c1"><tt>new_size</tt></span>.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link16" id="link16">Queries</a></h3>
+
+ <p>Called to query whether/how to resize.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>bool</b>
+ is_resize_needed
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Queries whether a resize is needed.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#size_type55424436"><tt>size_type</tt></a>
+ get_new_size
+ (<a href="#size_type55424436"><tt>size_type</tt></a> size,
+ <a href=
+"#size_type55424436"><tt>size_type</tt></a> num_used_e) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Queries what the new <span class=
+ "c1"><tt>size</tt></span> should be, when the container
+ is resized naturally. The current size of the container
+ is <span class="c1"><tt>size</tt></span>, and the number
+ of used entries within the container is <span class=
+ "c1"><tt>num_used_e</tt></span>.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link17" id="link17">Private Methods</a></h2>
+
+ <h3><a name="link18" id="link18">Overrides</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b> <b>void</b>
+ do_resize
+ (<a href="#size_type55424436"><tt>size_type</tt></a> new_size)
+</pre>
+ </td>
+
+ <td>
+ <p>Resizes to <span class=
+ "c1"><tt>new_size</tt></span>.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_text_find_find_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/hash_text_find_find_timing_test.html
new file mode 100644
index 000000000..60c30fd34
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/hash_text_find_find_timing_test.html
@@ -0,0 +1,164 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+<title>Hash Text Find Timing Test</title>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+</head>
+<body>
+<div id="page">
+<h1>Hash-Based Text <tt>find</tt> Find Timing Test</h1>
+<h2><a name="description" id="description">Description</a></h2>
+<p>This test inserts a number of values with keys from an
+ arbitrary text ([ <a href="references.html#wickland96thirty">wickland96thirty</a> ]) into
+ a container, then performs a series of finds using
+ <tt>find</tt> . It measures the average time for <tt>find</tt>
+ as a function of the number of values inserted.</p>
+<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/text_find_timing.cc"><tt>text_find_timing_test</tt></a>
+ thirty_years_among_the_dead_preproc.txt 200 200 2100)</p>
+<h2><a name="purpose" id="purpose">Purpose</a></h2>
+<p>The test checks the effect of different range-hashing
+ functions, trigger policies, and cache-hashing policies (see
+ <a href="hash_based_containers.html#hash_policies">Design::Associative
+ Containers::Associative Containers::Hash-Based Containers::Hash
+ Policies</a> and <a href="hash_based_containers.html#resize_policies">Design::Associative
+ Containers::Hash-Based Containers::Resize Policies</a> ).</p>
+<h2><a name="results" id="results">Results</a></h2>
+<p>Figures <a href="#NCCG">NCCG</a>, <a href="#NCCM">NCCM</a>
+ and <a href="#NCCL">NCCL</a> show the results for the native
+ and collision-chaining types in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>, and
+ <a href="assoc_performance_tests.html#local"><u>local</u></a>,
+ respetively.</p>
+<div id="NCCG_res_div">
+<div id="NCCG_gcc">
+<div id="NCCG_text_find_timing_test_hash">
+<div id="NCCG_assoc">
+<div id="NCCG_Native_and_collision-chaining_hash_text_find_timing_test_using__tt_find_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NCCG" id="NCCG"><img src="text_find_timing_test_hash_gcc.png" alt="no image" /></a></h6>NCCG: Native and collision-chaining hash text find timing test using <tt>find</tt> - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_hash_map_ncah-
+<tt>std::tr1::unordered_map</tt> with <tt>cache_hash_code</tt> = <tt><b>false</b></tt></li>
+<li>
+cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/1</i></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_sth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/1</i></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NCCM_res_div">
+<div id="NCCM_msvc">
+<div id="NCCM_text_find_timing_test_hash">
+<div id="NCCM_assoc">
+<div id="NCCM_Native_and_collision-chaining_hash_text_find_timing_test_using__tt_find_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NCCM" id="NCCM"><img src="text_find_timing_test_hash_msvc.png" alt="no image" /></a></h6>NCCM: Native and collision-chaining hash text find timing test using <tt>find</tt> - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_hash_map_ncah-
+<tt>stdext::hash_map</tt></li>
+<li>
+cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/1</i></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/1</i></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_sth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NCCL_res_div">
+<div id="NCCL_local">
+<div id="NCCL_text_find_timing_test_hash">
+<div id="NCCL_assoc">
+<div id="NCCL_Native_and_collision-chaining_hash_text_find_timing_test_using__tt_find_455tt_"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NCCL" id= "NCCL"><img src="text_find_timing_test_hash_local.png" alt="no image" /></a></h6>NCCL: Native and collision-chaining hash text find timing test using <tt>find</tt> - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<h2><a name="observations" id="observations">Observations</a></h2>
+<p>In this setting, the range-hashing scheme (See <a href="hash_based_containers.html#hash_policies">Design::Associative
+ Containers::Hash-Based Containers::Hash Policies</a> ) affects
+ performance more than other policies. As Figure <a href="#NCCG">NCCG</a> shows, containers using mod-based
+ range-hashing (including the native hash-based container, which
+ is currently hard-wired to this scheme) have lower performance
+ than those using mask-based range-hashing. A modulo-based
+ range-hashing scheme's main benefit is that it takes into
+ account all hash-value bits. Standard string hash-functions are
+ designed to create hash values that are nearly-uniform as is [
+ <a href="references.html#knuth98sorting">knuth98sorting</a>
+ ].</p>
+<p>Trigger policies (see <a href="hash_based_containers.html#resize_policies">Design::Associative
+ Containers::Hash-Based Containers::Resize Policies</a> ),
+ <i>i.e.</i> the load-checks constants, affect performance to a
+ lesser extent.</p>
+<p>Perhaps surprisingly, storing the hash value alongside each
+ entry affects performance only marginally, at least in
+ <tt>pb_ds</tt> 's implementation. (Unfortunately, it was not
+ possible to run the tests with <tt>std::tr1::unordered_map</tt>
+ 's <tt>cache_hash_code = <b>true</b></tt> , as it appeared to
+ malfuntion.)</p>
+<p><a href="assoc_performance_tests.html#hash_based_policies">Observations::Hash-Based
+ Containers' Policies</a> summarizes some observations on
+ hash-based containers' policies.</p>
+</div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_zlob_random_int_find_find_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/hash_zlob_random_int_find_find_timing_test.html
new file mode 100644
index 000000000..bfbb3b086
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/hash_zlob_random_int_find_find_timing_test.html
@@ -0,0 +1,163 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+<title>Hash Skewed Distribution Memory Use Test</title>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+</head>
+<body>
+<div id="page">
+<h1>Hash-Based Skewed-Distribution Random-Integer <tt>find</tt>
+ Find Timing Test</h1>
+<h2><a name="description" id="description">Description</a></h2>
+<p>This test inserts a number of values with a markedly
+ non-uniform i.i.d. integer keys into a container, then performs
+ a series of finds using <tt>find</tt> . It measures the average
+ time for <tt>find</tt> as a function of the number of values in
+ the containers. The keys are generated as follows. First, a
+ uniform integer is created; it is then shifted left 8 bits.</p>
+<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/hash_zlob_random_int_find_timing.cc"><tt>hash_zlob_random_int_find_timing_test</tt></a>
+ 200 200 2100)</p>
+<h2><a name="purpose" id="purpose">Purpose</a></h2>
+<p>The test checks the effect of different range-hashing
+ functions and trigger policies (see <a href="hash_based_containers.html#hash_policies">Design::Associative
+ Containers::Hash-Based Containers::Hash Policies</a> and
+ <a href="hash_based_containers.html#resize_policies">Design::Associative
+ Containers::Hash-Based Containers::Resize Policies</a>).</p>
+<h2><a name="results" id="results">Results</a></h2>
+<p>Figures <a href="#NHG">NHG</a>, <a href="#NHM">NHM</a>, and
+ <a href="#NHL">NHL</a> show the results for various hash-based
+ associative-containers in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>MSVC++</u></a>, and
+ <a href="assoc_performance_tests.html#local"><u>local</u></a>,
+ respectively.</p>
+<div id="NHG_res_div">
+<div id="NHG_gcc">
+<div id="NHG_hash_zlob_random_int_find_timing_test">
+<div id="NHG_assoc">
+<div id="NHG_Skewed-distribution_random_int_find_timing_test_using__tt_find_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHG" id="NHG"><img src="hash_zlob_random_int_find_timing_test_gcc.png" alt="no image" /></a></h6>NHG: Skewed-distribution random int find timing test using <tt>find</tt> - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/1</i></li>
+<li>
+gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map-
+<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a>
+ with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="quadratic_probe_fn.html"><tt>quadratic_probe_fn</tt></a>
+</li>
+<li>
+n_hash_map_ncah-
+<tt>std::tr1::unordered_map</tt> with <tt>cache_hash_code</tt> = <tt><b>false</b></tt></li>
+<li>
+cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/1</i></li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NHM_res_div">
+<div id="NHM_msvc">
+<div id="NHM_hash_zlob_random_int_find_timing_test">
+<div id="NHM_assoc">
+<div id="NHM_Skewed-distribution_random_int_find_timing_test_using__tt_find_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHM" id="NHM"><img src="hash_zlob_random_int_find_timing_test_msvc.png" alt="no image" /></a></h6>NHM: Skewed-distribution random int find timing test using <tt>find</tt> - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_hash_map_ncah-
+<tt>stdext::hash_map</tt></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/1</i></li>
+<li>
+gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map-
+<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a>
+ with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="quadratic_probe_fn.html"><tt>quadratic_probe_fn</tt></a>
+</li>
+<li>
+cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/1</i></li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NHL_res_div">
+<div id="NHL_local">
+<div id="NHL_hash_zlob_random_int_find_timing_test">
+<div id="NHL_assoc">
+<div id="NHL_Skewed-distribution_random_int_find_timing_test_using__tt_find_455tt_"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHL" id= "NHL"><img src="hash_zlob_random_int_find_timing_test_local.png" alt="no image" /></a></h6>NHL: Skewed-distribution random int find timing test using <tt>find</tt> - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<h2><a name="observations" id="observations">Observations</a></h2>
+<p>In this setting, the keys' distribution is so skewed that
+ the unerlying hash-table type affects performance marginally.
+ (This is in contrast with <a href="hash_text_find_find_timing_test.html">Hash-Based Text
+ <tt>find</tt> Find Timing Test</a> , <a href="hash_random_int_find_find_timing_test.html">Hash-Based
+ Random-Integer <tt>find</tt> Find Timing Test</a> , <a href="hash_random_int_subscript_find_timing_test.html">Hash-Based
+ Random-Integer Subscript Find Timing Test</a> and <a href="hash_random_int_subscript_insert_timing_test.html">Hash-Based
+ Random-Integer Subscript Insert Timing Test</a> .)</p>
+<p>The range-hashing scheme affects performance dramatically. A
+ mask-based range-hashing scheme effectively maps all values
+ into the same bucket. Access degenerates into a search within
+ an unordered linked-list. In Figures <a href="#NHG">NHG</a> and
+ <a href="#NHM">NHM</a> , it should be noted that
+ <tt>std::tr1::unordered_map</tt> and <tt>stdext::hash_map</tt>
+ are hard-wired currently to mod-based and mask-based schemes,
+ respectively.</p>
+<p>When observing the settings of this test, it is apparent
+ that the keys' distribution is far from natural. One might ask
+ if the test is not contrived to show that, in some cases,
+ mod-based range hashing does better than mask-based range
+ hashing. This is, in fact just the case. We did not encounter a
+ more natural case in which mod-based range hashing is better.
+ In our opnion, real-life key distributions are handled better
+ with an appropriate hash function and a mask-based
+ range-hashing function. (<a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/hash_shift_mask.cc"><tt>shift_mask.cc</tt></a>
+ shows an example of handling this a-priori known skewed
+ distribution with a mask-based range-hashing function). If hash
+ performance is bad, a <i>&Chi;<sup>2</sup></i> test can be used
+ to check how to transform it into a more uniform
+ distribution.</p>
+<p>For this reason, <tt>pb_ds</tt>'s default range-hashing
+ function is mask-based.</p>
+<p><a href="assoc_performance_tests.html#hash_based_types">Observations::Hash-Based
+ Container Types</a> summarizes some observations on hash-based
+ containers; <a href="assoc_performance_tests.html#hash_based_policies">Observations::Hash-Based
+ Containers' Policies</a> summarizes some observations on
+ hash-based containers' policies.</p>
+</div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_zlob_random_int_find_timing_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/hash_zlob_random_int_find_timing_test_gcc.png
new file mode 100644
index 000000000..8d170db1a
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/hash_zlob_random_int_find_timing_test_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_zlob_random_int_find_timing_test_local.png b/libstdc++-v3/doc/html/ext/pb_ds/hash_zlob_random_int_find_timing_test_local.png
new file mode 100644
index 000000000..0be2f00fa
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/hash_zlob_random_int_find_timing_test_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_zlob_random_int_find_timing_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/hash_zlob_random_int_find_timing_test_msvc.png
new file mode 100644
index 000000000..874e7a780
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/hash_zlob_random_int_find_timing_test_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/index.html b/libstdc++-v3/doc/html/ext/pb_ds/index.html
new file mode 100644
index 000000000..4c73c2e91
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/index.html
@@ -0,0 +1,146 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>Policy-Based Data Structures</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1>Policy-Based Data Structures</h1>
+
+ <h5>Ami Tavory and Vladimir Dreizin, IBM Haifa Research
+ Laboratories, and Benjamin Kosnik, Red Hat</h5>
+
+ <h5><a href="mailto:pbassoc@gmail.com">pbassoc@gmail.com</a></h5>
+
+ <p>This is a library of policy-based elementary
+ data structures: associative containers and priority queues. It
+ is designed for high-performance, flexibility, semantic safety,
+ and conformance to the corresponding containers in <tt>std</tt>
+ and std::tr1 (except for some points where it differs by
+ design).</p>
+
+ <p>The documentation is organized as follows:</p>
+
+ <ol>
+ <li>
+ <a href="introduction.html">Introductory</a>
+
+ <ol>
+ <li><a href="introduction.html">Introduction</a></li>
+
+ <li><a href="motivation.html">Motivation</a></li>
+
+ <li><a href="prerequisites.html">Usage
+ Prerequisites</a></li>
+ </ol>
+ </li>
+
+ <li>
+ <a href="interface.html">Interface</a>
+
+ <ol>
+ <li><a href="tutorial.html">Short Tutorial</a></li>
+
+ <li><a href="concepts.html">Concepts</a></li>
+
+ <li><a href="interface.html">Specifics</a></li>
+ </ol>
+ </li>
+
+ <li>
+ <a href="design.html">Design</a>
+
+ <ol>
+ <li>
+ <a href="assoc_design.html">Associative Containers</a>
+
+ <ol>
+ <li><a href="ds_gen.html">Data-Structure
+ Genericity and Interface</a> </li>
+
+ <li><a href="tree_based_containers.html">Tree-Based
+ Containers</a></li>
+
+ <li><a href="trie_based_containers.html">Trie-Based
+ Containers</a></li>
+
+ <li><a href="hash_based_containers.html">Hash-Based
+ Containers</a></li>
+
+ <li><a href="lu_based_containers.html">List-Based
+ Containers</a> </li>
+ </ol>
+ </li>
+
+ <li><a href="pq_design.html">Priority Queues</a></li>
+ </ol>
+ </li>
+
+ <li>
+ <a href="examples.html">Examples</a>
+
+ <ol>
+ <li><a href="assoc_examples.html">Associative
+ Containers</a></li>
+
+ <li><a href="pq_examples.html">Priority Queues</a></li>
+ </ol>
+ </li>
+
+ <li>
+ <a href="tests.html">Tests</a>
+
+ <ol>
+ <li>
+ <a href="assoc_tests.html">Associative Containers</a>
+
+ <ol>
+ <li><a href="assoc_regression_tests.html">Regression
+ Tests</a></li>
+
+ <li><a href=
+ "assoc_performance_tests.html">Performance
+ Tests</a></li>
+ </ol>
+ </li>
+
+ <li>
+ <a href="pq_tests.html">Priority Queues</a>
+
+ <ol>
+ <li><a href="pq_regression_tests.html">Regression
+ Tests</a></li>
+
+ <li><a href="pq_performance_tests.html">Performance
+ Tests</a></li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+
+ <li>
+ <a href="misc.html">Misc.</a>
+
+ <ol>
+ <li><a href="acks.html">Acknowledgments</a></li>
+
+ <li><a href="contact.html">Contact</a></li>
+
+ <li><a href="disclaimer.html">Disclaimer and
+ Copyright</a></li>
+
+ <li><a href="references.html">References</a></li>
+ </ol>
+ </li>
+ </ol>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/insert_error.html b/libstdc++-v3/doc/html/ext/pb_ds/insert_error.html
new file mode 100644
index 000000000..37a89aaf9
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/insert_error.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+<title>insert_error Interface</title>
+<meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+</head>
+
+<body>
+<div id="page">
+<h1><tt>insert_error</tt> Interface</h1>
+
+<p>An entry cannot be inserted into a container object for logical
+reasons (not, e.g., if memory is unavailable, in which case the
+allocator's exception will be thrown).</p>
+
+ <p>This exception may be thrown, e.g., when a probe sequence in
+ a probing hash table does not encounter any free positions,
+ even though free positions are available.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/exception.hpp"><tt>exception.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Base Classes</a></h2>
+
+ <table class="c1" width="100%" border="1" summary="Bases">
+ <tr>
+ <td width="80%" align="left"><b>Class</b></td>
+
+ <td width="20%" align="left"><b>Derivation Type</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="exceptions.html"><span class=
+"c2"><tt>insert_error</tt></span></a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/insert_resize_sequence_diagram1.png b/libstdc++-v3/doc/html/ext/pb_ds/insert_resize_sequence_diagram1.png
new file mode 100644
index 000000000..f64764ec9
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/insert_resize_sequence_diagram1.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/insert_resize_sequence_diagram2.png b/libstdc++-v3/doc/html/ext/pb_ds/insert_resize_sequence_diagram2.png
new file mode 100644
index 000000000..e4645973e
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/insert_resize_sequence_diagram2.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/insert_resize_sequence_diagram3.png b/libstdc++-v3/doc/html/ext/pb_ds/insert_resize_sequence_diagram3.png
new file mode 100644
index 000000000..5535c5fe6
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/insert_resize_sequence_diagram3.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/interface.html b/libstdc++-v3/doc/html/ext/pb_ds/interface.html
new file mode 100644
index 000000000..a48a8bbad
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/interface.html
@@ -0,0 +1,446 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+<title>Interface</title>
+<meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+</head>
+
+<body>
+<div id="page">
+<h1>Interface Specifics</h1>
+
+<p>Following are the library's interface specifics. <a href=
+ "tutorial.html">Short Tutorial</a> is a short tutorial, and
+ <a href="concepts.html">Concepts</a> describes some
+ concepts.</p>
+ <hr />
+
+ <h2><a name="namespaces" id="namespaces">Namespace</a></h2>
+
+ <p>All code is enclosed in namespace <tt>pb_ds</tt>. Nested within
+ this is namespace <tt>detail</tt>, which contains the parts of this
+ library that are considered implementation details.</p>
+ <hr />
+
+ <h2><a name="containers" id="containers">Containers</a></h2>
+
+ <h3><a name="containers_assoc" id=
+ "containers_assoc">Associative Containers</a></h3>
+
+ <ol>
+ <li><a href=
+ "container_base.html"><tt>container_base</tt></a> -
+ abstract base class for associative containers.</li>
+
+ <li>Hash-based:
+
+ <ol>
+ <li><a href=
+ "basic_hash_table.html"><tt>basic_hash_table</tt></a>
+ - abstract base class for hash-based
+ containers</li>
+
+ <li><a href=
+ "cc_hash_table.html"><tt>cc_hash_table</tt></a>
+ - concrete collision-chaining hash-based
+ containers</li>
+
+ <li><a href=
+ "gp_hash_table.html"><tt>gp_hash_table</tt></a>
+ - concrete (general) probing hash-based
+ containers</li>
+ </ol>
+ </li>
+
+ <li>Tree-based:
+
+ <ol>
+ <li><a href=
+ "basic_tree.html"><tt>basic_tree</tt></a>
+ - abstract base class for tree and trie based
+ containers</li>
+
+ <li><a href=
+ "tree.html"><tt>tree</tt></a>
+ - concrete base class for tree-based
+ containers</li>
+
+ <li><a href=
+ "trie.html"><tt>trie</tt></a>
+ - concrete base class for trie-based
+ containers</li>
+ </ol>
+ </li>
+
+ <li>List-based:
+
+ <ol>
+ <li><a href=
+ "list_update.html"><tt>list_update</tt></a> -
+ singly-linked list with update-policy container</li>
+ </ol>
+ </li>
+ </ol>
+
+ <h3><a name="containers_pq" id="containers_pq">Priority
+ Queues</a></h3>
+
+ <ol>
+ <li><a href="priority_queue.html"><tt>priority_queue</tt></a>
+ - priority queue</li>
+ </ol>
+ <hr />
+
+ <h2><a name="tag" id="tag">Container Tags and
+ Traits</a></h2>
+
+ <h3><a name="ds_ts" id="ds_ts">Container Tags</a></h3>
+
+ <h4><a name="ds_ts_common" id="ds_ts_common">Common</a></h4>
+
+ <ol>
+ <li><a href="container_tag.html"><tt>container_tag</tt></a> -
+ base class for data structure tags</li>
+ </ol>
+
+ <h4><a name="ds_ts_assoc" id=
+ "ds_ts_assoc">Associative-Containers</a></h4>
+
+ <ol>
+ <li><a href=
+ "associative_container_tag.html"><tt>associative_container_tag</tt></a> -
+ base class for associative-container data structure tags</li>
+
+ <li><a href=
+ "basic_hash_tag.html"><tt>basic_hash_tag</tt></a> -
+ base class for hash-based structure tags</li>
+
+ <li><a href="cc_hash_tag.html"><tt>cc_hash_tag</tt></a>
+ - collision-chaining hash structure tag</li>
+
+ <li><a href="gp_hash_tag.html"><tt>gp_hash_tag</tt></a>
+ - (general) probing hash structure tag</li>
+
+ <li><a href=
+ "basic_tree_tag.html"><tt>basic_tree_tag</tt></a>
+ - base class for tree-like structure tags</li>
+
+ <li><a href=
+ "tree_tag.html"><tt>tree_tag</tt></a> -
+ base class for tree structure tags</li>
+
+ <li><a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+ - red-black tree structure tag/li&gt;</li>
+
+ <li><a href=
+ "splay_tree_tag.html"><tt>splay_tree_tag</tt></a> -
+ splay tree structure tag</li>
+
+ <li><a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a>
+ - ordered-vector tree structure tag</li>
+
+ <li><a href=
+ "trie_tag.html"><tt>trie_tag</tt></a> -
+ trie structure tag</li>
+
+ <li><a href=
+ "pat_trie_tag.html"><tt>pat_trie_tag</tt></a> -
+ PATRICIA trie structure tag</li>
+
+ <li><a href="list_update_tag.html"><tt>list_update_tag</tt></a> - list
+ (with updates) structure tag</li>
+ </ol>
+
+ <h4><a name="ds_ts_pq" id="ds_ts_pq">Priority-Queues</a></h4>
+
+ <ol>
+ <li><a href=
+ "priority_queue_tag.html"><tt>priority_queue_tag</tt></a> - base
+ class for priority-queue data structure tags</li>
+
+ <li><a href=
+ "pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a> -
+ pairing-heap structure tag.</li>
+
+ <li><a href=
+ "binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a>
+ - binomial-heap structure tag</li>
+
+ <li><a href=
+ "rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a>
+ - redundant-counter binomial-heap (<i>i.e.</i>, a heap where
+ binomial trees form a sequence that is similar to a
+ de-amortized bit-addition algorithm) structure tag</li>
+
+ <li><a href=
+ "binary_heap_tag.html"><tt>binary_heap_tag</tt></a> -
+ binary heap (based on an array or an array of nodes)
+ structure tag</li>
+
+ <li><a href=
+ "thin_heap_tag.html"><tt>thin_heap_tag</tt></a> - thin
+ heap (an alternative [<a href=
+ "references.html#kt99fat_heaps">kt99fat_heaps</a>] to
+ Fibonacci heap) data structure tag.</li>
+ </ol>
+
+ <h3><a name="ds_inv_tag" id="ds_inv_tag">Invalidation-Guarantee
+ Tags</a></h3>
+
+ <ol>
+ <li><a href=
+ "basic_invalidation_guarantee.html"><tt>basic_invalidation_guarantee</tt></a>
+ - weakest invalidation guarantee</li>
+
+ <li><a href=
+ "point_invalidation_guarantee.html"><tt>point_invalidation_guarantee</tt></a>
+ - stronger invalidation guarantee</li>
+
+ <li><a href=
+ "range_invalidation_guarantee.html"><tt>range_invalidation_guarantee</tt></a>
+ - strongest invalidation guarantee</li>
+ </ol>
+
+ <h3><a name="container_traits" id="container_traits">Container
+ Traits</a></h3>
+
+ <ol>
+ <li><a href="pq_container_traits.html"><tt>container_traits</tt></a> -
+ traits for determining underlying data structure
+ properties</li>
+ </ol>
+ <hr />
+
+ <h2><a name="ds_policy_classes" id=
+ "ds_policy_classes">Container Policy Classes</a></h2>
+
+ <h3><a name="hash_related_policies" id=
+ "hash_related_policies">Hash Policies</a></h3>
+
+ <h4>Hash and Probe Policies</h4>
+
+ <ol>
+ <li>Hash Functions:
+
+ <ol>
+ <li><a href="null_hash_fn.html"><tt>null_hash_fn</tt></a>
+ - type indicating one-step range-hashing</li>
+ </ol>
+ </li>
+
+ <li>Range-Hashing Functions:
+
+ <ol>
+ <li><a href="sample_range_hashing.html">Sample
+ range-hashing function</a> - interface required of a
+ range-hashing functor</li>
+
+ <li><a href=
+ "direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+ - (bit) mask-based range hashing functor</li>
+
+ <li><a href=
+ "direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a>
+ - modulo-based range hashing functor</li>
+ </ol>
+ </li>
+
+ <li>Probe Functions:
+
+ <ol>
+ <li><a href="sample_probe_fn.html">Sample probe
+ function</a> - interface required of a probe functor</li>
+
+ <li><a href=
+ "null_probe_fn.html"><tt>null_probe_fn</tt></a> - type
+ indicating one-step ranged-probe</li>
+
+ <li><a href=
+ "linear_probe_fn.html"><tt>linear_probe_fn</tt></a> -
+ linear-probe functor</li>
+
+ <li><a href=
+ "quadratic_probe_fn.html"><tt>quadratic_probe_fn</tt></a>-
+ quadratic-probe functor</li>
+ </ol>
+ </li>
+
+ <li>Ranged-Hash Functions:
+
+ <ol>
+ <li><a href="sample_ranged_hash_fn.html">Sample
+ ranged-hash function</a> - interface required of a
+ ranged-hash functor</li>
+ </ol>
+ </li>
+
+ <li>Ranged-Probe Functions:
+
+ <ol>
+ <li><a href="sample_ranged_probe_fn.html">Sample
+ ranged-probe function</a> - interface required of a
+ ranged-probe functor</li>
+ </ol>
+ </li>
+ </ol>
+
+ <h4>Resize Policies</h4>
+ <ol>
+ <li>Resize Policies:
+
+ <ol>
+ <li><a href="sample_resize_policy.html">Sample resize
+ policy</a> - interface required of a resize policy</li>
+
+ <li><a href=
+ "hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ - standard resize policy</li>
+ </ol>
+ </li>
+
+ <li>Size Policies:
+
+ <ol>
+ <li><a href="sample_size_policy.html">Sample size
+ policy</a> - interface required of a size policy</li>
+
+ <li><a href=
+ "hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+ - exponential size policy (typically used with (bit) mask
+ range-hashing)</li>
+
+ <li><a href=
+ "hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>
+ - prime size policy (typically used with modulo
+ range-hashing)</li>
+ </ol>
+ </li>
+
+ <li>Trigger Policies:
+
+ <ol>
+ <li><a href="sample_resize_trigger.html">Sample trigger
+ policy</a> - interface required of a trigger policy</li>
+
+ <li><a href=
+ "hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ - trigger policy based on load checks</li>
+
+ <li><a href=
+ "cc_hash_max_collision_check_resize_trigger.html"><tt>cc_hash_max_collision_check_resize_trigger</tt></a>
+ - trigger policy based on collision checks</li>
+ </ol>
+ </li>
+ </ol>
+
+ <h3><a name="tree_related_policies" id=
+ "tree_related_policies">Tree Policies</a></h3>
+
+ <h4>Tree Node-Update Policies</h4>
+
+
+<ol>
+<li><a href="sample_tree_node_update.html">Sample node
+updater policy</a> - interface required of a tree
+node-updating functor</li>
+
+<li><a href=
+ "null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+- null policy indicating no updates are required</li>
+
+<li><a href=
+ "tree_order_statistics_node_update.html"><tt>tree_order_statistics_node_update</tt></a>
+- updater enabling order statistics queries</li>
+</ol>
+
+<h3><a name="trie_related_policies" id=
+ "trie_related_policies">Trie Policies</a></h3>
+
+
+<h4>Trie Element-Access Traits</h4>
+
+ <ol>
+ <li><a href="sample_trie_e_access_traits.html">Sample
+ element-access traits</a> - interface required of
+ element-access traits</li>
+
+ <li><a href=
+ "string_trie_e_access_traits.html"><tt>string_trie_e_access_traits</tt></a>
+ - String element-access traits</li>
+ </ol>
+
+ <h4>Trie Node-Update Policies</h4>
+
+
+<ol>
+<li><a href="sample_trie_node_update.html">Sample node
+updater policy</a> - interface required of a trie node
+updater</li>
+
+<li><a href=
+ "null_trie_node_update.html"><tt>null_trie_node_update</tt></a>
+- null policy indicating no updates are required</li>
+
+<li><a href=
+ "trie_prefix_search_node_update.html"><tt>trie_prefix_search_node_update</tt></a>
+- updater enabling prefix searches</li>
+
+<li><a href=
+ "trie_order_statistics_node_update.html"><tt>trie_order_statistics_node_update</tt></a>
+- updater enabling order statistics queries</li>
+</ol>
+
+<h3><a name="list_related_policies" id=
+ "list_related_policies">List Policies</a></h3>
+
+<h4>List Update Policies</h4>
+
+
+ <ol>
+ <li><a href="sample_update_policy.html">Sample list update
+ policy</a> - interface required of a list update policy</li>
+
+ <li><a href=
+ "move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a>
+ - move-to-front update algorithm</li>
+
+ <li><a href=
+ "counter_lu_policy.html"><tt>counter_lu_policy</tt></a> -
+ counter update algorithm</li>
+ </ol>
+
+ <h3><a name="ds_pol" id="ds_pol">Mapped-Type Policies</a></h3>
+
+
+ <ol>
+ <li><a href=
+ "null_mapped_type.html"><tt>null_mapped_type</tt></a> - data
+ policy indicating that a container is a "set"</li>
+ </ol>
+ <hr />
+
+ <h2><a name="exceptions" id="exceptions">Exceptions</a></h2>
+
+
+ <ol>
+ <li><a href="exceptions.html"><tt>container_error</tt></a>
+ - base class for all policy-based data structure errors</li>
+
+ <li><a href=
+ "insert_error.html"><tt>insert_error</tt></a></li>
+
+ <li><a href="join_error.html"><tt>join_error</tt></a></li>
+
+ <li><a href=
+ "resize_error.html"><tt>resize_error</tt></a></li>
+ </ol>
+
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/introduction.html b/libstdc++-v3/doc/html/ext/pb_ds/introduction.html
new file mode 100644
index 000000000..b3ccbd76a
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/introduction.html
@@ -0,0 +1,120 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>Introduction</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1>Introduction</h1>
+
+ <p>This section describes what problems the library attempts to
+ solve. <a href="motivation.html">Motivation</a> describes the
+ reasons we think it solves these problems better than similar
+ libraries.</p>
+
+ <h2><a name="assoc" id="assoc">Associative Containers</a></h2>
+
+ <ol>
+ <li>Associative containers depend on their policies to a very
+ large extent. Implicitly hard-wiring policies can hamper their
+ performance and limit their functionality. An efficient
+ hash-based container, for example, requires policies for
+ testing key equivalence, hashing keys, translating hash
+ values into positions within the hash table, and determining
+ when and how to resize the table internally. A tree-based
+ container can efficiently support order statistics,
+ <i>i.e.</i>, the ability to query what is the order of each
+ key within the sequence of keys in the container, but only if
+ the container is supplied with a policy to internally update
+ meta-data. There are many other such examples.<p></p></li>
+
+ <li>Ideally, all associative containers would share the same
+ interface. Unfortunately, underlying data structures and
+ mapping semantics differentiate between different containers.
+ For example, suppose one writes a generic function
+ manipulating an associative container <tt>Cntnr</tt>:
+ <pre>
+template&lt;typename Cntnr&gt;
+ void
+ some_op_sequence(Cntnr&amp; r_cnt)
+ {
+ ...
+ }
+</pre>
+
+then what can one assume about <tt>Cntnr</tt>? The answer
+varies according to its underlying data structure. If the
+underlying data structure of <tt>Cntnr</tt> is based on a tree or
+trie, then the order of elements is well defined; otherwise, it is
+not, in general. If the underlying data structure of <tt>Cntnr</tt>
+is based on a collision-chaining hash table, then modifying
+r_<tt>Cntnr</tt> will not invalidate its iterators' order; if the
+underlying data structure is a probing hash table, then this is not
+the case. If the underlying data structure is based on a tree or
+trie, then <tt>r_cnt</tt> can efficiently be split; otherwise, it
+cannot, in general. If the underlying data structure is a red-black
+tree, then splitting <tt>r_cnt</tt> is exception-free; if it is an
+ordered-vector tree, exceptions can be thrown.
+ <p></p></li>
+ </ol>
+
+ <h2><a name="pq" id="pq">Priority Queues</a></h2>
+
+ <p>Priority queues are useful when one needs to efficiently
+ access a minimum (or maximum) value as the set of values
+ changes.</p>
+
+ <ol>
+ <li>Most useful data structures for priority queues have a
+ relatively simple structure, as they are geared toward
+ relatively simple requirements. Unfortunately, these structures
+ do not support access to an arbitrary value, which turns out to
+ be necessary in many algorithms. Say, decreasing an arbitrary
+ value in a graph algorithm. Therefore, some extra mechanism is
+ necessary and must be invented for accessing arbitrary
+ values. There are at least two alternatives: embedding an
+ associative container in a priority queue, or allowing
+ cross-referencing through iterators. The first solution adds
+ significant overhead; the second solution requires a precise
+ definition of iterator invalidation. Which is the next
+ point...<p></p></li>
+
+ <li>Priority queues, like hash-based containers, store values in
+ an order that is meaningless and undefined externally. For
+ example, a <tt>push</tt> operation can internally reorganize the
+ values. Because of this characteristic, describing a priority
+ queues' iterator is difficult: on one hand, the values to which
+ iterators point can remain valid, but on the other, the logical
+ order of iterators can change unpredictably.<p></p></li>
+
+ <li>Roughly speaking, any element that is both inserted to a
+ priority queue (<i>e.g.</i>, through <tt>push</tt>) and removed
+ from it (<i>e.g.</i>, through <tt>pop</tt>), incurs a
+ logarithmic overhead (in the amortized sense). Different
+ underlying data structures place the actual cost differently:
+ some are optimized for amortized complexity, whereas others
+ guarantee that specific operations only have a constant
+ cost. One underlying data structure might be chosen if modifying
+ a value is frequent (Dijkstra's shortest-path algorithm),
+ whereas a different one might be chosen
+ otherwise. Unfortunately, an array-based binary heap - an
+ underlying data structure that optimizes (in the amortized
+ sense) <tt>push</tt> and <tt>pop</tt> operations, differs from
+ the others in terms of its invalidation guarantees. Other design
+ decisions also impact the cost and placement of the overhead, at
+ the expense of more difference in the the kinds of operations
+ that the underlying data structure can support. These
+ differences pose a challenge when creating a uniform interface
+ for priority queues.<p></p></li>
+ </ol>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/invalidation_guarantee_cd.png b/libstdc++-v3/doc/html/ext/pb_ds/invalidation_guarantee_cd.png
new file mode 100644
index 000000000..1f9d1243c
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/invalidation_guarantee_cd.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/invalidation_guarantee_erase.png b/libstdc++-v3/doc/html/ext/pb_ds/invalidation_guarantee_erase.png
new file mode 100644
index 000000000..940a27f71
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/invalidation_guarantee_erase.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/join_error.html b/libstdc++-v3/doc/html/ext/pb_ds/join_error.html
new file mode 100644
index 000000000..f3e3eaf97
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/join_error.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+<title>join_error Interface</title>
+<meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+</head>
+
+<body>
+<div id="page">
+<h1><tt>join_error</tt> Interface</h1>
+
+<p>A join cannot be performed logical reasons (i.e., the ranges of the
+ two container objects
+ being joined
+ overlaps.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/exception.hpp"><tt>exception.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Base Classes</a></h2>
+
+ <table class="c1" width="100%" border="1" summary="Bases">
+ <tr>
+ <td width="80%" align="left"><b>Class</b></td>
+
+ <td width="20%" align="left"><b>Derivation Type</b></td>
+ </tr>
+
+ <tr>
+ <td>
+<pre><a href="exceptions.html"><span class="c2"><tt>join_error</tt></span></a>
+</pre>
+ </td>
+
+<td>
+<p>public</p>
+</td>
+</tr>
+ </table>
+ </div>
+ </body>
+ </html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/linear_probe_fn.html b/libstdc++-v3/doc/html/ext/pb_ds/linear_probe_fn.html
new file mode 100644
index 000000000..6387d3a33
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/linear_probe_fn.html
@@ -0,0 +1,140 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>linear_probe_fn Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>linear_probe_fn</tt> Interface</h1>
+
+ <p>A probe sequence policy using fixed increments.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/hash_policy.hpp"><tt>hash_policy.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Template Parameters</a></h2>
+
+ <table class="c1" width="100%" border="1" summary=
+ "Template Parameters">
+ <tr>
+ <td width="20%" align="left"><b>Parameter</b></td>
+
+ <td width="50%" align="left"><b>Description</b></td>
+
+ <td width="30%" align="left"><b>Default Value</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Size_Type42920436" id=
+"Size_Type42920436"><b>typename</b> Size_Type </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+
+ <td>size_t</td>
+ </tr>
+ </table>
+
+ <h2><a name="link2" id="link2">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link3" id="link3">General Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="size_type55424436" id="size_type55424436">size_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Size_Type42920436"><tt>Size_Type</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link4" id="link4">Public Methods</a></h2>
+
+ <h3><a name="link5" id="link5">Constructors, Destructor, and
+ Related</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ swap
+ (<span class="c2"><tt>linear_probe_fn</tt></span> &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Swaps content.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link6" id="link6">Protected Methods</a></h2>
+
+ <h3><a name="link7" id="link7">Offset Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a>
+ <b>operator</b>()
+ (<a href=
+"#size_type55424436"><tt>size_type</tt></a> i) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the <span class="c1"><tt>i</tt></span>-th
+ offset from the hash value.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/list_update.html b/libstdc++-v3/doc/html/ext/pb_ds/list_update.html
new file mode 100644
index 000000000..434e82f42
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/list_update.html
@@ -0,0 +1,316 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>list_update Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>list_update</tt> Interface</h1>
+
+ <p>A list-update based associative container.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/assoc_container.hpp"><tt>assoc_container.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Template Parameters</a></h2>
+
+ <table class="c1" width="100%" border="1" summary=
+ "Template Parameters">
+ <tr>
+ <td width="20%" align="left"><b>Parameter</b></td>
+
+ <td width="50%" align="left"><b>Description</b></td>
+
+ <td width="30%" align="left"><b>Default Value</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Key2501" id="Key2501"><b>typename</b> Key</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Key type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Mapped318655" id="Mapped318655"><b>typename</b> Mapped</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Mapped type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Eq_Fn60085" id="Eq_Fn60085"><b>class</b> Eq_Fn </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Equivalence functor.</p>
+ </td>
+
+ <td>
+ <pre>
+std::equal_to&lt;<a href="#Key2501"><tt>Key</tt></a>&gt;
+</pre>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Update_Policy1671938590" id=
+"Update_Policy1671938590"><b>class</b> Update_Policy </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Update policy (determines when an element will be
+ moved to the front of the list.</p>
+ </td>
+
+ <td><a href="move_to_front_lu_policy.html"><span class=
+ "c2"><tt>move_to_front_lu_policy</tt></span></a></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Allocator35940069" id=
+"Allocator35940069"><b>class</b> Allocator </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Allocator type.</p>
+ </td>
+
+ <td>
+ <pre>
+std::allocator&lt;<b>char</b>&gt;
+</pre>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link2" id="link2">Base Classes</a></h2>
+
+ <table class="c1" width="100%" border="1" summary="Bases">
+ <tr>
+ <td width="80%" align="left"><b>Class</b></td>
+
+ <td width="20%" align="left"><b>Derivation Type</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="container_base.html"><span class=
+"c2"><tt>container_base</tt></span></a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link3" id="link3">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link4" id="link4">Policy definitions.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="eq_fn80245" id="eq_fn80245">eq_fn</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Eq_Fn60085"><tt>Eq_Fn</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Equivalence functor type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="update_policy894603998" id=
+"update_policy894603998">update_policy</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Update_Policy1671938590"><tt>Update_Policy</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>List update policy type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="allocator48440069" id="allocator48440069">allocator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Allocator35940069"><tt>Allocator</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p><a href="#Allocator35940069"><tt>Allocator</tt></a>
+ type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link5" id="link5">Public Methods</a></h2>
+
+ <h3><a name="link6" id="link6">Constructors, Destructor, and
+ Related</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ list_update
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Default constructor.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>template</b>&lt;
+ <b>class</b> It&gt;
+ list_update
+ (It first_it,
+ It last_it)
+</pre>
+ </td>
+
+ <td>
+ <p>Constructor taking iterators to a range of
+ value_types. The value_types between <span class=
+ "c1"><tt>first_it</tt></span> and <span class=
+ "c1"><tt>last_it</tt></span> will be inserted into the
+ container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ list_update
+ (<b>const</b> <span class=
+"c2"><tt>list_update</tt></span> &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Copy constructor.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b>
+ ~list_update
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Destructor.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<span class="c2"><tt>list_update</tt></span> &amp;
+ <b>operator</b>=
+ (<b>const</b> <span class=
+"c2"><tt>list_update</tt></span> &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Assignment operator.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ swap
+ (<span class="c2"><tt>list_update</tt></span> &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Swaps content.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/list_update_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/list_update_tag.html
new file mode 100644
index 000000000..f04aaeacb
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/list_update_tag.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>list_update_tag Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>list_update_tag</tt> Interface</h1>
+
+ <p>List-update data structure tag.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Base Classes</a></h2>
+
+ <table class="c1" width="100%" border="1" summary="Bases">
+ <tr>
+ <td width="80%" align="left"><b>Class</b></td>
+
+ <td width="20%" align="left"><b>Derivation Type</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="associative_container_tag.html"><span class=
+"c2"><tt>associative_container_tag</tt></span></a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/lu.png b/libstdc++-v3/doc/html/ext/pb_ds/lu.png
new file mode 100644
index 000000000..7c96dcaf6
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/lu.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/lu_based_containers.html b/libstdc++-v3/doc/html/ext/pb_ds/lu_based_containers.html
new file mode 100644
index 000000000..c8693437d
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/lu_based_containers.html
@@ -0,0 +1,229 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>List-Based Containers</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1>List-Update Design</h1>
+
+ <h2><a name="overview" id="overview">Overview</a></h2>
+
+ <p>The list-based container has the following declaration:</p>
+ <pre>
+<b>template</b>&lt;
+ <b>typename</b> Key,
+ <b>typename</b> Mapped,
+ <b>typename</b> Eq_Fn = std::equal_to&lt;Key&gt;,
+ <b>typename</b> Update_Policy = <a href=
+"move_to_front_lu_policy.html">move_to_front_lu_policy&lt;&gt;</a>,
+ <b>typename</b> Allocator = std::allocator&lt;<b>char</b>&gt; &gt;
+<b>class</b> <a href="list_update.html">list_update</a>;
+</pre>
+
+ <p>The parameters have the following meaning:</p>
+
+ <ol>
+ <li><tt>Key</tt> is the key type.</li>
+
+ <li><tt>Mapped</tt> is the mapped-policy, and is explained in
+ <a href="tutorial.html#assoc_ms">Tutorial::Associative
+ Containers::Associative Containers Others than Maps</a>.</li>
+
+ <li><tt>Eq_Fn</tt> is a key equivalence functor.</li>
+
+ <li><tt>Update_Policy</tt> is a policy updating positions in
+ the list based on access patterns. It is described in the
+ following subsection.</li>
+
+ <li><tt>Allocator</tt> is an allocator
+ type.</li>
+ </ol>
+
+ <p>A list-based associative container is a container that
+ stores elements in a linked-list. It does not order the
+ elements by any particular order related to the keys.
+ List-based containers are primarily useful for creating
+ "multimaps" (see <a href=
+ "motivation.html#assoc_mapping_semantics">Motivation::Associative
+ Containers::Avoiding Multiple Keys</a> and <a href=
+ "tutorial.html#assoc_ms">Tutorial::Associative
+ Containers::Associative Containers Others than Maps</a>). In
+ fact, list-based containers are designed in <tt>pb_ds</tt>
+ expressly for this purpose. This is explained further in
+ <a href="#mmaps">Use for "Multimaps"</a>.</p>
+
+ <p>List-based containers might also be useful for some rare
+ cases, where a key is encapsulated to the extent that only
+ key-equivalence can be tested. Hash-based containers need to
+ know how to transform a key into a size type, and tree-based
+ containers need to know if some key is larger than another.
+ List-based associative containers, conversely, only need to
+ know if two keys are equivalent.</p>
+
+ <p>Since a list-based associative container does not order
+ elements by keys, is it possible to order the list in some
+ useful manner? Remarkably, many on-line competitive [<a href=
+ "references.html#motwani95random">motwani95random</a>]
+ algorithms exist for reordering lists to reflect access
+ prediction [<a href=
+ "references.html#andrew04mtf">andrew04mtf</a>].</p>
+
+ <h2><a name="list_updates" id="list_updates">List
+ Updates</a></h2>
+
+ <h3><a name="general" id="general">General Terms</a></h3>
+
+ <p>Figure <a href="#simple_list">A simple list</a> shows a
+ simple list of integer keys. If we search for the integer 6, we
+ are paying an overhead: the link with key 6 is only the fifth
+ link; if it were the first link, it could be accessed
+ faster.</p>
+
+ <h6 class="c1"><a name="simple_list" id="simple_list"><img src=
+ "simple_list.png" alt="no image" /></a></h6>
+
+ <h6 class="c1">A simple list.</h6>
+
+ <p>List-update algorithms reorder lists as elements are
+ accessed. They try to determine, by the access history, which
+ keys to move to the front of the list. Some of these algorithms
+ require adding some metadata alongside each entry.</p>
+
+ <p>For example, Figure <a href="#lu">The counter algorithm</a>
+ -A shows the counter algorithm. Each node contains both a key
+ and a count metadata (shown in bold). When an element is
+ accessed (<i>e.g.</i> 6) its count is incremented, as shown in
+ Figure <a href="#lu">The counter algorithm</a> -B. If the count
+ reaches some predetermined value, say 10, as shown in Figure
+ <a href="#lu">The counter algorithm</a> -C, the count is set to
+ 0 and the node is moved to the front of the list, as in Figure
+ <a href="#lu">The counter algorithm</a> -D.</p>
+
+ <h6 class="c1"><a name="lu" id="lu"><img src="lu.png" alt=
+ "no image" /></a></h6>
+
+ <h6 class="c1">The counter algorithm.</h6>
+
+ <h3><a name="imp_pb_ds" id="imp_pb_ds">Implementation</a></h3>
+
+ <p><tt>pb_ds</tt> allows instantiating lists with policies
+ implementing any algorithm moving nodes to the front of the
+ list (policies implementing algorithms interchanging nodes are
+ unsupported).</p>
+
+ <p>Associative containers based on lists are parametrized by a
+ <tt>Update_Policy</tt> parameter. This parameter defines the
+ type of metadata each node contains, how to create the
+ metadata, and how to decide, using this metadata, whether to
+ move a node to the front of the list. A list-based associative
+ container object derives (publicly) from its update policy.
+ Figure <a href="#update_policy_cd">A list and its update
+ policy</a> shows the scheme, as well as some predefined
+ policies (which are explained below).</p>
+
+ <h6 class="c1"><a name="update_policy_cd" id=
+ "update_policy_cd"><img src="update_policy_cd.png" alt=
+ "no image" /></a></h6>
+
+ <h6 class="c1">A list and its update policy.</h6>
+
+ <p>An instantiation of <tt>Update_Policy</tt> must define
+ internally <tt>update_metadata</tt> as the metadata it
+ requires. Internally, each node of the list contains, besides
+ the usual key and data, an instance of <tt><b>typename</b>
+ Update_Policy::update_metadata</tt>.</p>
+
+ <p>An instantiation of <tt>Update_Policy</tt> must define
+ internally two operators:</p>
+ <pre>
+update_metadata
+<b>operator</b>()();
+
+<b>bool</b>
+<b>operator</b>()(update_metadata &amp;);
+</pre>
+
+ <p>The first is called by the container object, when creating a
+ new node, to create the node's metadata. The second is called
+ by the container object, when a node is accessed (<i>e.g.</i>,
+ when a find operation's key is equivalent to the key of the
+ node), to determine whether to move the node to the front of
+ the list.</p>
+
+ <p>The library contains two predefined implementations of
+ list-update policies [<a href=
+ "references.html#andrew04mtf">andrew04mtf</a>]. The first is
+ <a href=
+ "counter_lu_policy.html"><tt>counter_lu_policy</tt></a>, which
+ implements the counter algorithm described above. The second is
+ <a href=
+ "move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a>,
+ which unconditionally move an accessed element to the front of
+ the list. The latter type is very useful in <tt>pb_ds</tt>,
+ since there is no need to associate metadata with each element
+ (this is explained further in <a href="#mmaps">Use for
+ "Multimaps"</a>).</p>
+
+ <h2><a name="mmaps" id="mmaps">Use for "Multimaps"</a></h2>
+
+ <p>In <tt>pb_ds</tt>, there are no equivalents for the STL's
+ multimaps and multisets; instead one uses an associative
+ container mapping primary keys to secondary keys (see <a href=
+ "motivation.html#assoc_mapping_semantics">Motivation::Associative
+ Containers::Alternative to Multiple Equivalent Keys</a> and
+ <a href="tutorial.html#assoc_ms">Tutorial::Associative
+ Containers::Associative Containers Others than Maps</a>).</p>
+
+ <p>List-based containers are especially useful as associative
+ containers for secondary keys. In fact, they are implemented
+ here expressly for this purpose.</p>
+
+ <p>To begin with, these containers use very little per-entry
+ structure memory overhead, since they can be implemented as
+ singly-linked lists. (Arrays use even lower per-entry memory
+ overhead, but they are less flexible in moving around entries,
+ and have weaker invalidation guarantees).</p>
+
+ <p>More importantly, though, list-based containers use very
+ little per-container memory overhead. The memory overhead of an
+ empty list-based container is practically that of a pointer.
+ This is important for when they are used as secondary
+ associative-containers in situations where the average ratio of
+ secondary keys to primary keys is low (or even 1).</p>
+
+ <p>In order to reduce the per-container memory overhead as much
+ as possible, they are implemented as closely as possible to
+ singly-linked lists.</p>
+
+ <ol>
+ <li>List-based containers do not store internally the number
+ of values that they hold. This means that their <tt>size</tt>
+ method has linear complexity (just like <tt>std::list</tt>).
+ Note that finding the number of equivalent-key values in an
+ STL multimap also has linear complexity (because it must be
+ done, <i>e.g.</i>, via <tt>std::distance</tt> of the
+ multimap's <tt>equal_range</tt> method), but usually with
+ higher constants.</li>
+
+ <li>Most associative-container objects each hold a policy
+ object (<i>e.g.</i>, a hash-based container object holds a
+ hash functor). List-based containers, conversely, only have
+ class-wide policy objects.</li>
+ </ol>
+
+ <p>See also <a href=
+ "assoc_performance_tests.html#msc">Associative-Container
+ Performance Tests::Observations::Mapping-Semantics
+ Considerations</a>.</p>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/misc.html b/libstdc++-v3/doc/html/ext/pb_ds/misc.html
new file mode 100644
index 000000000..01029e134
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/misc.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>Misc.</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1>Misc.</h1>
+
+ <p><a href="acks.html" title="Acknowledgements">Acks</a>
+ contains acknowledgments; <a href="contact.html">Contact</a>
+ contains contact information;<a href=
+ "disclaimer.html">Disclaimer and Copyright</a> is a standard
+ disclaimer, and <a href="references.html">References</a>
+ contains references.</p>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/motivation.html b/libstdc++-v3/doc/html/ext/pb_ds/motivation.html
new file mode 100644
index 000000000..627317217
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/motivation.html
@@ -0,0 +1,993 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>Motivation</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1>Motivation</h1>
+
+ <p>Many fine associative-container libraries were already
+ written, most notably, the STL's associative containers. Why
+ then write another library? This section shows some possible
+ advantages of this library, when considering the challenges in
+ <a href="introduction.html">Introduction</a>. Many of these
+ points stem from the fact that the STL introduced
+ associative-containers in a two-step process (first
+ standardizing tree-based containers, only then adding
+ hash-based containers, which are fundamentally different), did
+ not standardize priority queues as containers, and (in our
+ opinion) overloads the iterator concept.</p>
+
+ <h2><a name="assoc" id="assoc">Associative Containers</a></h2>
+
+ <h3><a name="assoc_policies" id="assoc_policies">More
+ Configuration Choices</a></h3>
+
+ <p>Associative containers require a relatively large number of
+ policies to function efficiently in various settings. In some
+ cases this is needed for making their common operations more
+ efficient, and in other cases this allows them to support a
+ larger set of operations</p>
+
+ <ol>
+ <li>Hash-based containers, for example, support look-up and
+ insertion methods (<i>e.g.</i>, <tt>find</tt> and
+ <tt>insert</tt>). In order to locate elements quickly, they
+ are supplied a hash functor, which instruct how to transform
+ a key object into some size type; <i>e.g.</i>, a hash functor
+ might transform <tt>"hello"</tt> into <tt>1123002298</tt>. A
+ hash table, though, requires transforming each key object
+ into some size-type type in some specific domain;
+ <i>e.g.</i>, a hash table with a 128-long table might
+ transform <tt>"hello"</tt> into position 63. The policy by
+ which the hash value is transformed into a position within
+ the table can dramatically affect performance (see <a href=
+ "hash_based_containers.html#hash_policies">Design::Associative
+ Containers::Hash-Based Containers::Hash Policies</a>).
+ Hash-based containers also do not resize naturally (as
+ opposed to tree-based containers, for example). The
+ appropriate resize policy is unfortunately intertwined with
+ the policy that transforms hash value into a position within
+ the table (see <a href=
+ "hash_based_containers.html#resize_policies">Design::Associative
+ Containers::Hash-Based Containers::Resize Policies</a>).
+
+ <p><a href=
+ "assoc_performance_tests.html#hash_based">Associative-Container
+ Performance Tests::Hash-Based Containers</a> quantifies
+ some of these points.</p>
+ </li>
+
+ <li>Tree-based containers, for example, also support look-up
+ and insertion methods, and are primarily useful when
+ maintaining order between elements is important. In some
+ cases, though, one can utilize their balancing algorithms for
+ completely different purposes.
+
+ <p>Figure <a href="#node_invariants">Metadata for
+ order-statistics and interval intersections</a>-A, for
+ example, shows a tree whose each node contains two entries:
+ a floating-point key, and some size-type <i>metadata</i>
+ (in bold beneath it) that is the number of nodes in the
+ sub-tree. (<i>E.g.</i>, the root has key 0.99, and has 5
+ nodes (including itself) in its sub-tree.) A container based
+ on this data structure can obviously answer efficiently
+ whether 0.3 is in the container object, but it can also
+ answer what is the order of 0.3 among all those in the
+ container object [<a href=
+ "references.html#clrs2001">clrs2001</a>] (see <a href=
+ "assoc_examples.html#tree_like_based">Associative Container
+ Examples::Tree-Like-Based Containers (Trees and
+ Tries)</a>).</p>
+
+ <p>As another example, Figure <a href=
+ "#node_invariants">Metadata for order-statistics and
+ interval intersections</a>-B shows a tree whose each node
+ contains two entries: a half-open geometric line interval,
+ and a number <i>metadata</i> (in bold beneath it) that is
+ the largest endpoint of all intervals in its sub-tree.
+ (<i>E.g.</i>, the root describes the interval <i>[20,
+ 36)</i>, and the largest endpoint in its sub-tree is 99.) A
+ container based on this data structure can obviously answer
+ efficiently whether <i>[3, 41)</i> is in the container
+ object, but it can also answer efficiently whether the
+ container object has intervals that intersect <i>[3,
+ 41)</i> (see <a href=
+ "assoc_examples.html#tree_like_based">Associative Container
+ Examples::Tree-Like-Based Containers (Trees and
+ Tries)</a>). These types of queries are very useful in
+ geometric algorithms and lease-management algorithms.</p>
+
+ <p>It is important to note, however, that as the trees are
+ modified, their internal structure changes. To maintain
+ these invariants, one must supply some policy that is aware
+ of these changes (see <a href=
+ "tree_based_containers.html#invariants">Design::Associative
+ Containers::Tree-Based Containers::Node Invariants</a>);
+ without this, it would be better to use a linked list (in
+ itself very efficient for these purposes).</p>
+
+ <p><a href=
+ "assoc_performance_tests.html#tree_like_based">Associative-Container
+ Performance Tests::Tree-Like-Based Containers</a>
+ quantifies some of these points.</p>
+ </li>
+ </ol>
+
+ <h6 class="c1"><a name="node_invariants" id=
+ "node_invariants"><img src="node_invariants.png" alt=
+ "no image" /></a></h6>
+
+ <h6 class="c1">Metadata for order-statistics and interval
+ intersections.</h6>
+
+ <h3><a name="assoc_ds_genericity" id="assoc_ds_genericity">More
+ Data Structures and Traits</a></h3>
+
+ <p>The STL contains associative containers based on red-black
+ trees and collision-chaining hash tables. These are obviously
+ very useful, but they are not ideal for all types of
+ settings.</p>
+
+ <p>Figure <a href=
+ "#different_underlying_data_structures">Different underlying
+ data structures</a> shows different underlying data structures
+ (the ones currently supported in <tt>pb_ds</tt>). A shows a
+ collision-chaining hash-table, B shows a probing hash-table, C
+ shows a red-black tree, D shows a splay tree, E shows a tree
+ based on an ordered vector(implicit in the order of the
+ elements), F shows a PATRICIA trie, and G shows a list-based
+ container with update policies.</p>
+
+ <p>Each of these data structures has some performance benefits,
+ in terms of speed, size or both (see <a href=
+ "assoc_performance_tests.html">Associative-Container
+ Performance Tests</a> and <a href=
+ "assoc_performance_tests.html#dss_family_choice">Associative-Container
+ Performance Tests::Observations::Underlying Data-Structure
+ Families</a>). For now, though, note that <i>e.g.</i>,
+ vector-based trees and probing hash tables manipulate memory
+ more efficiently than red-black trees and collision-chaining
+ hash tables, and that list-based associative containers are
+ very useful for constructing "multimaps" (see <a href=
+ "#assoc_mapping_semantics">Alternative to Multiple Equivalent
+ Keys</a>, <a href=
+ "assoc_performance_tests.html#multimaps">Associative Container
+ Performance Tests::Multimaps</a>, and <a href=
+ "assoc_performance_tests.html#msc">Associative Container
+ Performance Tests::Observations::Mapping-Semantics
+ Considerations</a>).</p>
+
+ <h6 class="c1"><a name="different_underlying_data_structures"
+ id="different_underlying_data_structures"><img src=
+ "different_underlying_dss.png" alt="no image" /></a></h6>
+
+ <h6 class="c1">Different underlying data structures.</h6>
+
+ <p>Now consider a function manipulating a generic associative
+ container, <i>e.g.</i>,</p>
+ <pre>
+<b>template</b>&lt;
+ <b>class</b> Cntnr&gt;
+<b>int</b>
+ some_op_sequence
+ (Cntnr &amp;r_cnt)
+{
+ ...
+}
+</pre>
+
+ <p>Ideally, the underlying data structure of <tt>Cntnr</tt>
+ would not affect what can be done with <tt>r_cnt</tt>.
+ Unfortunately, this is not the case.</p>
+
+ <p>For example, if <tt>Cntnr</tt> is <tt>std::map</tt>, then
+ the function can use <tt>std::for_each(r_cnt.find(foo),
+ r_cnt.find(bar), foobar)</tt> in order to apply <tt>foobar</tt>
+ to all elements between <tt>foo</tt> and <tt>bar</tt>. If
+ <tt>Cntnr</tt> is a hash-based container, then this call's
+ results are undefined.</p>
+
+ <p>Also, if <tt>Cntnr</tt> is tree-based, the type and object
+ of the comparison functor can be accessed. If <tt>Cntnr</tt> is
+ hash based, these queries are nonsensical.</p>
+
+ <p>There are various other differences based on the container's
+ underlying data structure. For one, they can be constructed by,
+ and queried for, different policies. Furthermore:</p>
+
+ <ol>
+ <li>Containers based on C, D, E and F store elements in a
+ meaningful order; the others store elements in a meaningless
+ (and probably time-varying) order. By implication, only
+ containers based on C, D, E and F can support erase
+ operations taking an iterator and returning an iterator to
+ the following element without performance loss (see <a href=
+ "#assoc_ers_methods">Slightly Different Methods::Methods
+ Related to Erase</a>).</li>
+
+ <li>Containers based on C, D, E, and F can be split and
+ joined efficiently, while the others cannot. Containers based
+ on C and D, furthermore, can guarantee that this is
+ exception-free; containers based on E cannot guarantee
+ this.</li>
+
+ <li>Containers based on all but E can guarantee that erasing
+ an element is exception free; containers based on E cannot
+ guarantee this. Containers based on all but B and E can
+ guarantee that modifying an object of their type does not
+ invalidate iterators or references to their elements, while
+ containers based on B and E cannot. Containers based on C, D,
+ and E can furthermore make a stronger guarantee, namely that
+ modifying an object of their type does not affect the order
+ of iterators.</li>
+ </ol>
+
+ <p>A unified tag and traits system (as used for the STL's
+ iterators, for example) can ease generic manipulation of
+ associative containers based on different underlying
+ data structures (see <a href=
+ "tutorial.html#assoc_ds_gen">Tutorial::Associative
+ Containers::Determining Containers' Attributes</a> and <a href=
+ "ds_gen.html#container_traits">Design::Associative
+ Containers::Data-Structure Genericity::Data-Structure Tags and
+ Traits</a>).</p>
+
+ <h3><a name="assoc_diff_it" id="assoc_diff_it">Differentiating
+ between Iterator Types</a></h3>
+
+ <p>Iterators are centric to the STL's design, because of the
+ container/algorithm/iterator decomposition that allows an
+ algorithm to operate on a range through iterators of some
+ sequence (<i>e.g.</i>, one originating from a container).
+ Iterators, then, are useful because they allow going over a
+ <u>sequence</u>. The STL also uses iterators for accessing a
+ <u>specific</u> element - <i>e.g.</i>, when an associative
+ container returns one through <tt>find</tt>. The STL, however,
+ consistently uses the same types of iterators for both
+ purposes: going over a range, and accessing a specific found
+ element. Before the introduction of hash-based containers to
+ the STL, this made sense (with the exception of priority
+ queues, which are discussed in <a href="#pq">Priority
+ Queues</a>).</p>
+
+ <p>Using the STL's associative containers together with
+ non-order-preserving associative containers (and also because
+ of priority-queues container), there is a possible need for
+ different types of iterators for self-organizing containers -
+ the iterator concept seems overloaded to mean two different
+ things (in some cases). The following subsections explain this;
+ <a href="tutorial.html#assoc_find_range">Tutorial::Associative
+ Containers::Point-Type and Range-Type Methods</a> explains an
+ alternative design which does not complicate the use of
+ order-preserving containers, but is better for unordered
+ containers; <a href=
+ "ds_gen.html#find_range">Design::Associative
+ Containers::Data-Structure Genericity::Point-Type and
+ Range-Type Methods</a> explains the design further.</p>
+
+ <h4><a name="assoc_find_it_range_it" id=
+ "assoc_find_it_range_it">Using Point-Type Iterators for
+ Range-Type Operations</a></h4>
+
+ <p>Suppose <tt>cntnr</tt> is some associative container, and
+ say <tt>c</tt> is an object of type <tt>cntnr</tt>. Then what
+ will be the outcome of</p>
+ <pre>
+std::for_each(c.find(1), c.find(5), foo);
+</pre>
+
+ <p>If <tt>cntnr</tt> is a tree-based container object, then an
+ in-order walk will apply <tt>foo</tt> to the relevant elements,
+ <i>e.g.</i>, as in Figure <a href="#range_it_in_hts">Range
+ iteration in different data structures</a> -A. If <tt>c</tt> is
+ a hash-based container, then the order of elements between any
+ two elements is undefined (and probably time-varying); there is
+ no guarantee that the elements traversed will coincide with the
+ <i>logical</i> elements between 1 and 5, <i>e.g.</i>, as in
+ Figure <a href="#range_it_in_hts">Range iteration in different
+ data structures</a>-B.</p>
+
+ <h6 class="c1"><a name="range_it_in_hts" id=
+ "range_it_in_hts"><img src="point_iterators_range_ops_1.png"
+ alt="no image" /></a></h6>
+
+ <h6 class="c1">Range iteration in different
+ data structures.</h6>
+
+ <p>In our opinion, this problem is not caused just because
+ red-black trees are order preserving while collision-chaining
+ hash tables are (generally) not - it is more fundamental. Most
+ of the STL's containers order sequences in a well-defined
+ manner that is determined by their <u>interface</u>: calling
+ <tt>insert</tt> on a tree-based container modifies its sequence
+ in a predictable way, as does calling <tt>push_back</tt> on a
+ list or a vector. Conversely, collision-chaining hash tables,
+ probing hash tables, priority queues, and list-based containers
+ (which are very useful for "multimaps") are self-organizing
+ data structures; the effect of each operation modifies their
+ sequences in a manner that is (practically) determined by their
+ <u>implementation</u>.</p>
+
+ <p>Consequently, applying an algorithm to a sequence obtained
+ from most containers <u>may or may not</u> make sense, but
+ applying it to a sub-sequence of a self-organizing container
+ <u>does not</u>.</p>
+
+ <h4><a name="assoc_range_it_for_find_it" id=
+ "assoc_range_it_for_find_it">The Cost of Enabling Range
+ Capabilities to Point-Type Iterators</a></h4>
+
+ <p>Suppose <tt>c</tt> is some collision-chaining hash-based
+ container object, and one calls <tt>c.find(3)</tt>. Then what
+ composes the returned iterator?</p>
+
+ <p>Figure <a href="#find_its_in_hash_tables">Point-type
+ iterators in hash tables</a>-A shows the simplest (and most
+ efficient) implementation of a collision-chaining hash table.
+ The little box marked <tt>point_iterator</tt> shows an object
+ that contains a pointer to the element's node. Note that this
+ "iterator" has no way to move to the next element (<i>i.e.</i>,
+ it cannot support <tt><b>operator</b>++</tt>). Conversely, the
+ little box marked <tt>iterator</tt> stores both a pointer to
+ the element, as well as some other information (<i>e.g.</i>,
+ the bucket number of the element). the second iterator, then,
+ is "heavier" than the first one- it requires more time and
+ space. If we were to use a different container to
+ cross-reference into this hash-table using these iterators - it
+ would take much more space. As noted in <a href=
+ "#assoc_find_it_range_it">Using Point-Type Iterators for
+ Range-Type Operations</a>, nothing much can be done by
+ incrementing these iterators, so why is this extra information
+ needed?</p>
+
+ <p>Alternatively, one might create a collision-chaining
+ hash-table where the lists might be linked, forming a
+ monolithic total-element list, as in Figure <a href=
+ "#find_its_in_hash_tables">Point-type iterators in hash
+ tables</a>-B (this seems similar to the Dinkumware design
+ [<a href="references.html#dinkumware_stl">dinkumware_stl</a>]).
+ Here the iterators are as light as can be, but the hash-table's
+ operations are more complicated.</p>
+
+ <h6 class="c1"><a name="find_its_in_hash_tables" id=
+ "find_its_in_hash_tables"><img src=
+ "point_iterators_range_ops_2.png" alt="no image" /></a></h6>
+
+ <h6 class="c1">Point-type iterators in hash tables.</h6>
+
+ <p>It should be noted that containers based on
+ collision-chaining hash-tables are not the only ones with this
+ type of behavior; many other self-organizing data structures
+ display it as well.</p>
+
+ <h4><a name="assoc_inv_guar" id="assoc_inv_guar">Invalidation
+ Guarantees</a></h4>
+
+ <p>Consider the following snippet:</p>
+ <pre>
+it = c.find(3);
+
+c.erase(5);
+</pre>
+
+ <p>Following the call to <tt>erase</tt>, what is the validity
+ of <tt>it</tt>: can it be de-referenced? can it be
+ incremented?</p>
+
+ <p>The answer depends on the underlying data structure of the
+ container. Figure <a href=
+ "#invalidation_guarantee_erase">Effect of erase in different
+ underlying data structures</a> shows three cases: A1 and A2
+ show a red-black tree; B1 and B2 show a probing hash-table; C1
+ and C2 show a collision-chaining hash table.</p>
+
+ <h6 class="c1"><a name="invalidation_guarantee_erase" id=
+ "invalidation_guarantee_erase"><img src=
+ "invalidation_guarantee_erase.png" alt="no image" /></a></h6>
+
+ <h6 class="c1">Effect of erase in different underlying
+ data structures.</h6>
+
+ <ol>
+ <li>Erasing 5 from A1 yields A2. Clearly, an iterator to 3
+ can be de-referenced and incremented. The sequence of
+ iterators changed, but in a way that is well-defined by the
+ <u>interface</u>.</li>
+
+ <li>Erasing 5 from B1 yields B2. Clearly, an iterator to 3 is
+ not valid at all - it cannot be de-referenced or incremented;
+ the order of iterators changed in a way that is (practically)
+ determined by the <u>implementation</u> and not by the
+ <u>interface</u>.</li>
+
+ <li>Erasing 5 from C1 yields C2. Here the situation is more
+ complicated. On the one hand, there is no problem in
+ de-referencing <tt>it</tt>. On the other hand, the order of
+ iterators changed in a way that is (practically) determined
+ by the <u>implementation</u> and not by the
+ <u>interface</u>.</li>
+ </ol>
+
+ <p>So in classic STL, it is not always possible to express
+ whether <tt>it</tt> is valid or not. This is true also for
+ <tt>insert</tt>, <i>e.g.</i>. Again, the iterator concept seems
+ overloaded.</p>
+
+ <h3><a name="assoc_methods" id="assoc_methods">Slightly
+ Different Methods</a></h3>
+
+ <p>[<a href="references.html#meyers02both">meyers02both</a>]
+ points out that a class's methods should comprise only
+ operations which depend on the class's internal structure;
+ other operations are best designed as external functions.
+ Possibly, therefore, the STL's associative containers lack some
+ useful methods, and provide some other methods which would be
+ better left out (<i>e.g.</i>, [<a href=
+ "references.html#sgi_stl">sgi_stl</a>] ).</p>
+
+ <h4><a name="assoc_ers_methods" id="assoc_ers_methods">Methods
+ Related to Erase</a></h4>
+
+ <ol>
+ <li>Order-preserving STL associative containers provide the
+ method
+ <pre>
+iterator
+ erase
+ (iterator it)
+</pre>which takes an iterator, erases the corresponding element,
+and returns an iterator to the following element. Also hash-based
+STL associative containers provide this method. This <u>seemingly
+increases</u> genericity between associative containers, since, <i>
+ e.g.</i>, it is possible to use
+ <pre>
+<b>typename</b> C::iterator it = c.begin();
+<b>typename</b> C::iterator e_it = c.end();
+
+<b>while</b>(it != e_it)
+ it = pred(*it)? c.erase(it) : ++it;
+</pre>in order to erase from a container object <tt>
+ c</tt> all element which match a predicate <tt>pred</tt>.
+ However, in a different sense this actually
+ <u>decreases</u> genericity: an integral implication of
+ this method is that tree-based associative containers'
+ memory use is linear in the total number of elements they
+ store, while hash-based containers' memory use is unbounded
+ in the total number of elements they store. Assume a
+ hash-based container is allowed to decrease its size when
+ an element is erased. Then the elements might be rehashed,
+ which means that there is no "next" element - it is simply
+ undefined. Consequently, it is possible to infer from the
+ fact that STL hash-based containers provide this method
+ that they cannot downsize when elements are erased
+ (<a href="assoc_performance_tests.html#hash_based">Performance
+ Tests::Hash-Based Container Tests</a> quantifies this.) As
+ a consequence, different code is needed to manipulate
+ different containers, assuming that memory should be
+ conserved. <tt>pb_ds</tt>'s non-order preserving
+ associative containers omit this method.
+ </li>
+
+ <li>All of <tt>pb_ds</tt>'s associative containers include a
+ conditional-erase method
+ <pre>
+<b>template</b>&lt;
+ <b>class</b> Pred&gt;
+size_type
+ erase_if
+ (Pred pred)
+</pre>which erases all elements matching a predicate. This is
+probably the only way to ensure linear-time multiple-item erase
+which can actually downsize a container.
+ </li>
+
+ <li>STL associative containers provide methods for
+ multiple-item erase of the form
+ <pre>
+size_type
+ erase
+ (It b,
+ It e)
+</pre>erasing a range of elements given by a pair of iterators. For
+tree-based or trie-based containers, this can implemented more
+efficiently as a (small) sequence of split and join operations. For
+other, unordered, containers, this method isn't much better than an
+external loop. Moreover, if <tt>c</tt> is a hash-based container,
+then, <i>e.g.</i>, <tt>c.erase(c.find(2), c.find(5))</tt> is almost
+certain to do something different than erasing all elements whose
+keys are between 2 and 5, and is likely to produce other undefined
+behavior.
+ </li>
+ </ol>
+
+ <h4><a name="assoc_split_join_methods" id=
+ "assoc_split_join_methods">Methods Related to Split and
+ Join</a></h4>
+
+ <p>It is well-known that tree-based and trie-based container
+ objects can be efficiently split or joined [<a href=
+ "references.html#clrs2001">clrs2001</a>]. Externally splitting
+ or joining trees is super-linear, and, furthermore, can throw
+ exceptions. Split and join methods, consequently, seem good
+ choices for tree-based container methods, especially, since as
+ noted just before, they are efficient replacements for erasing
+ sub-sequences. <a href=
+ "assoc_performance_tests.html#tree_like_based">Performance
+ Tests::Tree-Like-Based Container Tests</a> quantifies this.</p>
+
+ <h4><a name="assoc_insert_methods" id=
+ "assoc_insert_methods">Methods Related to Insert</a></h4>
+
+ <p>STL associative containers provide methods of the form</p>
+ <pre>
+<b>template</b>&lt;
+ <b>class</b> It&gt;
+size_type
+ insert
+ (It b,
+ It e);
+</pre>for inserting a range of elements given by a pair of
+iterators. At best, this can be implemented as an external loop,
+or, even more efficiently, as a join operation (for the case of
+tree-based or trie-based containers). Moreover, these methods seem
+similar to constructors taking a range given by a pair of
+iterators; the constructors, however, are transactional, whereas
+the insert methods are not; this is possibly confusing.
+
+ <h4><a name="assoc_equiv_comp_methods" id=
+ "assoc_equiv_comp_methods">Functions Related to
+ Comparison</a></h4>
+
+ <p>Associative containers are parametrized by policies
+ allowing to test key equivalence; <i>e.g.</i> a hash-based
+ container can do this through its equivalence functor, and a
+ tree-based container can do this through its comparison
+ functor. In addition, some STL associative containers have
+ global function operators, <i>e.g.</i>,
+ <tt><b>operator</b>==</tt> and <tt><b>operator</b>&lt;=</tt>,
+ that allow comparing entire associative containers.</p>
+
+ <p>In our opinion, these functions are better left out. To
+ begin with, they do not significantly improve over an external
+ loop. More importantly, however, they are possibly misleading -
+ <tt><b>operator</b>==</tt>, for example, usually checks for
+ equivalence, or interchangeability, but the associative
+ container cannot check for values' equivalence, only keys'
+ equivalence; also, are two containers considered equivalent if
+ they store the same values in different order? this is an
+ arbitrary decision.</p>
+
+ <h3><a name="assoc_mapping_semantics" id=
+ "assoc_mapping_semantics">Alternative to Multiple Equivalent
+ Keys</a></h3>
+
+ <p>Maps (or sets) allow mapping (or storing) unique-key values.
+ The STL, however, also supplies associative containers which
+ map (or store) multiple values with equivalent keys:
+ <tt>std::multimap</tt>, <tt>std::multiset</tt>,
+ <tt>std::tr1::unordered_multimap</tt>, and
+ <tt>unordered_multiset</tt>. We first discuss how these might
+ be used, then why we think it is best to avoid them.</p>
+
+ <p>Suppose one builds a simple bank-account application that
+ records for each client (identified by an <tt>std::string</tt>)
+ and account-id (marked by an <tt><b>unsigned long</b></tt>) -
+ the balance in the account (described by a
+ <tt><b>float</b></tt>). Suppose further that ordering this
+ information is not useful, so a hash-based container is
+ preferable to a tree based container. Then one can use</p>
+ <pre>
+std::tr1::unordered_map&lt;std::pair&lt;std::string, <b>unsigned long</b>&gt;, <b>float</b>, ...&gt;
+</pre>which <u>hashes every combination of client and
+account-id</u>. This might work well, except for the fact that it
+is now impossible to efficiently list all of the accounts of a
+specific client (this would practically require iterating over all
+entries). Instead, one can use
+ <pre>
+std::tr1::unordered_multimap&lt;std::pair&lt;std::string, <tt><b>unsigned long</b></tt>&gt;, <b>float</b>, ...&gt;
+</pre>which <u>hashes every client</u>, and <u>decides equivalence
+based on client</u> only. This will ensure that all accounts
+belonging to a specific user are stored consecutively.
+
+ <p>Also, suppose one wants an integers' priority queue
+ (<i>i.e.,</i> a container that supports <tt>push</tt>,
+ <tt>pop</tt>, and <tt>top</tt> operations, the last of which
+ returns the largest <tt><b>int</b></tt>) that also supports
+ operations such as <tt>find</tt> and <tt>lower_bound</tt>. A
+ reasonable solution is to build an adapter over
+ <tt>std::set&lt;<b>int</b>&gt;</tt>. In this adapter,
+ <i>e.g.</i>, <tt>push</tt> will just call the tree-based
+ associative container's <tt>insert</tt> method; <tt>pop</tt>
+ will call its <tt>end</tt> method, and use it to return the
+ preceding element (which must be the largest). Then this might
+ work well, except that the container object cannot hold
+ multiple instances of the same integer (<tt>push(4)</tt>,
+ <i>e.g.</i>, will be a no-op if <tt>4</tt> is already in the
+ container object). If multiple keys are necessary, then one
+ might build the adapter over an
+ <tt>std::multiset&lt;<b>int</b>&gt;</tt>.</p>
+
+ <p class="c1">STL non-unique-mapping containers, then, are
+ useful when (1) a key can be decomposed in to a primary key and
+ a secondary key, (2) a key is needed multiple times, or (3) any
+ combination of (1) and (2).</p>
+
+ <p>Figure <a href="#embedded_lists_1">Non-unique mapping
+ containers in the STL's design</a> shows how the STL's design
+ works internally; in this figure nodes shaded equally represent
+ equivalent-key values. Equivalent keys are stored consecutively
+ using the properties of the underlying data structure: binary
+ search trees (Figure <a href="#embedded_lists_1">Non-unique
+ mapping containers in the STL's design</a>-A) store
+ equivalent-key values consecutively (in the sense of an
+ in-order walk) naturally; collision-chaining hash tables
+ (Figure <a href="#embedded_lists_1">Non-unique mapping
+ containers in the STL's design</a>-B) store equivalent-key
+ values in the same bucket, the bucket can be arranged so that
+ equivalent-key values are consecutive.</p>
+
+ <h6 class="c1"><a name="embedded_lists_1" id=
+ "embedded_lists_1"><img src="embedded_lists_1.png" alt=
+ "no image" /></a></h6>
+
+ <h6 class="c1">Non-unique mapping containers in the STL's
+ design.</h6>
+
+ <p>Put differently, STL non-unique mapping
+ associative-containers are associative containers that map
+ primary keys to linked lists that are embedded into the
+ container. Figure <a href="#embedded_lists_2">Effect of
+ embedded lists in STL multimaps</a> shows again the two
+ containers from Figure <a href="#embedded_lists_1">Non-unique
+ mapping containers in the STL's design</a>, this time with the
+ embedded linked lists of the grayed nodes marked
+ explicitly.</p>
+
+ <h6 class="c1"><a name="embedded_lists_2" id=
+ "embedded_lists_2"><img src="embedded_lists_2.png" alt=
+ "no image" /></a></h6>
+
+ <h6 class="c1">Effect of embedded lists in STL multimaps.</h6>
+
+ <p>These embedded linked lists have several disadvantages.</p>
+
+ <ol>
+ <li>The underlying data structure embeds the linked lists
+ according to its own consideration, which means that the
+ search path for a value might include several different
+ equivalent-key values. For example, the search path for the
+ the black node in either of Figures <a href=
+ "#embedded_lists_1">Non-unique mapping containers in the
+ STL's design</a> A or B, includes more than a single gray
+ node.</li>
+
+ <li>The links of the linked lists are the underlying
+ data structures' nodes, which typically are quite structured.
+ <i>E.g.</i>, in the case of tree-based containers (Figure
+ <a href="#embedded_lists_2">Effect of embedded lists in STL
+ multimaps</a>-B), each "link" is actually a node with three
+ pointers (one to a parent and two to children), and a
+ relatively-complicated iteration algorithm. The linked lists,
+ therefore, can take up quite a lot of memory, and iterating
+ over all values equal to a given key (<i>e.g.</i>, through
+ the return value of the STL's <tt>equal_range</tt>) can be
+ expensive.</li>
+
+ <li>The primary key is stored multiply; this uses more
+ memory.</li>
+
+ <li>Finally, the interface of this design excludes several
+ useful underlying data structures. <i>E.g.</i>, of all the
+ unordered self-organizing data structures, practically only
+ collision-chaining hash tables can (efficiently) guarantee
+ that equivalent-key values are stored consecutively.</li>
+ </ol>
+
+ <p>The above reasons hold even when the ratio of secondary keys
+ to primary keys (or average number of identical keys) is small,
+ but when it is large, there are more severe problems:</p>
+
+ <ol>
+ <li>The underlying data structures order the links inside
+ each embedded linked-lists according to their internal
+ considerations, which effectively means that each of the
+ links is unordered. Irrespective of the underlying
+ data structure, searching for a specific value can degrade to
+ linear complexity.</li>
+
+ <li>Similarly to the above point, it is impossible to apply
+ to the secondary keys considerations that apply to primary
+ keys. For example, it is not possible to maintain secondary
+ keys by sorted order.</li>
+
+ <li>While the interface "understands" that all equivalent-key
+ values constitute a distinct list (<i>e.g.</i>, through
+ <tt>equal_range</tt>), the underlying data structure
+ typically does not. This means, <i>e.g.</i>, that operations
+ such as erasing from a tree-based container all values whose
+ keys are equivalent to a a given key can be super-linear in
+ the size of the tree; this is also true also for several
+ other operations that target a specific list.</li>
+ </ol>
+
+ <p>In <tt>pb_ds</tt>, therefore, all associative containers map
+ (or store) unique-key values. One can (1) map primary keys to
+ secondary associative-containers (<i>i.e.</i>, containers of
+ secondary keys) or non-associative containers (2) map identical
+ keys to a size-type representing the number of times they
+ occur, or (3) any combination of (1) and (2). Instead of
+ allowing multiple equivalent-key values, <tt>pb_ds</tt>
+ supplies associative containers based on underlying
+ data structures that are suitable as secondary
+ associative-containers (see <a href=
+ "assoc_performance_tests.html#msc">Associative-Container
+ Performance Tests::Observations::Mapping-Semantics
+ Considerations</a>).</p>
+
+ <p>Figures <a href="#embedded_lists_3">Non-unique mapping
+ containers in <tt>pb_ds</tt></a> A and B show the equivalent
+ structures in <tt>pb_ds</tt>'s design, to those in Figures
+ <a href="#embedded_lists_1">Non-unique mapping containers in
+ the STL's design</a> A and B, respectively. Each shaded box
+ represents some size-type or secondary
+ associative-container.</p>
+
+ <h6 class="c1"><a name="embedded_lists_3" id=
+ "embedded_lists_3"><img src="embedded_lists_3.png" alt=
+ "no image" /></a></h6>
+
+ <h6 class="c1">Non-unique mapping containers in the
+ <tt>pb_ds</tt>.</h6>
+
+ <p>In the first example above, then, one would use an
+ associative container mapping each user to an associative
+ container which maps each application id to a start time (see
+ <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/basic_multimap.cc"><tt>basic_multimap.cc</tt></a>);
+ in the second example, one would use an associative container
+ mapping each <tt><b>int</b></tt> to some size-type indicating
+ the number of times it logically occurs (see <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/basic_multiset.cc"><tt>basic_multiset.cc</tt></a>).</p>
+
+ <p><a href=
+ "assoc_performance_tests.html#multimaps">Associative-Container
+ Performance Tests::Multimaps</a> quantifies some of these
+ points, and <a href=
+ "assoc_performance_tests.html#msc">Associative-Container
+ Performance Tests::Observations::Mapping-Semantics
+ Considerations</a> shows some simple calculations.</p>
+
+ <p><a href="assoc_examples.html#mmaps">Associative-Container
+ Examples::Multimaps</a> shows some simple examples of using
+ "multimaps".</p>
+
+ <p><a href="lu_based_containers.html">Design::Associative
+ Containers::List-Based Containers</a> discusses types of
+ containers especially suited as secondary
+ associative-containers.</p>
+
+ <h2><a name="pq" id="pq">Priority Queues</a></h2>
+
+ <h3><a name="pq_more_ops" id="pq_more_ops">Slightly Different
+ Methods</a></h3>
+
+ <p>Priority queues are containers that allow efficiently
+ inserting values and accessing the maximal value (in the sense
+ of the container's comparison functor); <i>i.e.</i>, their
+ interface supports <tt>push</tt> and <tt>pop</tt>. The STL's
+ priority queues indeed support these methods, but they support
+ little else. For algorithmic and software-engineering purposes,
+ other methods are needed:</p>
+
+ <ol>
+ <li>Many graph algorithms [<a href=
+ "references.html#clrs2001">clrs2001</a>] require increasing a
+ value in a priority queue (again, in the sense of the
+ container's comparison functor), or joining two
+ priority-queue objects.</li>
+
+ <li>It is sometimes necessary to erase an arbitrary value in
+ a priority queue. For example, consider the <tt>select</tt>
+ function for monitoring file descriptors:
+ <pre>
+<b>int</b>
+ select
+ (<b>int</b> nfds,
+ fd_set *readfds,
+ fd_set *writefds,
+ fd_set *errorfds,
+ <b>struct</b> timeval *timeout);
+</pre>then, as the <tt>select</tt> manual page [<a href=
+"references.html#select_man">select_man</a>] states:
+
+ <p><q>The nfds argument specifies the range of file
+ descriptors to be tested. The select() function tests file
+ descriptors in the range of 0 to nfds-1.</q></p>
+
+ <p>It stands to reason, therefore, that we might wish to
+ maintain a minimal value for <tt>nfds</tt>, and priority
+ queues immediately come to mind. Note, though, that when a
+ socket is closed, the minimal file description might
+ change; in the absence of an efficient means to erase an
+ arbitrary value from a priority queue, we might as well
+ avoid its use altogether.</p>
+
+ <p><a href="pq_examples.html#xref">Priority-Queue
+ Examples::Cross-Referencing</a> shows examples for these
+ types of operations.</p>
+ </li>
+
+ <li>STL containers typically support iterators. It is
+ somewhat unusual for <tt>std::priority_queue</tt> to omit
+ them (see, <i>e.g.</i>, [<a href=
+ "references.html#meyers01stl">meyers01stl</a>]). One might
+ ask why do priority queues need to support iterators, since
+ they are self-organizing containers with a different purpose
+ than abstracting sequences. There are several reasons:
+
+ <ol>
+ <li>Iterators (even in self-organizing containers) are
+ useful for many purposes, <i>e.g.</i>, cross-referencing
+ containers, serialization, and debugging code that uses
+ these containers.</li>
+
+ <li>The STL's hash-based containers support iterators,
+ even though they too are self-organizing containers with
+ a different purpose than abstracting sequences.</li>
+
+ <li>In STL-like containers, it is natural to specify the
+ interface of operations for modifying a value or erasing
+ a value (discussed previously) in terms of a iterators.
+ This is discussed further in <a href=
+ "pq_design.html#pq_it">Design::Priority
+ Queues::Iterators</a>. It should be noted that the STL's
+ containers also use iterators for accessing and
+ manipulating a specific value. <i>E.g.</i>, in hash-based
+ containers, one checks the existence of a key by
+ comparing the iterator returned by <tt>find</tt> to the
+ iterator returned by <tt>end</tt>, and not by comparing a
+ pointer returned by <tt>find</tt> to <tt>NULL</tt>.</li>
+ </ol>
+ </li>
+ </ol>
+
+ <p><a href="pq_performance_tests.html">Performance
+ Tests::Priority Queues</a> quantifies some of these points.</p>
+
+ <h3><a name="pq_ds_genericity" id="pq_ds_genericity">More Data
+ Structures and Traits</a></h3>
+
+ <p>There are three main implementations of priority queues: the
+ first employs a binary heap, typically one which uses a
+ sequence; the second uses a tree (or forest of trees), which is
+ typically less structured than an associative container's tree;
+ the third simply uses an associative container. These are
+ shown, respectively, in Figures <a href=
+ "#pq_different_underlying_dss">Underlying Priority-Queue
+ Data-Structures</a> A1 and A2, B, and C.</p>
+
+ <h6 class="c1"><a name="pq_different_underlying_dss" id=
+ "pq_different_underlying_dss"><img src=
+ "pq_different_underlying_dss.png" alt="no image" /></a></h6>
+
+ <h6 class="c1">Underlying Priority-Queue Data-Structures.</h6>
+
+ <p>No single implementation can completely replace any of the
+ others. Some have better <tt>push</tt> and <tt>pop</tt>
+ amortized performance, some have better bounded (worst case)
+ response time than others, some optimize a single method at the
+ expense of others, <i>etc.</i>. In general the "best"
+ implementation is dictated by the problem (see <a href=
+ "pq_performance_tests.html#pq_observations">Performance
+ Tests::Priority Queues::Observations</a>).</p>
+
+ <p>As with associative containers (see <a href=
+ "#assoc_ds_genericity">Associative Containers::Traits for
+ Underlying Data-Structures</a>), the more implementations
+ co-exist, the more necessary a traits mechanism is for handling
+ generic containers safely and efficiently. This is especially
+ important for priority queues, since the invalidation
+ guarantees of one of the most useful data structures - binary
+ heaps - is markedly different than those of most of the
+ others.</p>
+
+ <p><a href="pq_design.html#pq_traits">Design::Priority
+ Queues::Traits</a> discusses this further.</p>
+
+ <h3><a name="pq_binary_heap" id="pq_binary_heap">Binary Heap
+ Implementation</a></h3>
+
+ <p>Binary heaps are one of the most useful underlying
+ data structures for priority queues. They are very efficient in
+ terms of memory (since they don't require per-value structure
+ metadata), and have the best amortized <tt>push</tt> and
+ <tt>pop</tt> performance for primitive types (<i>e.g.</i>,
+ <tt><b>int</b></tt>s).</p>
+
+ <p>The STL's <tt>priority_queue</tt> implements this data
+ structure as an adapter over a sequence, typically
+ <tt>std::vector</tt> or <tt>std::deque</tt>, which correspond
+ to Figures <a href="#pq_different_underlying_dss">Underlying
+ Priority-Queue Data-Structures</a> A1 and A2, respectively.</p>
+
+ <p>This is indeed an elegant example of the adapter concept and
+ the algorithm/container/iterator decomposition (see [<a href=
+ "references.html#nelson96stlpq">nelson96stlpql</a>]). There are
+ possibly reasons, however, why a binary-heap priority queue
+ would be better implemented as a container instead of a
+ sequence adapter:</p>
+
+ <ol>
+ <li><tt>std::priority_queue</tt> cannot erase values from its
+ adapted sequence (irrespective of the sequence type). This
+ means that the memory use of an <tt>std::priority_queue</tt>
+ object is always proportional to the maximal number of values
+ it ever contained, and not to the number of values that it
+ currently contains (see <a href=
+ "priority_queue_text_pop_mem_usage_test.html">Priority Queue
+ Text <tt>pop</tt> Memory Use Test</a>); this implementation
+ of binary heaps acts very differently than other underlying
+ data structures (<i>e.g.</i>, pairing heaps).</li>
+
+ <li>Some combinations of adapted sequences and value types
+ are very inefficient or just don't make sense. If one uses
+ <tt>std::priority_queue&lt;std::vector&lt;std::string&gt;
+ &gt; &gt;</tt>, for example, then not only will each
+ operation perform a logarithmic number of
+ <tt>std::string</tt> assignments, but, furthermore, any
+ operation (including <tt>pop</tt>) can render the container
+ useless due to exceptions. Conversely, if one uses
+ <tt>std::priority_queue&lt;std::deque&lt;<b>int</b>&gt; &gt;
+ &gt;</tt>, then each operation uses incurs a logarithmic
+ number of indirect accesses (through pointers) unnecessarily.
+ It might be better to let the container make a conservative
+ deduction whether to use the structure in Figures <a href=
+ "#pq_different_underlying_dss">Underlying Priority-Queue
+ Data-Structures</a> A1 or A2.</li>
+
+ <li>There does not seem to be a systematic way to determine
+ what exactly can be done with the priority queue.
+
+ <ol>
+ <li>If <tt>p</tt> is a priority queue adapting an
+ <tt>std::vector</tt>, then it is possible to iterate over
+ all values by using <tt>&amp;p.top()</tt> and
+ <tt>&amp;p.top() + p.size()</tt>, but this will not work
+ if <tt>p</tt> is adapting an <tt>std::deque</tt>; in any
+ case, one cannot use <tt>p.begin()</tt> and
+ <tt>p.end()</tt>. If a different sequence is adapted, it
+ is even more difficult to determine what can be
+ done.</li>
+
+ <li>If <tt>p</tt> is a priority queue adapting an
+ <tt>std::deque</tt>, then the reference return by
+ <tt>p.top()</tt> will remain valid until it is popped,
+ but if <tt>p</tt> adapts an <tt>std::vector</tt>, the
+ next <tt>push</tt> will invalidate it. If a different
+ sequence is adapted, it is even more difficult to
+ determine what can be done.</li>
+ </ol>
+ </li>
+
+ <li>Sequence-based binary heaps can still implement
+ linear-time <tt>erase</tt> and <tt>modify</tt> operations.
+ This means that if one needs, <i>e.g.</i>, to erase a small
+ (say logarithmic) number of values, then one might still
+ choose this underlying data structure. Using
+ <tt>std::priority_queue</tt>, however, this will generally
+ change the order of growth of the entire sequence of
+ operations.</li>
+ </ol>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/move_to_front_lu_policy.html b/libstdc++-v3/doc/html/ext/pb_ds/move_to_front_lu_policy.html
new file mode 100644
index 000000000..4ed4d40bd
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/move_to_front_lu_policy.html
@@ -0,0 +1,194 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>move_to_front_lu_policy Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>move_to_front_lu_policy</tt> Interface</h1>
+
+ <p>A list-update policy that unconditionally moves elements to
+ the front of the list.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/list_update_policy.hpp"><tt>list_update_policy.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Template Parameters</a></h2>
+
+ <table class="c1" width="100%" border="1" summary=
+ "Template Parameters">
+ <tr>
+ <td width="20%" align="left"><b>Parameter</b></td>
+
+ <td width="50%" align="left"><b>Description</b></td>
+
+ <td width="30%" align="left"><b>Default Value</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Allocator35940069" id=
+"Allocator35940069"><b>class</b> Allocator </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Allocator type.</p>
+
+ <p>This is used only for definitions, e.g., the size
+ type.</p>
+ </td>
+
+ <td>
+ <pre>
+std::allocator&lt;<b>char</b>&gt;
+</pre>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link2" id="link2">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link3" id="link3">Policy Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="allocator48440069" id="allocator48440069">allocator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Allocator35940069"><tt>Allocator</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p><a href="#Allocator35940069"><tt>Allocator</tt></a>
+ type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link4" id="link4">Metadata-Type
+ Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="metadata_type2849297114" id=
+"metadata_type2849297114">metadata_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="null_lu_metadata.html"><span class=
+"c2"><tt>null_lu_metadata</tt></span></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Metadata on which this functor operates.</p>
+
+ <p>In this case, none.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="metadata_reference583863863" id=
+"metadata_reference583863863">metadata_reference</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#Allocator35940069"><tt>Allocator</tt></a>::<b>template</b> rebind&lt;
+ <a href=
+"#metadata_type2849297114"><tt>metadata_type</tt></a>&gt;::other::reference
+</pre>
+ </td>
+
+ <td>
+ <p>Reference to metadata on which this functor
+ operates.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link5" id="link5">Public Methods</a></h2>
+
+ <h3><a name="link6" id="link6">Metadata Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#metadata_type2849297114"><tt>metadata_type</tt></a>
+ <b>operator</b>()
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Creates a metadata object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>bool</b>
+ <b>operator</b>()
+ (<a href=
+"#metadata_reference583863863"><tt>metadata_reference</tt></a> r_metadata) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Decides whether a metadata object should be moved to
+ the front of the list.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large.html b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large.html
new file mode 100644
index 000000000..74d33a326
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large.html
@@ -0,0 +1,215 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+<title>"Multimap" Text Find Timing Test with Large Average
+ Secondary-Key to Primary-Key Ratio</title>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+</head>
+<body>
+<div id="page">
+<h1>"Multimap" Text Find Timing Test with Large Average
+ Secondary-Key to Primary-Key Ratio</h1>
+<h2><a name="description" id="description">Description</a></h2>
+<p>This test inserts a number of pairs into a container. The
+ first item of each pair is a string from an arbitrary text
+ [<a href="references.html#wickland96thirty">wickland96thirty</a>], and
+ the second is a uniform i.i.d.integer. The container is a
+ "multimap" - it considers the first member of each pair as a
+ primary key, and the second member of each pair as a secondary
+ key (see <a href="motivation.html#assoc_mapping_semantics">Motivation::Associative
+ Containers::Alternative to Multiple Equivalent Keys</a>). There
+ are 100 distinct primary keys, and the ratio of secondary keys
+ to primary keys ranges to about 20.</p>
+<p>The test measures the average find-time as a function of the
+ number of values inserted. For <tt>pb_ds</tt>'s containers, it
+ finds the secondary key from a container obtained from finding
+ a primary key. For the native multimaps, it searches a range
+ obtained using <tt>std::equal_range</tt> on a primary key.</p>
+<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/multimap_text_find_timing_large.cc"><tt>multimap_text_find_timing_test</tt></a>
+ thirty_years_among_the_dead_preproc.txt 100 3 4 4)</p>
+<h2><a name="purpose" id="purpose">Purpose</a></h2>
+<p>The test checks the find-time scalability of different
+ "multimap" designs (see <a href="motivation.html#assoc_mapping_semantics">Motivation::Associative
+ Containers::Mapping Semantics</a>).</p>
+<h2><a name="results" id="results">Results</a></h2>
+<p>Figures <a href="#NTG">NTG</a>, <a href="#NTM">NTM</a>, and
+ <a href="#NTL">NTL</a> show the results for "multimaps" which
+ use a tree-based container for primary keys, in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>, and
+ <a href="assoc_performance_tests.html#local"><u>local</u></a>,
+ respectively; Figures <a href="#NHG"></a>NHG, <a href="#NHM">NHM</a>, and <a href="#NHL">NHL</a> show the results for
+ "multimaps" which use a hash-based container for primary keys,
+ in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>,
+ <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>,
+ and <a href="assoc_performance_tests.html#local"><u>local</u></a>,
+ respectively.</p>
+<div id="NTG_res_div">
+<div id="NTG_gcc">
+<div id="NTG_multimap_text_find_timing_test_large_s2p_tree">
+<div id="NTG_assoc">
+<div id="NTG_Native_and_primary_tree-based_multimap_types_find_timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTG" id="NTG"><img src="multimap_text_find_timing_test_large_s2p_tree_gcc.png" alt="no image" /></a></h6>NTG: Native and primary tree-based multimap types find timing test - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_mmap-
+<tt>std::multimap</tt></li>
+<li>
+rb_tree_mmap_lu_mtf_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+, mapping each key to <a href="list_update.html"><tt>list_update</tt></a>
+ with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a>
+</li>
+<li>
+rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NTM_res_div">
+<div id="NTM_msvc">
+<div id="NTM_multimap_text_find_timing_test_large_s2p_tree">
+<div id="NTM_assoc">
+<div id="NTM_Native_and_primary_tree-based_multimap_types_find_timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTM" id="NTM"><img src="multimap_text_find_timing_test_large_s2p_tree_msvc.png" alt="no image" /></a></h6>NTM: Native and primary tree-based multimap types find timing test - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_mmap-
+<tt>std::multimap</tt></li>
+<li>
+rb_tree_mmap_lu_mtf_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+, mapping each key to <a href="list_update.html"><tt>list_update</tt></a>
+ with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a>
+</li>
+<li>
+rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NTL_res_div">
+<div id="NTL_local">
+<div id="NTL_multimap_text_find_timing_test_large_s2p_tree">
+<div id="NTL_assoc">
+<div id="NTL_Native_and_primary_tree-based_multimap_types_find_timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTL" id= "NTL"><img src="multimap_text_find_timing_test_large_s2p_tree_local.png" alt="no image" /></a></h6>NTL: Native and primary tree-based multimap types find timing test - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NHG_res_div">
+<div id="NHG_gcc">
+<div id="NHG_multimap_text_find_timing_test_large_s2p_hash">
+<div id="NHG_assoc">
+<div id="NHG_Native_and_primary_hash-based_multimap_types_find_timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHG" id="NHG"><img src="multimap_text_find_timing_test_large_s2p_hash_gcc.png" alt="no image" /></a></h6>NHG: Native and primary hash-based multimap types find timing test - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_hash_mmap-
+<tt>__gnucxx::hash_multimap</tt></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_lu_mtf_set-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="list_update.html"><tt>list_update</tt></a>
+ with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a>
+</li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NHM_res_div">
+<div id="NHM_msvc">
+<div id="NHM_multimap_text_find_timing_test_large_s2p_hash">
+<div id="NHM_assoc">
+<div id="NHM_Native_and_primary_hash-based_multimap_types_find_timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHM" id="NHM"><img src="multimap_text_find_timing_test_large_s2p_hash_msvc.png" alt="no image" /></a></h6>NHM: Native and primary hash-based multimap types find timing test - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_hash_mmap-
+<tt>stdext::hash_multimap</tt></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_lu_mtf_set-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="list_update.html"><tt>list_update</tt></a>
+ with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a>
+</li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NHL_res_div">
+<div id="NHL_local">
+<div id="NHL_multimap_text_find_timing_test_large_s2p_hash">
+<div id="NHL_assoc">
+<div id="NHL__Native_and_primary_hash-based_multimap_types_find_timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHL" id= "NHL"><img src="multimap_text_find_timing_test_large_s2p_hash_local.png" alt="no image" /></a></h6>NHL: Native and primary hash-based multimap types find timing test - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<h2><a name="observations" id="observations">Observations</a></h2>
+<p>See <a href="assoc_performance_tests.html#msc">Observations::Mapping-Semantics
+ Considerations</a>.</p>
+</div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_hash_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_hash_gcc.png
new file mode 100644
index 000000000..03a62f52b
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_hash_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_hash_local.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_hash_local.png
new file mode 100644
index 000000000..32a61cac9
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_hash_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_hash_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_hash_msvc.png
new file mode 100644
index 000000000..4462d289a
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_hash_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_tree_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_tree_gcc.png
new file mode 100644
index 000000000..89e464481
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_tree_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_tree_local.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_tree_local.png
new file mode 100644
index 000000000..10b3980ed
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_tree_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_tree_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_tree_msvc.png
new file mode 100644
index 000000000..20320953e
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_tree_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small.html b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small.html
new file mode 100644
index 000000000..1b379d821
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small.html
@@ -0,0 +1,215 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+<title>"Multimap" Text Find Timing Test with Small Average
+ Secondary-Key to Primary-Key Ratio</title>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+</head>
+<body>
+<div id="page">
+<h1>"Multimap" Text Find Timing Test with Small Average
+ Secondary-Key to Primary-Key Ratio</h1>
+<h2><a name="description" id="description">Description</a></h2>
+<p>This test inserts a number of pairs into a container. The
+ first item of each pair is a string from an arbitrary text
+ [<a href="references.html#wickland96thirty">wickland96thirty</a>], and
+ the second is a uniform i.i.d.integer. The container is a
+ "multimap" - it considers the first member of each pair as a
+ primary key, and the second member of each pair as a secondary
+ key (see <a href="motivation.html#assoc_mapping_semantics">Motivation::Associative
+ Containers::Alternative to Multiple Equivalent Keys</a>). There
+ are 400 distinct primary keys, and the ratio of secondary keys
+ to primary keys ranges from 1 to 5.</p>
+<p>The test measures the average find-time as a function of the
+ number of values inserted. For <tt>pb_ds</tt>'s containers, it
+ finds the secondary key from a container obtained from finding
+ a primary key. For the native multimaps, it searches a range
+ obtained using <tt>std::equal_range</tt> on a primary key.</p>
+<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/multimap_text_find_timing_small.cc"><tt>multimap_text_find_timing_test</tt></a>
+ thirty_years_among_the_dead_preproc.txt 400 1 1 6)</p>
+<h2><a name="purpose" id="purpose">Purpose</a></h2>
+<p>The test checks the find-time scalability of different
+ "multimap" designs (see <a href="motivation.html#assoc_mapping_semantics">Motivation::Associative
+ Containers::Mapping Semantics</a>).</p>
+<h2><a name="results" id="results">Results</a></h2>
+<p>Figures <a href="#NTG">NTG</a>, <a href="#NTM">NTM</a>, and
+ <a href="#NTL">NTL</a> show the results for "multimaps" which
+ use a tree-based container for primary keys, in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>, and
+ <a href="assoc_performance_tests.html#local"><u>local</u></a>,
+ respectively; Figures <a href="#NHG"></a>NHG, <a href="#NHM">NHM</a>, and <a href="#NHL">NHL</a> show the results for
+ "multimaps" which use a hash-based container for primary keys,
+ in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>,
+ <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>,
+ and <a href="assoc_performance_tests.html#local"><u>local</u></a>,
+ respectively.</p>
+<div id="NTG_res_div">
+<div id="NTG_gcc">
+<div id="NTG_multimap_text_find_timing_test_small_s2p_tree">
+<div id="NTG_assoc">
+<div id="NHG_Native_and_primary_tree-based_multimap_types_find_timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTG" id="NTG"><img src="multimap_text_find_timing_test_small_s2p_tree_gcc.png" alt="no image" /></a></h6>NTG: NHG Native and primary tree-based multimap types find timing test - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_mmap-
+<tt>std::multimap</tt></li>
+<li>
+rb_tree_mmap_lu_mtf_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+, mapping each key to <a href="list_update.html"><tt>list_update</tt></a>
+ with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a>
+</li>
+<li>
+rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NTM_res_div">
+<div id="NTM_msvc">
+<div id="NTM_multimap_text_find_timing_test_small_s2p_tree">
+<div id="NTM_assoc">
+<div id="NHM_Native_and_primary_tree-based_multimap_types_find_timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTM" id="NTM"><img src="multimap_text_find_timing_test_small_s2p_tree_msvc.png" alt="no image" /></a></h6>NTM: NHM Native and primary tree-based multimap types find timing test - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_mmap-
+<tt>std::multimap</tt></li>
+<li>
+rb_tree_mmap_lu_mtf_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+, mapping each key to <a href="list_update.html"><tt>list_update</tt></a>
+ with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a>
+</li>
+<li>
+rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NTL_res_div">
+<div id="NTL_local">
+<div id="NTL_multimap_text_find_timing_test_small_s2p_tree">
+<div id="NTL_assoc">
+<div id="NTL_Native_and_primary_tree-based_multimap_types_find_timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTL" id= "NTL"><img src="multimap_text_find_timing_test_small_s2p_tree_local.png" alt="no image" /></a></h6>NTL: Native and primary tree-based multimap types find timing test - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NHG_res_div">
+<div id="NHG_gcc">
+<div id="NHG_multimap_text_find_timing_test_small_s2p_hash">
+<div id="NHG_assoc">
+<div id="NHG_Native_and_primary_hash-based_multimap_types_find_timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHG" id="NHG"><img src="multimap_text_find_timing_test_small_s2p_hash_gcc.png" alt="no image" /></a></h6>NHG: Native and primary hash-based multimap types find timing test - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_hash_mmap-
+<tt>__gnucxx::hash_multimap</tt></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_lu_mtf_set-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="list_update.html"><tt>list_update</tt></a>
+ with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a>
+</li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NHM_res_div">
+<div id="NHM_msvc">
+<div id="NHM_multimap_text_find_timing_test_small_s2p_hash">
+<div id="NHM_assoc">
+<div id="NHM_Native_and_primary_hash-based_multimap_types_find_timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHM" id="NHM"><img src="multimap_text_find_timing_test_small_s2p_hash_msvc.png" alt="no image" /></a></h6>NHM: Native and primary hash-based multimap types find timing test - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_hash_mmap-
+<tt>stdext::hash_multimap</tt></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_lu_mtf_set-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="list_update.html"><tt>list_update</tt></a>
+ with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a>
+</li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NHL_res_div">
+<div id="NHL_local">
+<div id="NHL_multimap_text_find_timing_test_small_s2p_hash">
+<div id="NHL_assoc">
+<div id="NHL__Native_and_primary_hash-based_multimap_types_find_timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHL" id= "NHL"><img src="multimap_text_find_timing_test_small_s2p_hash_local.png" alt="no image" /></a></h6>NHL: Native and primary hash-based multimap types find timing test - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<h2><a name="observations" id="observations">Observations</a></h2>
+<p>See <a href="assoc_performance_tests.html#msc">Observations::Mapping-Semantics
+ Considerations</a>.</p>
+</div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_hash_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_hash_gcc.png
new file mode 100644
index 000000000..60e850937
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_hash_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_hash_local.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_hash_local.png
new file mode 100644
index 000000000..a8fa26117
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_hash_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_hash_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_hash_msvc.png
new file mode 100644
index 000000000..11aa9e07b
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_hash_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_tree_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_tree_gcc.png
new file mode 100644
index 000000000..f54369b15
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_tree_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_tree_local.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_tree_local.png
new file mode 100644
index 000000000..b3d10612f
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_tree_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_tree_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_tree_msvc.png
new file mode 100644
index 000000000..035fd9389
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_tree_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large.html b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large.html
new file mode 100644
index 000000000..4affbf440
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large.html
@@ -0,0 +1,210 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+<title>Hash-List "Multimap" Text Memory Use Test with Large
+ Average Secondary-Key to Primary-Key Ratio</title>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+</head>
+<body>
+<div id="page">
+<h1>"Multimap" Text Memory Use Test with Large Average
+ Secondary-Key to Primary-Key Ratio</h1>
+<h2><a name="description" id="description">Description</a></h2>
+<p>This test inserts a number of pairs into a container. The
+ first item of each pair is a string from an arbitrary text
+ [<a href="references.html#wickland96thirty">wickland96thirty</a>], and
+ the second is a uniform i.i.d.integer. The container is a
+ "multimap" - it considers the first member of each pair as a
+ primary key, and the second member of each pair as a secondary
+ key (see <a href="motivation.html#assoc_mapping_semantics">Motivation::Associative
+ Containers::Alternative to Multiple Equivalent Keys</a>). There
+ are 100 distinct primary keys. The test measures the memory use
+ as a function of the number of values inserted.</p>
+<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem_usage_large.cc"><tt>multimap_text_insert_mem_usage_test</tt></a>
+ thirty_years_among_the_dead_preproc.txt 100 200 2100 100)</p>
+<h2><a name="purpose" id="purpose">Purpose</a></h2>
+<p>The test checks the memory scalability of different
+ "multimap" designs (see <a href="motivation.html#assoc_mapping_semantics">Motivation::Associative
+ Containers::Mapping Semantics</a>).</p>
+<h2><a name="results" id="results">Results</a></h2>
+<p>Figures <a href="#NTG">NTG</a>, <a href="#NTM">NTM</a>, and
+ <a href="#NTL">NTL</a> show the results for "multimaps" which
+ use a tree-based container for primary keys, in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>, and
+ <a href="assoc_performance_tests.html#local"><u>local</u></a>,
+ respectively; Figures <a href="#NHG"></a>NHG, <a href="#NHM">NHM</a>, and <a href="#NHL">NHL</a> show the results for
+ "multimaps" which use a hash-based container for primary keys,
+ in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>,
+ <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>,
+ and <a href="assoc_performance_tests.html#local"><u>local</u></a>,
+ respectively.</p>
+<div id="NTG_res_div">
+<div id="NTG_gcc">
+<div id="NTG_multimap_text_insert_mem_usage_test_large_s2p_tree">
+<div id="NTG_assoc">
+<div id="NHG_Native_and_primary_tree-based_multimap_types_mem_usage_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTG" id="NTG"><img src="multimap_text_insert_mem_usage_test_large_s2p_tree_gcc.png" alt="no image" /></a></h6>NTG: NHG Native and primary tree-based multimap types mem usage test - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+<li>
+n_mmap-
+<tt>std::multimap</tt></li>
+<li>
+rb_tree_mmap_lu_mtf_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+, mapping each key to <a href="list_update.html"><tt>list_update</tt></a>
+ with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NTM_res_div">
+<div id="NTM_msvc">
+<div id="NTM_multimap_text_insert_mem_usage_test_large_s2p_tree">
+<div id="NTM_assoc">
+<div id="NHM_Native_and_primary_tree-based_multimap_types_mem_usage_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTM" id="NTM"><img src="multimap_text_insert_mem_usage_test_large_s2p_tree_msvc.png" alt="no image" /></a></h6>NTM: NHM Native and primary tree-based multimap types mem usage test - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_mmap-
+<tt>std::multimap</tt></li>
+<li>
+rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+<li>
+rb_tree_mmap_lu_mtf_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+, mapping each key to <a href="list_update.html"><tt>list_update</tt></a>
+ with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NTL_res_div">
+<div id="NTL_local">
+<div id="NTL_multimap_text_insert_mem_usage_test_large_s2p_tree">
+<div id="NTL_assoc">
+<div id="NTL_Native_and_primary_tree-based_multimap_types_mem_usage_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTL" id= "NTL"><img src="multimap_text_insert_mem_usage_test_large_s2p_tree_local.png" alt="no image" /></a></h6>NTL: Native and primary tree-based multimap types mem usage test - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NHG_res_div">
+<div id="NHG_gcc">
+<div id="NHG_multimap_text_insert_mem_usage_test_large_s2p_hash">
+<div id="NHG_assoc">
+<div id="NHG_Native_and_primary_hash-based_multimap_types_mem_usage_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHG" id="NHG"><img src="multimap_text_insert_mem_usage_test_large_s2p_hash_gcc.png" alt="no image" /></a></h6>NHG: Native and primary hash-based multimap types mem usage test - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+<li>
+n_hash_mmap-
+<tt>__gnucxx::hash_multimap</tt></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_lu_mtf_set-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="list_update.html"><tt>list_update</tt></a>
+ with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NHM_res_div">
+<div id="NHM_msvc">
+<div id="NHM_multimap_text_insert_mem_usage_test_large_s2p_hash">
+<div id="NHM_assoc">
+<div id="NHM_Native_and_primary_hash-based_multimap_types_mem_usage_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHM" id="NHM"><img src="multimap_text_insert_mem_usage_test_large_s2p_hash_msvc.png" alt="no image" /></a></h6>NHM: Native and primary hash-based multimap types mem usage test - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_hash_mmap-
+<tt>stdext::hash_multimap</tt></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_lu_mtf_set-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="list_update.html"><tt>list_update</tt></a>
+ with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NHL_res_div">
+<div id="NHL_local">
+<div id="NHL_multimap_text_insert_mem_usage_test_large_s2p_hash">
+<div id="NHL_assoc">
+<div id="NHL__Native_and_primary_hash-based_multimap_types_mem_usage_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHL" id= "NHL"><img src="multimap_text_insert_mem_usage_test_large_s2p_hash_local.png" alt="no image" /></a></h6>NHL: Native and primary hash-based multimap types mem usage test - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<h2><a name="observations" id="observations">Observations</a></h2>
+<p>See <a href="assoc_performance_tests.html#msc">Observations::Mapping-Semantics
+ Considerations</a>.</p>
+</div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_hash_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_hash_gcc.png
new file mode 100644
index 000000000..51a3f8d61
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_hash_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_hash_local.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_hash_local.png
new file mode 100644
index 000000000..8af7100c6
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_hash_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_hash_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_hash_msvc.png
new file mode 100644
index 000000000..3a938c0bb
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_hash_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_tree_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_tree_gcc.png
new file mode 100644
index 000000000..a992d8f7c
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_tree_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_tree_local.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_tree_local.png
new file mode 100644
index 000000000..63c0c8db7
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_tree_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_tree_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_tree_msvc.png
new file mode 100644
index 000000000..26841bd10
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_tree_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small.html b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small.html
new file mode 100644
index 000000000..462fce4ca
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small.html
@@ -0,0 +1,212 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+<title>Hash-List "Multimap" Text Memory Use Test with Small
+ Average Secondary-Key to Primary-Key Ratio</title>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+</head>
+<body>
+<div id="page">
+<h1>"Multimap" Text Memory Use Test with Small Average
+ Secondary-Key to Primary-Key Ratio</h1>
+<h2><a name="description" id="description">Description</a></h2>
+<p>This test inserts a number of pairs into a container. The
+ first item of each pair is a string from an arbitrary text
+ [<a href="references.html#wickland96thirty">wickland96thirty</a>], and
+ the second is a uniform i.i.d.integer. The container is a
+ "multimap" - it considers the first member of each pair as a
+ primary key, and the second member of each pair as a secondary
+ key (see <a href="motivation.html#assoc_mapping_semantics">Motivation::Associative
+ Containers::Alternative to Multiple Equivalent Keys</a>). There
+ are 100 distinct primary keys, and the ratio of secondary keys
+ to primary keys ranges to about 20.</p>
+<p>The test measures the memory use as a function of the number
+ of values inserted.</p>
+<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem_usage_small.cc"><tt>multimap_text_insert_mem_usage_test</tt></a>
+ thirty_years_among_the_dead_preproc.txt 100 3 4 4)</p>
+<h2><a name="purpose" id="purpose">Purpose</a></h2>
+<p>The test checks the memory scalability of different
+ "multimap" designs (see <a href="motivation.html#assoc_mapping_semantics">Motivation::Associative
+ Containers::Mapping Semantics</a>).</p>
+<h2><a name="results" id="results">Results</a></h2>
+<p>Figures <a href="#NTG">NTG</a>, <a href="#NTM">NTM</a>, and
+ <a href="#NTL">NTL</a> show the results for "multimaps" which
+ use a tree-based container for primary keys, in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>, and
+ <a href="assoc_performance_tests.html#local"><u>local</u></a>,
+ respectively; Figures <a href="#NHG"></a>NHG, <a href="#NHM">NHM</a>, and <a href="#NHL">NHL</a> show the results for
+ "multimaps" which use a hash-based container for primary keys,
+ in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>,
+ <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>,
+ and <a href="assoc_performance_tests.html#local"><u>local</u></a>,
+ respectively.</p>
+<div id="NTG_res_div">
+<div id="NTG_gcc">
+<div id="NTG_multimap_text_insert_mem_usage_test_small_s2p_tree">
+<div id="NTG_assoc">
+<div id="NTG_Native_and_primary_tree-based_multimap_types_mem_usage_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTG" id="NTG"><img src="multimap_text_insert_mem_usage_test_small_s2p_tree_gcc.png" alt="no image" /></a></h6>NTG: Native and primary tree-based multimap types mem usage test - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+<li>
+n_mmap-
+<tt>std::multimap</tt></li>
+<li>
+rb_tree_mmap_lu_mtf_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+, mapping each key to <a href="list_update.html"><tt>list_update</tt></a>
+ with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NTM_res_div">
+<div id="NTM_msvc">
+<div id="NTM_multimap_text_insert_mem_usage_test_small_s2p_tree">
+<div id="NTM_assoc">
+<div id="NHM_Native_and_primary_tree-based_multimap_types_mem_usage_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTM" id="NTM"><img src="multimap_text_insert_mem_usage_test_small_s2p_tree_msvc.png" alt="no image" /></a></h6>NTM: NHM Native and primary tree-based multimap types mem usage test - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+<li>
+n_mmap-
+<tt>std::multimap</tt></li>
+<li>
+rb_tree_mmap_lu_mtf_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+, mapping each key to <a href="list_update.html"><tt>list_update</tt></a>
+ with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NTL_res_div">
+<div id="NTL_local">
+<div id="NTL_multimap_text_insert_mem_usage_test_small_s2p_tree">
+<div id="NTL_assoc">
+<div id="NTL_Native_and_primary_tree-based_multimap_types_mem_usage_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTL" id= "NTL"><img src="multimap_text_insert_mem_usage_test_small_s2p_tree_local.png" alt="no image" /></a></h6>NTL: Native and primary tree-based multimap types mem usage test - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NHG_res_div">
+<div id="NHG_gcc">
+<div id="NHG_multimap_text_insert_mem_usage_test_small_s2p_hash">
+<div id="NHG_assoc">
+<div id="NHG_Native_and_primary_hash-based_multimap_types_mem_usage_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHG" id="NHG"><img src="multimap_text_insert_mem_usage_test_small_s2p_hash_gcc.png" alt="no image" /></a></h6>NHG: Native and primary hash-based multimap types mem usage test - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+<li>
+n_hash_mmap-
+<tt>__gnucxx::hash_multimap</tt></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_lu_mtf_set-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="list_update.html"><tt>list_update</tt></a>
+ with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NHM_res_div">
+<div id="NHM_msvc">
+<div id="NHM_multimap_text_insert_mem_usage_test_small_s2p_hash">
+<div id="NHM_assoc">
+<div id="NHM_Native_and_primary_hash-based_multimap_types_mem_usage_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHM" id="NHM"><img src="multimap_text_insert_mem_usage_test_small_s2p_hash_msvc.png" alt="no image" /></a></h6>NHM: Native and primary hash-based multimap types mem usage test - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+<li>
+n_hash_mmap-
+<tt>stdext::hash_multimap</tt></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_lu_mtf_set-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="list_update.html"><tt>list_update</tt></a>
+ with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NHL_res_div">
+<div id="NHL_local">
+<div id="NHL_multimap_text_insert_mem_usage_test_small_s2p_hash">
+<div id="NHL_assoc">
+<div id="NHL__Native_and_primary_hash-based_multimap_types_mem_usage_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHL" id= "NHL"><img src="multimap_text_insert_mem_usage_test_small_s2p_hash_local.png" alt="no image" /></a></h6>NHL: Native and primary hash-based multimap types mem usage test - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<h2><a name="observations" id="observations">Observations</a></h2>
+<p>See <a href="assoc_performance_tests.html#msc">Observations::Mapping-Semantics
+ Considerations</a>.</p>
+</div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_hash_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_hash_gcc.png
new file mode 100644
index 000000000..d3eba9da4
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_hash_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_hash_local.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_hash_local.png
new file mode 100644
index 000000000..589dccdef
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_hash_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_hash_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_hash_msvc.png
new file mode 100644
index 000000000..1828896ee
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_hash_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_tree_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_tree_gcc.png
new file mode 100644
index 000000000..9334bc35b
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_tree_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_tree_local.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_tree_local.png
new file mode 100644
index 000000000..d7322f287
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_tree_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_tree_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_tree_msvc.png
new file mode 100644
index 000000000..2f20e57e5
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_tree_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large.html b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large.html
new file mode 100644
index 000000000..b9a2d9952
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large.html
@@ -0,0 +1,212 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+<title>"Multimap" Text Insert Timing Test with Large Average
+ Secondary-Key to Primary-Key Ratio</title>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+</head>
+<body>
+<div id="page">
+<h1>"Multimap" Text Insert Timing Test with Large Average
+ Secondary-Key to Primary-Key Ratio</h1>
+<h2><a name="description" id="description">Description</a></h2>
+<p>This test inserts a number of pairs into a container. The
+ first item of each pair is a string from an arbitrary text
+ [<a href="references.html#wickland96thirty">wickland96thirty</a>], and
+ the second is a uniform i.i.d.integer. The container is a
+ "multimap" - it considers the first member of each pair as a
+ primary key, and the second member of each pair as a secondary
+ key (see <a href="motivation.html#assoc_mapping_semantics">Motivation::Associative
+ Containers::Alternative to Multiple Equivalent Keys</a>). There
+ are 100 distinct primary keys, and the ratio of secondary keys
+ to primary keys ranges to about 20.</p>
+<p>The test measures the memory use as a function of the number
+ of values inserted.</p>
+<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem_usage_large.cc"><tt>multimap_text_insert_mem_usage_test</tt></a>
+ thirty_years_among_the_dead_preproc.txt 400 1 6 6)</p>
+<h2><a name="purpose" id="purpose">Purpose</a></h2>
+<p>The test checks the insert-time scalability of different
+ "multimap" designs (see <a href="motivation.html#assoc_mapping_semantics">Motivation::Associative
+ Containers::Mapping Semantics</a>).</p>
+<h2><a name="results" id="results">Results</a></h2>
+<p>Figures <a href="#NTG">NTG</a>, <a href="#NTM">NTM</a>, and
+ <a href="#NTL">NTL</a> show the results for "multimaps" which
+ use a tree-based container for primary keys, in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>, and
+ <a href="assoc_performance_tests.html#local"><u>local</u></a>,
+ respectively; Figures <a href="#NHG"></a>NHG, <a href="#NHM">NHM</a>, and <a href="#NHL">NHL</a> show the results for
+ "multimaps" which use a hash-based container for primary keys,
+ in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>,
+ <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>,
+ and <a href="assoc_performance_tests.html#local"><u>local</u></a>,
+ respectively.</p>
+<div id="NTG_res_div">
+<div id="NTG_gcc">
+<div id="NTG_multimap_text_insert_timing_test_large_s2p_tree">
+<div id="NTG_assoc">
+<div id="NTG_Native_and_primary_tree-based_multimap_types_insert_timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTG" id="NTG"><img src="multimap_text_insert_timing_test_large_s2p_tree_gcc.png" alt="no image" /></a></h6>NTG: Native and primary tree-based multimap types insert timing test - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_mmap-
+<tt>std::multimap</tt></li>
+<li>
+rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+<li>
+rb_tree_mmap_lu_mtf_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+, mapping each key to <a href="list_update.html"><tt>list_update</tt></a>
+ with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NTM_res_div">
+<div id="NTM_msvc">
+<div id="NTM_multimap_text_insert_timing_test_large_s2p_tree">
+<div id="NTM_assoc">
+<div id="NHM_Native_and_primary_tree-based_multimap_types_insert_timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTM" id="NTM"><img src="multimap_text_insert_timing_test_large_s2p_tree_msvc.png" alt="no image" /></a></h6>NTM: NHM Native and primary tree-based multimap types insert timing test - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+<li>
+n_mmap-
+<tt>std::multimap</tt></li>
+<li>
+rb_tree_mmap_lu_mtf_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+, mapping each key to <a href="list_update.html"><tt>list_update</tt></a>
+ with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NTL_res_div">
+<div id="NTL_local">
+<div id="NTL_multimap_text_insert_timing_test_large_s2p_tree">
+<div id="NTL_assoc">
+<div id="NTL_Native_and_primary_tree-based_multimap_types_insert_timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTL" id= "NTL"><img src="multimap_text_insert_timing_test_large_s2p_tree_local.png" alt="no image" /></a></h6>NTL: Native and primary tree-based multimap types insert timing test - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NHG_res_div">
+<div id="NHG_gcc">
+<div id="NHG_multimap_text_insert_timing_test_large_s2p_hash">
+<div id="NHG_assoc">
+<div id="NHG_Native_and_primary_hash-based_multimap_types_insert_timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHG" id="NHG"><img src="multimap_text_insert_timing_test_large_s2p_hash_gcc.png" alt="no image" /></a></h6>NHG: Native and primary hash-based multimap types insert timing test - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_hash_mmap-
+<tt>__gnucxx::hash_multimap</tt></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_lu_mtf_set-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="list_update.html"><tt>list_update</tt></a>
+ with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NHM_res_div">
+<div id="NHM_msvc">
+<div id="NHM_multimap_text_insert_timing_test_large_s2p_hash">
+<div id="NHM_assoc">
+<div id="NHM_Native_and_primary_hash-based_multimap_types_insert_timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHM" id="NHM"><img src="multimap_text_insert_timing_test_large_s2p_hash_msvc.png" alt="no image" /></a></h6>NHM: Native and primary hash-based multimap types insert timing test - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_hash_mmap-
+<tt>stdext::hash_multimap</tt></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_lu_mtf_set-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="list_update.html"><tt>list_update</tt></a>
+ with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NHL_res_div">
+<div id="NHL_local">
+<div id="NHL_multimap_text_insert_timing_test_large_s2p_hash">
+<div id="NHL_assoc">
+<div id="NHL__Native_and_primary_hash-based_multimap_types_insert_timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHL" id= "NHL"><img src="multimap_text_insert_timing_test_large_s2p_hash_local.png" alt="no image" /></a></h6>NHL: Native and primary hash-based multimap types insert timing test - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<h2><a name="observations" id="observations">Observations</a></h2>
+<p>See <a href="assoc_performance_tests.html#msc">Observations::Mapping-Semantics
+ Considerations</a>.</p>
+</div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_hash_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_hash_gcc.png
new file mode 100644
index 000000000..55b0bf467
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_hash_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_hash_local.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_hash_local.png
new file mode 100644
index 000000000..5f8946008
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_hash_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_hash_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_hash_msvc.png
new file mode 100644
index 000000000..02f5d0b20
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_hash_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_tree_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_tree_gcc.png
new file mode 100644
index 000000000..83366eb37
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_tree_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_tree_local.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_tree_local.png
new file mode 100644
index 000000000..2b496b48d
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_tree_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_tree_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_tree_msvc.png
new file mode 100644
index 000000000..47196bff7
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_tree_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small.html b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small.html
new file mode 100644
index 000000000..cda3629b7
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small.html
@@ -0,0 +1,217 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+<title>"Multimap" Text Insert Timing Test with Small Average
+ Secondary-Key to Primary-Key Ratio</title>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+</head>
+<body>
+<div id="page">
+<h1>"Multimap" Text Insert Timing Test with Small Average
+ Secondary-Key to Primary-Key Ratio</h1>
+<h2><a name="description" id="description">Description</a></h2>
+<p>This test inserts a number of pairs into a container. The
+ first item of each pair is a string from an arbitrary text
+ [<a href="references.html#wickland96thirty">wickland96thirty</a>], and
+ the second is a uniform i.i.d.integer. The container is a
+ "multimap" - it considers the first member of each pair as a
+ primary key, and the second member of each pair as a secondary
+ key (see <a href="motivation.html#assoc_mapping_semantics">Motivation::Associative
+ Containers::Alternative to Multiple Equivalent Keys</a>). There
+ are 400 distinct primary keys, and the ratio of secondary keys
+ to primary keys ranges from 1 to 5.</p>
+<p>The test measures the average insert-time as a function of
+ the number of values inserted. For <tt>pb_ds</tt>'s containers,
+ it inserts a primary key into the primary associative
+ container, then a secondary key into the secondary associative
+ container. For the native multimaps, it obtains a range using
+ <tt>std::equal_range</tt>, and inserts a value only if it was
+ not contained already.</p>
+<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_timing_small.cc"><tt>multimap_text_insert_timing_test</tt></a>
+ thirty_years_among_the_dead_preproc.txt 400 1 1 6)</p>
+<h2><a name="purpose" id="purpose">Purpose</a></h2>
+<p>The test checks the insert-time scalability of different
+ "multimap" designs (see <a href="motivation.html#assoc_mapping_semantics">Motivation::Associative
+ Containers::Alternative to Multiple Equivalent Keys</a>).</p>
+<h2><a name="results" id="results">Results</a></h2>
+<p>Figures <a href="#NTG">NTG</a>, <a href="#NTM">NTM</a>, and
+ <a href="#NTL">NTL</a> show the results for "multimaps" which
+ use a tree-based container for primary keys, in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>, and
+ <a href="assoc_performance_tests.html#local"><u>local</u></a>,
+ respectively; Figures <a href="#NHG"></a>NHG, <a href="#NHM">NHM</a>, and <a href="#NHL">NHL</a> show the results for
+ "multimaps" which use a hash-based container for primary keys,
+ in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>,
+ <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>,
+ and <a href="assoc_performance_tests.html#local"><u>local</u></a>,
+ respectively.</p>
+<div id="NTG_res_div">
+<div id="NTG_gcc">
+<div id="NTG_multimap_text_insert_timing_test_small_s2p_tree">
+<div id="NTG_assoc">
+<div id="NTG_Native_and_primary_tree-based_multimap_types_insert_timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTG" id="NTG"><img src="multimap_text_insert_timing_test_small_s2p_tree_gcc.png" alt="no image" /></a></h6>NTG: Native and primary tree-based multimap types insert timing test - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_mmap-
+<tt>std::multimap</tt></li>
+<li>
+rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+<li>
+rb_tree_mmap_lu_mtf_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+, mapping each key to <a href="list_update.html"><tt>list_update</tt></a>
+ with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NTM_res_div">
+<div id="NTM_msvc">
+<div id="NTM_multimap_text_insert_timing_test_small_s2p_tree">
+<div id="NTM_assoc">
+<div id="NHM_Native_and_primary_tree-based_multimap_types_insert_timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTM" id="NTM"><img src="multimap_text_insert_timing_test_small_s2p_tree_msvc.png" alt="no image" /></a></h6>NTM: NHM Native and primary tree-based multimap types insert timing test - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+<li>
+n_mmap-
+<tt>std::multimap</tt></li>
+<li>
+rb_tree_mmap_lu_mtf_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+, mapping each key to <a href="list_update.html"><tt>list_update</tt></a>
+ with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NTL_res_div">
+<div id="NTL_local">
+<div id="NTL_multimap_text_insert_timing_test_small_s2p_tree">
+<div id="NTL_assoc">
+<div id="NTL_Native_and_primary_tree-based_multimap_types_insert_timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTL" id= "NTL"><img src="multimap_text_insert_timing_test_small_s2p_tree_local.png" alt="no image" /></a></h6>NTL: Native and primary tree-based multimap types insert timing test - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NHG_res_div">
+<div id="NHG_gcc">
+<div id="NHG_multimap_text_insert_timing_test_small_s2p_hash">
+<div id="NHG_assoc">
+<div id="NHG_Native_and_primary_hash-based_multimap_types_insert_timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHG" id="NHG"><img src="multimap_text_insert_timing_test_small_s2p_hash_gcc.png" alt="no image" /></a></h6>NHG: Native and primary hash-based multimap types insert timing test - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_hash_mmap-
+<tt>__gnucxx::hash_multimap</tt></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_lu_mtf_set-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="list_update.html"><tt>list_update</tt></a>
+ with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NHM_res_div">
+<div id="NHM_msvc">
+<div id="NHM_multimap_text_insert_timing_test_small_s2p_hash">
+<div id="NHM_assoc">
+<div id="NHM_Native_and_primary_hash-based_multimap_types_insert_timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHM" id="NHM"><img src="multimap_text_insert_timing_test_small_s2p_hash_msvc.png" alt="no image" /></a></h6>NHM: Native and primary hash-based multimap types insert timing test - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i></li>
+<li>
+n_hash_mmap-
+<tt>stdext::hash_multimap</tt></li>
+<li>
+cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_lu_mtf_set-
+<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a>
+with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a>
+, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>
+ with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>
+, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>
+ with <i>&alpha;<sub>min</sub></i> = <i>1/8</i> and <i>&alpha;<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="list_update.html"><tt>list_update</tt></a>
+ with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NHL_res_div">
+<div id="NHL_local">
+<div id="NHL_multimap_text_insert_timing_test_small_s2p_hash">
+<div id="NHL_assoc">
+<div id="NHL_Native_and_primary_hash-based_multimap_types_insert_timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHL" id= "NHL"><img src="multimap_text_insert_timing_test_small_s2p_hash_local.png" alt="no image" /></a></h6>NHL: Native and primary hash-based multimap types insert timing test - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<h2><a name="observations" id="observations">Observations</a></h2>
+<p>See <a href="assoc_performance_tests.html#msc">Observations::Mapping-Semantics
+ Considerations</a>.</p>
+</div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_hash_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_hash_gcc.png
new file mode 100644
index 000000000..3c2d87ecf
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_hash_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_hash_local.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_hash_local.png
new file mode 100644
index 000000000..4af78faa5
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_hash_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_hash_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_hash_msvc.png
new file mode 100644
index 000000000..81d583904
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_hash_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_tree_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_tree_gcc.png
new file mode 100644
index 000000000..368f07350
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_tree_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_tree_local.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_tree_local.png
new file mode 100644
index 000000000..40b5b2c43
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_tree_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_tree_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_tree_msvc.png
new file mode 100644
index 000000000..99f2d690f
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_tree_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/node_invariant_invalidations.png b/libstdc++-v3/doc/html/ext/pb_ds/node_invariant_invalidations.png
new file mode 100644
index 000000000..bbd91842b
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/node_invariant_invalidations.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/node_invariants.png b/libstdc++-v3/doc/html/ext/pb_ds/node_invariants.png
new file mode 100644
index 000000000..b375f5168
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/node_invariants.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/null_hash_fn.html b/libstdc++-v3/doc/html/ext/pb_ds/null_hash_fn.html
new file mode 100644
index 000000000..34f1ee06a
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/null_hash_fn.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>null_hash_fn Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>null_hash_fn</tt> Interface</h1>
+
+ <p>A "null" hash function, indicating that the combining hash
+ function is actually a ranged hash function.</p>
+
+ <p><a href=
+ "concepts.html#concepts_null_policies">Interface::Concepts::Null
+ Policy Classes</a> explains the concept of a null policy. See
+ also <a href=
+ "hash_based_containers.html#hash_policies">Design::Hash-Based
+ Containers::Hash Policies</a>.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/hash_policy.hpp"><tt>hash_policy.hpp</tt></a></p>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/null_lu_metadata.html b/libstdc++-v3/doc/html/ext/pb_ds/null_lu_metadata.html
new file mode 100644
index 000000000..e8fb6a3c8
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/null_lu_metadata.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>null_lu_metadata Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>null_lu_metadata</tt> Interface</h1>
+
+ <p>A null type that means that each link in a list-based
+ container does not actually need metadata.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/list_update_policy.hpp"><tt>list_update_policy.hpp</tt></a></p>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/null_mapped_type.html b/libstdc++-v3/doc/html/ext/pb_ds/null_mapped_type.html
new file mode 100644
index 000000000..d62fac5c9
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/null_mapped_type.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>null_mapped_type Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>null_mapped_type</tt> Interface</h1>
+
+ <p>A mapped-policy indicating that an associative container is
+ a "set"</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/null_probe_fn.html b/libstdc++-v3/doc/html/ext/pb_ds/null_probe_fn.html
new file mode 100644
index 000000000..1c8811e96
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/null_probe_fn.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>null_probe_fn Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>null_probe_fn</tt> Interface</h1>
+
+ <p>A "null" probe function, indicating that the combining probe
+ function is actually a ranged probe function.</p>
+
+ <p><a href=
+ "concepts.html#concepts_null_policies">Interface::Concepts::Null
+ Policy Classes</a> explains the concept of a null policy.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/hash_policy.hpp"><tt>hash_policy.hpp</tt></a></p>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/null_tree_node_update.html b/libstdc++-v3/doc/html/ext/pb_ds/null_tree_node_update.html
new file mode 100644
index 000000000..cc1c90054
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/null_tree_node_update.html
@@ -0,0 +1,101 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>null_tree_node_update Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>null_tree_node_update</tt> Interface</h1>
+
+ <p>A "null" node updater, indicating that no node updates are
+ required.</p>
+
+ <p><a href=
+ "concepts.html#concepts_null_policies">Interface::Concepts::Null
+ Policy Classes</a> explains the concept of a null policy.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tree_policy.hpp"><tt>tree_policy.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Template Parameters</a></h2>
+
+ <table class="c1" width="100%" border="1" summary=
+ "Template Parameters">
+ <tr>
+ <td width="20%" align="left"><b>Parameter</b></td>
+
+ <td width="50%" align="left"><b>Description</b></td>
+
+ <td width="30%" align="left"><b>Default Value</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Const_Node_Iterator1933878761" id=
+"Const_Node_Iterator1933878761"><b>class</b> Const_Node_Iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Const node iterator type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Node_Iterator4206909839" id=
+"Node_Iterator4206909839"><b>class</b> Node_Iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Node iterator type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Cmp_Fn294335" id="Cmp_Fn294335"><b>class</b> Cmp_Fn</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Comparison functor.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Allocator35940069" id=
+"Allocator35940069"><b>class</b> Allocator</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Allocator type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/null_trie_node_update.html b/libstdc++-v3/doc/html/ext/pb_ds/null_trie_node_update.html
new file mode 100644
index 000000000..18ea00739
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/null_trie_node_update.html
@@ -0,0 +1,102 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>null_trie_node_update Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>null_trie_node_update</tt> Interface</h1>
+
+ <p>A "null" node updater, indicating that no node updates are
+ required.</p>
+
+ <p><a href=
+ "concepts.html#concepts_null_policies">Interface::Concepts::Null
+ Policy Classes</a> explains the concept of a null policy.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/trie_policy.hpp"><tt>trie_policy.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Template Parameters</a></h2>
+
+ <table class="c1" width="100%" border="1" summary=
+ "Template Parameters">
+ <tr>
+ <td width="20%" align="left"><b>Parameter</b></td>
+
+ <td width="50%" align="left"><b>Description</b></td>
+
+ <td width="30%" align="left"><b>Default Value</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Const_Node_Iterator1933878761" id=
+"Const_Node_Iterator1933878761"><b>class</b> Const_Node_Iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Const node iterator type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Node_Iterator4206909839" id=
+"Node_Iterator4206909839"><b>class</b> Node_Iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Node iterator type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="E_Access_Traits686553840" id=
+"E_Access_Traits686553840"><b>class</b> E_Access_Traits</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Comparison functor.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Allocator35940069" id=
+"Allocator35940069"><b>class</b> Allocator</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Allocator type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/ov_tree_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/ov_tree_tag.html
new file mode 100644
index 000000000..01d7f9082
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/ov_tree_tag.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>ov_tree_tag Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>ov_tree_tag</tt> Interface</h1>
+
+ <p>Ordered-vector tree data structure tag.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Base Classes</a></h2>
+
+ <table class="c1" width="100%" border="1" summary="Bases">
+ <tr>
+ <td width="80%" align="left"><b>Class</b></td>
+
+ <td width="20%" align="left"><b>Derivation Type</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="tree_tag.html"><span class=
+"c2"><tt>tree_tag</tt></span></a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/pairing_heap_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/pairing_heap_tag.html
new file mode 100644
index 000000000..5901d1a88
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/pairing_heap_tag.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>pairing_heap_tag Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>pairing_heap_tag</tt> Interface</h1>
+
+ <p>Pairing-heap data structure tag.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Base Classes</a></h2>
+
+ <table class="c1" width="100%" border="1" summary="Bases">
+ <tr>
+ <td width="80%" align="left"><b>Class</b></td>
+
+ <td width="20%" align="left"><b>Derivation Type</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="priority_queue_tag.html"><span class=
+"c2"><tt>priority_queue_tag</tt></span></a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_pop_timing_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_pop_timing_test_gcc.png
new file mode 100644
index 000000000..4168787ec
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_pop_timing_test_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_pop_timing_test_local.png b/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_pop_timing_test_local.png
new file mode 100644
index 000000000..97ca4e9da
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_pop_timing_test_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_pop_timing_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_pop_timing_test_msvc.png
new file mode 100644
index 000000000..42b707965
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_pop_timing_test_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_timing_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_timing_test_gcc.png
new file mode 100644
index 000000000..9a7ce6c36
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_timing_test_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_timing_test_local.png b/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_timing_test_local.png
new file mode 100644
index 000000000..cedcb4cf4
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_timing_test_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_timing_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_timing_test_msvc.png
new file mode 100644
index 000000000..d5488efcf
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_timing_test_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/pat_trie.png b/libstdc++-v3/doc/html/ext/pb_ds/pat_trie.png
new file mode 100644
index 000000000..e7129a1a6
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/pat_trie.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/pat_trie_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/pat_trie_tag.html
new file mode 100644
index 000000000..2e9a32c91
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/pat_trie_tag.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>pat_trie_tag Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>pat_trie_tag</tt> Interface</h1>
+
+ <p>PATRICIA trie data structure tag.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Base Classes</a></h2>
+
+ <table class="c1" width="100%" border="1" summary="Bases">
+ <tr>
+ <td width="80%" align="left"><b>Class</b></td>
+
+ <td width="20%" align="left"><b>Derivation Type</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="tree_tag.html"><span class=
+"c2"><tt>tree_tag</tt></span></a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/point_invalidation_guarantee.html b/libstdc++-v3/doc/html/ext/pb_ds/point_invalidation_guarantee.html
new file mode 100644
index 000000000..f67722169
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/point_invalidation_guarantee.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>point_invalidation_guarantee Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>point_invalidation_guarantee</tt> Interface</h1>
+
+ <p>Signifies an invalidation guarantee that includes all those
+ of its base, and additionally, that any point-type iterator,
+ pointer, or reference to a container object's mapped value type
+ is valid as long as its corresponding entry has not be erased,
+ regardless of modifications to the container object.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Base Classes</a></h2>
+
+ <table class="c1" width="100%" border="1" summary="Bases">
+ <tr>
+ <td width="80%" align="left"><b>Class</b></td>
+
+ <td width="20%" align="left"><b>Derivation Type</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="basic_invalidation_guarantee.html"><span class=
+"c2"><tt>basic_invalidation_guarantee</tt></span></a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/point_iterators_cd.png b/libstdc++-v3/doc/html/ext/pb_ds/point_iterators_cd.png
new file mode 100644
index 000000000..25a69fc6e
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/point_iterators_cd.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/point_iterators_range_ops_1.png b/libstdc++-v3/doc/html/ext/pb_ds/point_iterators_range_ops_1.png
new file mode 100644
index 000000000..c5bc8e5d6
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/point_iterators_range_ops_1.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/point_iterators_range_ops_2.png b/libstdc++-v3/doc/html/ext/pb_ds/point_iterators_range_ops_2.png
new file mode 100644
index 000000000..c3f94ee93
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/point_iterators_range_ops_2.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/pq_container_traits.html b/libstdc++-v3/doc/html/ext/pb_ds/pq_container_traits.html
new file mode 100644
index 000000000..dcd995f5f
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/pq_container_traits.html
@@ -0,0 +1,132 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>container_traits Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>container_traits</tt> Interface</h1>
+
+ <p>Traits of a priority-queue container based on its underlying
+ data structure.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Template Parameters</a></h2>
+
+ <table class="c1" width="100%" border="1" summary=
+ "Template Parameters">
+ <tr>
+ <td width="20%" align="left"><b>Parameter</b></td>
+
+ <td width="50%" align="left"><b>Description</b></td>
+
+ <td width="30%" align="left"><b>Default Value</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Cntnr59189" id="Cntnr59189"><b>class</b> Cntnr</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Container type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+ </table>
+
+ <h2><a name="link2" id="link2">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link3" id="link3">Container Attributes</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="container_category1247973216" id=
+"container_category1247973216">container_category</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+Underlying data structure.
+</pre>
+ </td>
+
+ <td>
+ <p>Data structure category.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="invalidation_guarantee3793555937" id=
+"invalidation_guarantee3793555937">invalidation_guarantee</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+Invalidation guarantee.
+</pre>
+ </td>
+
+ <td>
+ <p>Invalidation-guarantee type.</p>
+
+ <p>This is either <a href=
+ "basic_invalidation_guarantee.html"><span class=
+ "c2"><tt>basic_invalidation_guarantee</tt></span></a>,
+ <a href="point_invalidation_guarantee.html"><span class=
+ "c2"><tt>point_invalidation_guarantee</tt></span></a>, or
+ <a href="range_invalidation_guarantee.html"><span class=
+ "c2"><tt>range_invalidation_guarantee</tt></span></a></p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="split_join_can_throw3200477759" id=
+"split_join_can_throw3200477759">split_join_can_throw</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+True only if split or join operations can throw.
+</pre>
+ </td>
+
+ <td>
+ <p>Split-join throw indicator.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/pq_design.html b/libstdc++-v3/doc/html/ext/pb_ds/pq_design.html
new file mode 100644
index 000000000..959560045
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/pq_design.html
@@ -0,0 +1,381 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>Priority-Queues</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1>Priority-Queue Design</h1>
+
+ <h2><a name="overview" id="overview">Overview</a></h2>
+
+ <p>The priority-queue container has the following
+ declaration:</p>
+ <pre>
+<b>template</b>&lt;
+ <b>typename</b> Value_Type,
+ <b>typename</b> Cmp_Fn = std::less&lt;Value_Type&gt;,
+ <b>typename</b> Tag = <a href="pairing_heap_tag.html">pairing_heap_tag</a>,
+ <b>typename</b> Allocator = std::allocator&lt;<b>char</b>&gt; &gt;
+<b>class</b> <a href="priority_queue.html">priority_queue</a>;
+</pre>
+
+ <p>The parameters have the following meaning:</p>
+
+ <ol>
+ <li><tt>Value_Type</tt> is the value type.</li>
+
+ <li><tt>Cmp_Fn</tt> is a value comparison functor</li>
+
+ <li><tt>Tag</tt> specifies which underlying data structure
+ to use.</li>
+
+ <li><tt>Allocator</tt> is an allocator
+ type.</li>
+ </ol>
+
+ <p>The <tt>Tag</tt> parameter specifies which underlying
+ data structure to use. Instantiating it by <a href=
+ "pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>,
+ <a href=
+ "binary_heap_tag.html"><tt>binary_heap_tag</tt></a>,
+ <a href=
+ "binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a>,
+ <a href=
+ "rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a>,
+ or <a href=
+ "thin_heap_tag.html"><tt>thin_heap_tag</tt></a>,
+ specifies, respectively, an underlying pairing heap [<a href=
+ "references.html#fredman86pairing">fredman86pairing</a>],
+ binary heap [<a href="references.html#clrs2001">clrs2001</a>],
+ binomial heap [<a href=
+ "references.html#clrs2001">clrs2001</a>], a binomial heap with
+ a redundant binary counter [<a href=
+ "references.html#maverik_lowerbounds">maverik_lowerbounds</a>],
+ or a thin heap [<a href=
+ "references.html#kt99fat_heaps">kt99fat_heas</a>]. These are
+ explained further in <a href="#pq_imp">Implementations</a>.</p>
+
+ <p>As mentioned in <a href=
+ "tutorial.html#pq">Tutorial::Priority Queues</a>,
+ <a href=
+ "priority_queue.html"><tt>__gnu_pbds::priority_queue</tt></a>
+ shares most of the same interface with <tt>std::priority_queue</tt>.
+ <i>E.g.</i> if <tt>q</tt> is a priority queue of type
+ <tt>Q</tt>, then <tt>q.top()</tt> will return the "largest"
+ value in the container (according to <tt><b>typename</b>
+ Q::cmp_fn</tt>). <a href=
+ "priority_queue.html"><tt>__gnu_pbds::priority_queue</tt></a>
+ has a larger (and very slightly different) interface than
+ <tt>std::priority_queue</tt>, however, since typically
+ <tt>push</tt> and <tt>pop</tt> are deemed insufficient for
+ manipulating priority-queues. </p>
+
+ <p>Different settings require different priority-queue
+ implementations which are described in <a href=
+ "#pq_imp">Implementations</a>; <a href="#pq_traits">Traits</a>
+ discusses ways to differentiate between the different traits of
+ different implementations.</p>
+
+ <h2><a name="pq_it" id="pq_it">Iterators</a></h2>
+
+ <p>There are many different underlying-data structures for
+ implementing priority queues. Unfortunately, most such
+ structures are oriented towards making <tt>push</tt> and
+ <tt>top</tt> efficient, and consequently don't allow efficient
+ access of other elements: for instance, they cannot support an efficient
+ <tt>find</tt> method. In the use case where it
+ is important to both access and "do something with" an
+ arbitrary value, one would be out of luck. For example, many graph algorithms require
+ modifying a value (typically increasing it in the sense of the
+ priority queue's comparison functor).</p>
+
+ <p>In order to access and manipulate an arbitrary value in a
+ priority queue, one needs to reference the internals of the
+ priority queue from some form of an associative container -
+ this is unavoidable. Of course, in order to maintain the
+ encapsulation of the priority queue, this needs to be done in a
+ way that minimizes exposure to implementation internals.</p>
+
+ <p>In <tt>pb_ds</tt> the priority queue's <tt>insert</tt>
+ method returns an iterator, which if valid can be used for subsequent <tt>modify</tt> and
+ <tt>erase</tt> operations. This both preserves the priority
+ queue's encapsulation, and allows accessing arbitrary values (since the
+ returned iterators from the <tt>push</tt> operation can be
+ stored in some form of associative container).</p>
+
+ <p>Priority queues' iterators present a problem regarding their
+ invalidation guarantees. One assumes that calling
+ <tt><b>operator</b>++</tt> on an iterator will associate it
+ with the "next" value. Priority-queues are
+ self-organizing: each operation changes what the "next" value
+ means. Consequently, it does not make sense that <tt>push</tt>
+ will return an iterator that can be incremented - this can have
+ no possible use. Also, as in the case of hash-based containers,
+ it is awkward to define if a subsequent <tt>push</tt> operation
+ invalidates a prior returned iterator: it invalidates it in the
+ sense that its "next" value is not related to what it
+ previously considered to be its "next" value. However, it might not
+ invalidate it, in the sense that it can be
+ de-referenced and used for <tt>modify</tt> and <tt>erase</tt>
+ operations.</p>
+
+ <p>Similarly to the case of the other unordered associative
+ containers, <tt>pb_ds</tt> uses a distinction between
+ point-type and range type iterators. A priority queue's <tt>iterator</tt> can always be
+ converted to a <tt>point_iterator</tt>, and a
+ <tt>const_iterator</tt> can always be converted to a
+ <tt>const_point_iterator</tt>.</p>
+
+ <p>The following snippet demonstrates manipulating an arbitrary
+ value:</p>
+ <pre>
+<i>// A priority queue of integers.</i>
+<a href=
+"priority_queue.html">priority_queue</a>&lt;<b>int</b>&gt; p;
+
+<i>// Insert some values into the priority queue.</i>
+<a href=
+"priority_queue.html">priority_queue</a>&lt;<b>int</b>&gt;::point_iterator it = p.push(0);
+
+p.push(1);
+p.push(2);
+
+<i>// Now modify a value.</i>
+p.modify(it, 3);
+
+assert(p.top() == 3);
+</pre>
+
+ <p>(<a href="pq_examples.html#xref">Priority Queue
+ Examples::Cross-Referencing</a> shows a more detailed
+ example.)</p>
+
+ <p>It should be noted that an alternative design could embed an
+ associative container in a priority queue. Could, but most probably should not. To begin with, it should be noted that one
+ could always encapsulate a priority queue and an associative
+ container mapping values to priority queue iterators with no
+ performance loss. One cannot, however, "un-encapsulate" a
+ priority queue embedding an associative container, which might
+ lead to performance loss. Assume, that one needs to
+ associate each value with some data unrelated to priority
+ queues. Then using <tt>pb_ds</tt>'s design, one could use an
+ associative container mapping each value to a pair consisting
+ of this data and a priority queue's iterator. Using the
+ embedded method would need to use two associative
+ containers. Similar problems might arise in cases where a value
+ can reside simultaneously in many priority queues.</p>
+
+ <h2><a name="pq_imp" id="pq_imp">Implementations</a></h2>
+
+ <p>There are three main implementations of priority queues: the
+ first employs a binary heap, typically one which uses a
+ sequence; the second uses a tree (or forest of trees), which is
+ typically less structured than an associative container's tree;
+ the third simply uses an associative container. These are
+ shown, respectively, in Figures <a href=
+ "#pq_different_underlying_dss">Underlying Priority-Queue
+ Data-Structures</a> A1 and A2, Figure <a href=
+ "#pq_different_underlying_dss">Underlying Priority-Queue
+ Data-Structures</a> B, and Figures <a href=
+ "#pq_different_underlying_dss">Underlying Priority-Queue
+ Data-Structures</a> C.</p>
+
+ <h6 class="c1"><a name="pq_different_underlying_dss" id=
+ "pq_different_underlying_dss"><img src=
+ "pq_different_underlying_dss.png" alt="no image" /></a></h6>
+
+ <h6 class="c1">Underlying Priority-Queue Data-Structures.</h6>
+
+ <p>Roughly speaking, any value that is both pushed and popped
+ from a priority queue must incur a logarithmic expense (in the
+ amortized sense). Any priority queue implementation that would
+ avoid this, would violate known bounds on comparison-based
+ sorting (see, <i>e.g.</i>, [<a href=
+ "references.html#clrs2001">clrs2001</a>] and <a href=
+ "references.html#brodal96priority">brodal96priority</a>]).</p>
+
+ <p>Most implementations do
+ not differ in the asymptotic amortized complexity of
+ <tt>push</tt> and <tt>pop</tt> operations, but they differ in
+ the constants involved, in the complexity of other operations
+ (<i>e.g.</i>, <tt>modify</tt>), and in the worst-case
+ complexity of single operations. In general, the more
+ "structured" an implementation (<i>i.e.</i>, the more internal
+ invariants it possesses) - the higher its amortized complexity
+ of <tt>push</tt> and <tt>pop</tt> operations.</p>
+
+ <p><tt>pb_ds</tt> implements different algorithms using a
+ single class: <a href="priority_queue.html">priority_queue</a>.
+ Instantiating the <tt>Tag</tt> template parameter, "selects"
+ the implementation:</p>
+
+ <ol>
+ <li>Instantiating <tt>Tag = <a href=
+ "binary_heap_tag.html">binary_heap_tag</a></tt> creates
+ a binary heap of the form in Figures <a href=
+ "#pq_different_underlying_dss">Underlying Priority-Queue
+ Data-Structures</a> A1 or A2. The former is internally
+ selected by <a href="priority_queue.html">priority_queue</a>
+ if <tt>Value_Type</tt> is instantiated by a primitive type
+ (<i>e.g.</i>, an <tt><b>int</b></tt>); the latter is
+ internally selected for all other types (<i>e.g.</i>,
+ <tt>std::string</tt>). This implementations is relatively
+ unstructured, and so has good <tt>push</tt> and <tt>pop</tt>
+ performance; it is the "best-in-kind" for primitive
+ types, <i>e.g.</i>, <tt><b>int</b></tt>s. Conversely, it has
+ high worst-case performance, and can support only linear-time
+ <tt>modify</tt> and <tt>erase</tt> operations; this is
+ explained further in <a href="#pq_traits">Traits</a>.</li>
+
+ <li>Instantiating <tt>Tag = <a href=
+ "pairing_heap_tag.html">pairing_heap_tag</a></tt>
+ creates a pairing heap of the form in Figure <a href=
+ "#pq_different_underlying_dss">Underlying Priority-Queue
+ Data-Structures</a> B. This implementations too is relatively
+ unstructured, and so has good <tt>push</tt> and <tt>pop</tt>
+ performance; it is the "best-in-kind" for non-primitive
+ types, <i>e.g.</i>, <tt>std:string</tt>s. It also has very
+ good worst-case <tt>push</tt> and <tt>join</tt> performance
+ (<i>O(1)</i>), but has high worst-case <tt>pop</tt>
+ complexity.</li>
+
+ <li>Instantiating <tt>Tag = <a href=
+ "binomial_heap_tag.html">binomial_heap_tag</a></tt>
+ creates a binomial heap of the form in Figure <a href=
+ "#pq_different_underlying_dss">Underlying Priority-Queue
+ Data-Structures</a> B. This implementations is more
+ structured than a pairing heap, and so has worse
+ <tt>push</tt> and <tt>pop</tt> performance. Conversely, it
+ has sub-linear worst-case bounds for <tt>pop</tt>,
+ <i>e.g.</i>, and so it might be preferred in cases where
+ responsiveness is important.</li>
+
+ <li>Instantiating <tt>Tag = <a href=
+ "rc_binomial_heap_tag.html">rc_binomial_heap_tag</a></tt>
+ creates a binomial heap of the form in Figure <a href=
+ "#pq_different_underlying_dss">Underlying Priority-Queue
+ Data-Structures</a> B, accompanied by a redundant counter
+ which governs the trees. This implementations is therefore
+ more structured than a binomial heap, and so has worse
+ <tt>push</tt> and <tt>pop</tt> performance. Conversely, it
+ guarantees <i>O(1)</i> <tt>push</tt> complexity, and so it
+ might be preferred in cases where the responsiveness of a
+ binomial heap is insufficient.</li>
+
+ <li>Instantiating <tt>Tag = <a href=
+ "thin_heap_tag.html">thin_heap_tag</a></tt> creates a
+ thin heap of the form in Figure <a href=
+ "#pq_different_underlying_dss">Underlying Priority-Queue
+ Data-Structures</a> B. This implementations too is more
+ structured than a pairing heap, and so has worse
+ <tt>push</tt> and <tt>pop</tt> performance. Conversely, it
+ has better worst-case and identical amortized complexities
+ than a Fibonacci heap, and so might be more appropriate for
+ some graph algorithms.</li>
+ </ol>
+
+ <p><a href="pq_performance_tests.html">Priority-Queue
+ Performance Tests</a> shows some results for the above, and
+ discusses these points further.</p>
+
+ <p>Of course, one can use any order-preserving associative
+ container as a priority queue, as in Figure <a href=
+ "#pq_different_underlying_dss">Underlying Priority-Queue
+ Data-Structures</a> C, possibly by creating an adapter class
+ over the associative container (much as
+ <tt>std::priority_queue</tt> can adapt <tt>std::vector</tt>).
+ This has the advantage that no cross-referencing is necessary
+ at all; the priority queue itself is an associative container.
+ Most associative containers are too structured to compete with
+ priority queues in terms of <tt>push</tt> and <tt>pop</tt>
+ performance.</p>
+
+ <h2><a name="pq_traits" id="pq_traits">Traits</a></h2>
+
+ <p>It would be nice if all priority queues could
+ share exactly the same behavior regardless of implementation. Sadly, this is not possible. Just one for instance is in join operations: joining
+ two binary heaps might throw an exception (not corrupt
+ any of the heaps on which it operates), but joining two pairing
+ heaps is exception free.</p>
+
+ <p>Tags and traits are very useful for manipulating generic
+ types. <a href=
+ "priority_queue.html"><tt>__gnu_pbds::priority_queue</tt></a>
+ publicly defines <tt>container_category</tt> as one of the tags
+ discussed in <a href="#pq_imp">Implementations</a>. Given any
+ container <tt>Cntnr</tt>, the tag of the underlying
+ data structure can be found via <tt><b>typename</b>
+ Cntnr::container_category</tt>; this is one of the types shown in
+ Figure <a href="#pq_tag_cd">Data-structure tag class
+ hierarchy</a>.</p>
+
+ <h6 class="c1"><a name="pq_tag_cd" id=
+ "pq_tag_cd"><img src="priority_queue_tag_cd.png" alt=
+ "no image" /></a></h6>
+
+ <h6 class="c1">Data-structure tag class hierarchy.</h6>
+
+ <p>Additionally, a traits mechanism can be used to query a
+ container type for its attributes. Given any container
+ <tt>Cntnr</tt>, then <tt><a href=
+ "assoc_container_traits.html">__gnu_pbds::container_traits</a>&lt;Cntnr&gt;</tt>
+ is a traits class identifying the properties of the
+ container.</p>
+
+ <p>To find if a container might throw if two of its objects are
+ joined, one can use <a href=
+ "assoc_container_traits.html"><tt>container_traits</tt></a><tt>&lt;Cntnr&gt;::split_join_can_throw</tt>,
+ for example.</p>
+
+ <p>Different priority-queue implementations have different invalidation guarantees. This is
+ especially important, since as explained in <a href=
+ "#pq_it">Iterators</a>, there is no way to access an arbitrary
+ value of priority queues except for iterators. Similarly to
+ associative containers, one can use
+ <a href=
+ "assoc_container_traits.html"><tt>container_traits</tt></a><tt>&lt;Cntnr&gt;::invalidation_guarantee</tt>
+ to get the invalidation guarantee type of a priority queue.</p>
+
+ <p>It is easy to understand from Figure <a href=
+ "#pq_different_underlying_dss">Underlying Priority-Queue
+ Data-Structures</a>, what <a href=
+ "assoc_container_traits.html"><tt>container_traits</tt></a><tt>&lt;Cntnr&gt;::invalidation_guarantee</tt>
+ will be for different implementations. All implementations of
+ type <a href="#pq_different_underlying_dss">Underlying
+ Priority-Queue Data-Structures</a> B have <a href=
+ "point_invalidation_guarantee.html"><tt>point_invalidation_guarantee</tt></a>:
+ the container can freely internally reorganize the nodes -
+ range-type iterators are invalidated, but point-type iterators
+ are always valid. Implementations of type <a href=
+ "#pq_different_underlying_dss">Underlying Priority-Queue
+ Data-Structures</a> A1 and A2 have <a href=
+ "basic_invalidation_guarantee.html"><tt>basic_invalidation_guarantee</tt></a>:
+ the container can freely internally reallocate the array - both
+ point-type and range-type iterators might be invalidated.</p>
+
+ <p>This has major implications, and constitutes a good reason to avoid
+ using binary heaps. A binary heap can perform <tt>modify</tt>
+ or <tt>erase</tt> efficiently <u>given a valid point-type
+ iterator</u>. However, inn order to supply it with a valid point-type
+ iterator, one needs to iterate (linearly) over all
+ values, then supply the relevant iterator (recall that a
+ range-type iterator can always be converted to a point-type
+ iterator). This means that if the number of <tt>modify</tt> or
+ <tt>erase</tt> operations is non-negligible (say
+ super-logarithmic in the total sequence of operations) - binary
+ heaps will perform badly.</p>
+ <pre>
+
+</pre>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/pq_different_underlying_dss.png b/libstdc++-v3/doc/html/ext/pb_ds/pq_different_underlying_dss.png
new file mode 100644
index 000000000..9d84791fc
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/pq_different_underlying_dss.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/pq_examples.html b/libstdc++-v3/doc/html/ext/pb_ds/pq_examples.html
new file mode 100644
index 000000000..15311ebc3
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/pq_examples.html
@@ -0,0 +1,54 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>Examples</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1>Priority-Queue Examples</h1>
+
+ <h2><a name="basic_usage" id="basic_usage">Basic Use</a></h2>
+
+ <ol>
+ <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/basic_priority_queue.cc"><tt>basic_priority_queue.cc</tt></a>
+ Basic use of priority queues.</li>
+
+ <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/priority_queue_split_join.cc"><tt>priority_queue_split_join.cc</tt></a>
+ Splitting and joining priority queues.</li>
+
+ <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/priority_queue_erase_if.cc"><tt>priority_queue_erase_if.cc</tt></a>
+ Conditionally erasing values from a container object.</li>
+ </ol>
+
+ <h2><a name="generics" id="generics">Generics</a></h2>
+
+ <ol>
+ <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/priority_queue_container_traits.cc"><tt>priority_queue_container_traits.cc</tt></a>
+ Using <a href="assoc_container_traits.html"><tt>container_traits</tt></a>
+ to query about underlying data structure behavior.</li>
+ </ol>
+
+ <h2><a name="xref" id="xref">Cross Referencing</a></h2>
+
+
+ <ol>
+ <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/priority_queue_xref.cc"><tt>priority_queue_xref.cc</tt></a>
+ Cross referencing an associative container and a priority
+ queue.</li>
+
+ <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/priority_queue_dijkstra.cc"><tt>priority_queue_dijkstra.cc</tt></a>
+ Cross referencing a vector and a priority queue using a
+ <u>very</u> simple version of Dijkstra's shortest path
+ algorithm.</li>
+ </ol>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/pq_performance_tests.html b/libstdc++-v3/doc/html/ext/pb_ds/pq_performance_tests.html
new file mode 100644
index 000000000..3a6b26912
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/pq_performance_tests.html
@@ -0,0 +1,332 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+<title>Priority-Queue Performance Tests</title>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+</head>
+<body>
+<div id="page">
+<h1>Priority-Queue Performance Tests</h1>
+<h2><a name="settings" id="settings">Settings</a></h2>
+<p>This section describes performance tests and their results.
+ In the following, <a href="#gcc"><u>g++</u></a>, <a href="#msvc"><u>msvc++</u></a>, and <a href="#local"><u>local</u></a> (the build used for generating this
+ documentation) stand for three different builds:</p>
+<div id="gcc_settings_div">
+<div class="c1">
+<h3><a name="gcc" id="gcc"><u>g++</u></a></h3>
+<ul>
+<li>CPU speed - cpu MHz : 2660.644</li>
+<li>Memory - MemTotal: 484412 kB</li>
+<li>Platform -
+ Linux-2.6.12-9-386-i686-with-debian-testing-unstable</li>
+<li>Compiler - g++ (GCC) 4.0.2 20050808 (prerelease)
+ (Ubuntu 4.0.1-4ubuntu9) Copyright (C) 2005 Free Software
+ Foundation, Inc. This is free software; see the source
+ for copying conditions. There is NO warranty; not even
+ for MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE.</li>
+</ul>
+</div>
+<div class="c2"></div>
+</div>
+<div id="msvc_settings_div">
+<div class="c1">
+<h3><a name="msvc" id="msvc"><u>msvc++</u></a></h3>
+<ul>
+<li>CPU speed - cpu MHz : 2660.554</li>
+<li>Memory - MemTotal: 484412 kB</li>
+<li>Platform - Windows XP Pro</li>
+<li>Compiler - Microsoft (R) 32-bit C/C++ Optimizing
+ Compiler Version 13.10.3077 for 80x86 Copyright (C)
+ Microsoft Corporation 1984-2002. All rights
+ reserved.</li>
+</ul>
+</div>
+<div class="c2"></div>
+</div>
+<div id="local_settings_div"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h3><a name = "local"><u>local</u></a></h3><ul>
+<li>CPU speed - cpu MHz : 2250.000</li>
+<li>Memory - MemTotal: 2076248 kB</li>
+<li>Platform - Linux-2.6.16-1.2133_FC5-i686-with-redhat-5-Bordeaux</li>
+<li>Compiler - g++ (GCC) 4.1.1 20060525 (Red Hat 4.1.1-1)
+Copyright (C) 2006 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+</li>
+</ul>
+</div><div style = "width: 100%; height: 20px"></div></div>
+<h2><a name="pq_tests" id="pq_tests">Tests</a></h2>
+<ol>
+<li><a href="priority_queue_text_push_timing_test.html">Priority Queue
+ Text <tt>push</tt> Timing Test</a></li>
+<li><a href="priority_queue_text_push_pop_timing_test.html">Priority
+ Queue Text <tt>push</tt> and <tt>pop</tt> Timing
+ Test</a></li>
+<li><a href="priority_queue_random_int_push_timing_test.html">Priority
+ Queue Random Integer <tt>push</tt> Timing Test</a></li>
+<li><a href="priority_queue_random_int_push_pop_timing_test.html">Priority
+ Queue Random Integer <tt>push</tt> and <tt>pop</tt> Timing
+ Test</a></li>
+<li><a href="priority_queue_text_pop_mem_usage_test.html">Priority Queue
+ Text <tt>pop</tt> Memory Use Test</a></li>
+<li><a href="priority_queue_text_join_timing_test.html">Priority Queue
+ Text <tt>join</tt> Timing Test</a></li>
+<li><a href="priority_queue_text_modify_up_timing_test.html">Priority
+ Queue Text <tt>modify</tt> Timing Test - I</a></li>
+<li><a href="priority_queue_text_modify_down_timing_test.html">Priority
+ Queue Text <tt>modify</tt> Timing Test - II</a></li>
+</ol>
+<h2><a name="pq_observations" id="pq_observations">Observations</a></h2>
+<h3><a name="pq_observations_cplx" id="pq_observations_cplx">Underlying Data Structures
+ Complexity</a></h3>
+<p>The following table shows the complexities of the different
+ underlying data structures in terms of orders of growth. It is
+ interesting to note that this table implies something about the
+ constants of the operations as well (see <a href="#pq_observations_amortized_push_pop">Amortized <tt>push</tt>
+ and <tt>pop</tt> operations</a>).</p>
+<table class="c1" width="100%" border="1" summary="pq complexities">
+<tr>
+<td align="left"></td>
+<td align="left"><tt>push</tt></td>
+<td align="left"><tt>pop</tt></td>
+<td align="left"><tt>modify</tt></td>
+<td align="left"><tt>erase</tt></td>
+<td align="left"><tt>join</tt></td>
+</tr>
+<tr>
+<td align="left">
+<p><tt>std::priority_queue</tt></p>
+</td>
+<td align="left">
+<p><i>&Theta;(n)</i> worst</p>
+<p><i>&Theta;(log(n))</i> amortized</p>
+</td>
+<td align="left">
+<p class="c1">&Theta;(log(n)) Worst</p>
+</td>
+<td align="left">
+<p><i>Theta;(n log(n))</i> Worst</p>
+<p><sub><a href="#std_mod1">[std note 1]</a></sub></p>
+</td>
+<td align="left">
+<p class="c3">&Theta;(n log(n))</p>
+<p><sub><a href="#std_mod2">[std note 2]</a></sub></p>
+</td>
+<td align="left">
+<p class="c3">&Theta;(n log(n))</p>
+<p><sub><a href="#std_mod1">[std note 1]</a></sub></p>
+</td>
+</tr>
+<tr>
+<td align="left">
+<p><a href="priority_queue.html"><tt>priority_queue</tt></a></p>
+<p>with <tt>Tag</tt> =</p>
+<p><a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a></p>
+</td>
+<td align="left">
+<p class="c1">O(1)</p>
+</td>
+<td align="left">
+<p><i>&Theta;(n)</i> worst</p>
+<p><i>&Theta;(log(n))</i> amortized</p>
+</td>
+<td align="left">
+<p><i>&Theta;(n)</i> worst</p>
+<p><i>&Theta;(log(n))</i> amortized</p>
+</td>
+<td align="left">
+<p><i>&Theta;(n)</i> worst</p>
+<p><i>&Theta;(log(n))</i> amortized</p>
+</td>
+<td align="left">
+<p class="c1">O(1)</p>
+</td>
+</tr>
+<tr>
+<td align="left">
+<p><a href="priority_queue.html"><tt>priority_queue</tt></a></p>
+<p>with <tt>Tag</tt> =</p>
+<p><a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a></p>
+</td>
+<td align="left">
+<p><i>&Theta;(n)</i> worst</p>
+<p><i>&Theta;(log(n))</i> amortized</p>
+</td>
+<td align="left">
+<p><i>&Theta;(n)</i> worst</p>
+<p><i>&Theta;(log(n))</i> amortized</p>
+</td>
+<td align="left">
+<p class="c1">&Theta;(n)</p>
+</td>
+<td align="left">
+<p class="c1">&Theta;(n)</p>
+</td>
+<td align="left">
+<p class="c1">&Theta;(n)</p>
+</td>
+</tr>
+<tr>
+<td align="left">
+<p><a href="priority_queue.html"><tt>priority_queue</tt></a></p>
+<p>with <tt>Tag</tt> =</p>
+<p><a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a></p>
+</td>
+<td align="left">
+<p><i>&Theta;(log(n))</i> worst</p>
+<p><i>O(1)</i> amortized</p>
+</td>
+<td align="left">
+<p class="c1">&Theta;(log(n))</p>
+</td>
+<td align="left">
+<p class="c1">&Theta;(log(n))</p>
+</td>
+<td align="left">
+<p class="c1">&Theta;(log(n))</p>
+</td>
+<td align="left">
+<p class="c1">&Theta;(log(n))</p>
+</td>
+</tr>
+<tr>
+<td align="left">
+<p><a href="priority_queue.html"><tt>priority_queue</tt></a></p>
+<p>with <tt>Tag</tt> =</p>
+<p><a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a></p>
+</td>
+<td align="left">
+<p class="c1">O(1)</p>
+</td>
+<td align="left">
+<p class="c1">&Theta;(log(n))</p>
+</td>
+<td align="left">
+<p class="c1">&Theta;(log(n))</p>
+</td>
+<td align="left">
+<p class="c1">&Theta;(log(n))</p>
+</td>
+<td align="left">
+<p class="c1">&Theta;(log(n))</p>
+</td>
+</tr>
+<tr>
+<td align="left">
+<p><a href="priority_queue.html"><tt>priority_queue</tt></a></p>
+<p>with <tt>Tag</tt> =</p>
+<p><a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a></p>
+</td>
+<td align="left">
+<p class="c1">O(1)</p>
+</td>
+<td align="left">
+<p><i>&Theta;(n)</i> worst</p>
+<p><i>&Theta;(log(n))</i> amortized</p>
+</td>
+<td align="left">
+<p><i>&Theta;(log(n))</i> worst</p>
+<p><i>O(1)</i> amortized,</p>or
+
+ <p><i>&Theta;(log(n))</i> amortized</p>
+<p><sub><a href="#thin_heap_note">[thin_heap_note]</a></sub></p>
+</td>
+<td align="left">
+<p><i>&Theta;(n)</i> worst</p>
+<p><i>&Theta;(log(n))</i> amortized</p>
+</td>
+<td align="left">
+<p class="c1">&Theta;(n)</p>
+</td>
+</tr>
+</table>
+<p><sub><a name="std_mod1" id="std_mod1">[std note 1]</a> This
+ is not a property of the algorithm, but rather due to the fact
+ that the STL's priority queue implementation does not support
+ iterators (and consequently the ability to access a specific
+ value inside it). If the priority queue is adapting an
+ <tt>std::vector</tt>, then it is still possible to reduce this
+ to <i>&Theta;(n)</i> by adapting over the STL's adapter and
+ using the fact that <tt>top</tt> returns a reference to the
+ first value; if, however, it is adapting an
+ <tt>std::deque</tt>, then this is impossible.</sub></p>
+<p><sub><a name="std_mod2" id="std_mod2">[std note 2]</a> As
+ with <a href="#std_mod1">[std note 1]</a>, this is not a
+ property of the algorithm, but rather the STL's implementation.
+ Again, if the priority queue is adapting an
+ <tt>std::vector</tt> then it is possible to reduce this to
+ <i>&Theta;(n)</i>, but with a very high constant (one must call
+ <tt>std::make_heap</tt> which is an expensive linear
+ operation); if the priority queue is adapting an
+ <tt>std::dequeu</tt>, then this is impossible.</sub></p>
+<p><sub><a name="thin_heap_note" id="thin_heap_note">[thin_heap_note]</a> A thin heap has
+ <i>&amp;Theta(log(n))</i> worst case <tt>modify</tt> time
+ always, but the amortized time depends on the nature of the
+ operation: I) if the operation increases the key (in the sense
+ of the priority queue's comparison functor), then the amortized
+ time is <i>O(1)</i>, but if II) it decreases it, then the
+ amortized time is the same as the worst case time. Note that
+ for most algorithms, I) is important and II) is not.</sub></p>
+<h3><a name="pq_observations_amortized_push_pop" id="pq_observations_amortized_push_pop">Amortized <tt>push</tt>
+ and <tt>pop</tt> operations</a></h3>
+<p>In many cases, a priority queue is needed primarily for
+ sequences of <tt>push</tt> and <tt>pop</tt> operations. All of
+ the underlying data structures have the same amortized
+ logarithmic complexity, but they differ in terms of
+ constants.</p>
+<p>The table above shows that the different data structures are
+ "constrained" in some respects. In general, if a data structure
+ has lower worst-case complexity than another, then it will
+ perform slower in the amortized sense. Thus, for example a
+ redundant-counter binomial heap (<a href="priority_queue.html"><tt>priority_queue</tt></a> with
+ <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a>)
+ has lower worst-case <tt>push</tt> performance than a binomial
+ heap (<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a>),
+ and so its amortized <tt>push</tt> performance is slower in
+ terms of constants.</p>
+<p>As the table shows, the "least constrained" underlying
+ data structures are binary heaps and pairing heaps.
+ Consequently, it is not surprising that they perform best in
+ terms of amortized constants.</p>
+<ol>
+<li>Pairing heaps seem to perform best for non-primitive
+ types (<i>e.g.</i>, <tt>std::string</tt>s), as shown by
+ <a href="priority_queue_text_push_timing_test.html">Priority
+ Queue Text <tt>push</tt> Timing Test</a> and <a href="priority_queue_text_push_pop_timing_test.html">Priority
+ Queue Text <tt>push</tt> and <tt>pop</tt> Timing
+ Test</a></li>
+<li>binary heaps seem to perform best for primitive types
+ (<i>e.g.</i>, <tt><b>int</b></tt>s), as shown by <a href="priority_queue_random_int_push_timing_test.html">Priority
+ Queue Random Integer <tt>push</tt> Timing Test</a> and
+ <a href="priority_queue_random_int_push_pop_timing_test.html">Priority
+ Queue Random Integer <tt>push</tt> and <tt>pop</tt> Timing
+ Test</a>.</li>
+</ol>
+<h3><a name="pq_observations_graph" id="pq_observations_graph">Graph Algorithms</a></h3>
+<p>In some graph algorithms, a decrease-key operation is
+ required [<a href="references.html#clrs2001">clrs2001</a>];
+ this operation is identical to <tt>modify</tt> if a value is
+ increased (in the sense of the priority queue's comparison
+ functor). The table above and <a href="priority_queue_text_modify_up_timing_test.html">Priority Queue
+ Text <tt>modify</tt> Timing Test - I</a> show that a thin heap
+ (<a href="priority_queue.html"><tt>priority_queue</tt></a> with
+ <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a>)
+ outperforms a pairing heap (<a href="priority_queue.html"><tt>priority_queue</tt></a> with
+ <tt>Tag</tt> =<tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>),
+ but the rest of the tests show otherwise.</p>
+<p>This makes it difficult to decide which implementation to
+ use in this case. Dijkstra's shortest-path algorithm, for
+ example, requires <i>&Theta;(n)</i> <tt>push</tt> and
+ <tt>pop</tt> operations (in the number of vertices), but
+ <i>O(n<sup>2</sup>)</i> <tt>modify</tt> operations, which can
+ be in practice <i>&Theta;(n)</i> as well. It is difficult to
+ find an <i>a-priori</i> characterization of graphs in which the
+ <u>actual</u> number of <tt>modify</tt> operations will dwarf
+ the number of <tt>push</tt> and <tt>pop</tt> operations.</p>
+</div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/pq_regression_tests.html b/libstdc++-v3/doc/html/ext/pb_ds/pq_regression_tests.html
new file mode 100644
index 000000000..9084409d3
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/pq_regression_tests.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>Priority-Queue Regression Tests</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1>Priority-Queue Regression Tests</h1>
+
+ <h2><a name="assoc_desc" id="assoc_desc">Description</a></h2>
+
+ <p>The library contains a single comprehensive regression test.
+ For a given container type in <tt>pb_ds</tt>, the test creates
+ an object of the container type and an object of the
+ corresponding STL type (<i>i.e.</i>,
+ <tt>std::priority_queue</tt>). It then performs a random
+ sequence of methods with random arguments (<i>e.g.</i>, pushes,
+ pops, and so forth) on both objects. At each operation, the
+ test checks the return value of the method, and optionally both
+ compares <tt>pb_ds</tt>'s object with the STL's object as well
+ as performing other consistency checks on <tt>pb_ds</tt>'s
+ object (<i>e.g.</i>, that the size returned by the
+ <tt>size</tt> method corresponds to the distance between its
+ <tt>begin</tt> and end iterators).</p>
+
+ <p>Additionally, the test integrally checks exception safety
+ and resource leaks. This is done as follows. A special
+ allocator type, written for the purpose of the test, both
+ randomly throws an exceptions when allocations are performed,
+ and tracks allocations and de-allocations. The exceptions thrown
+ at allocations simulate memory-allocation failures; the
+ tracking mechanism checks for memory-related bugs (<i>e.g.</i>,
+ resource leaks and multiple de-allocations). Both
+ <tt>pb_ds</tt>'s containers and the containers' value-types are
+ configured to use this allocator.</p>
+
+ <h2><a name="pq_tests" id="pq_tests">Tests</a></h2>
+
+ <p><a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/regression/priority_queue_rand.cc"><tt>priority_queue_rand.cc</tt></a>
+ checks all priority queue types.</p>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/pq_tests.html b/libstdc++-v3/doc/html/ext/pb_ds/pq_tests.html
new file mode 100644
index 000000000..de8cb447c
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/pq_tests.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>Priority-Queue Tests</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1>Priority-Queue Tests</h1>
+
+ <p><a href="pq_regression_tests.html">Priority-Queue Regression
+ Tests</a> describes the regression tests; <a href=
+ "pq_performance_tests.html">Priority-Queue Performance
+ Tests</a> describes the performance tests.</p>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/prerequisites.html b/libstdc++-v3/doc/html/ext/pb_ds/prerequisites.html
new file mode 100644
index 000000000..7c8888499
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/prerequisites.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>Prerequisites</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1>Usage Prerequisites</h1>
+
+ <p><tt>pb_ds</tt> has been successfully tested with the
+ following compilers:</p>
+
+ <ol>
+ <li>g++ 3.3.1, 3.4.4, 4.0, 4.1, and what will be 4.2</li>
+
+ <li>Intel icpc 8.1 and 9</li>
+
+ <li>Visual C++ .Net 2005</li>
+ </ol>
+
+ <p>The library contains only header files, and does not require
+ any other libraries except the STL. All classes are defined in
+ <tt><b>namespace</b> pb_ds</tt>. The library internally uses
+ macros beginning with <tt>PB_DS</tt> (<i>e.g.</i>, for header
+ guards), but <tt>#<b>undef</b></tt>s anything it
+ <tt>#<b>define</b></tt>s (except for header guards). Compiling
+ the library in an environment where macros beginning in
+ <tt>PB_DS</tt> are defined, may yield unpredictable results in
+ compilation, execution, or both.</p>
+
+ <p> Further dependencies are necessary to create the visual output
+ for the performance tests. To create these graphs, two additional
+ packages will be needed: <b>pychart</b> and <b>Beautiful
+ Soup</b>. Both are freely available.
+ </p>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue.html b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue.html
new file mode 100644
index 000000000..def310f0c
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue.html
@@ -0,0 +1,995 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>priority_queue Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>priority_queue</tt> Interface</h1>
+
+ <p>Basic priority queue.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/priority_queue.hpp"><tt>priority_queue.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Template Parameters</a></h2>
+
+ <table class="c1" width="100%" border="1" summary=
+ "Template Parameters">
+ <tr>
+ <td width="20%" align="left"><b>Parameter</b></td>
+
+ <td width="50%" align="left"><b>Description</b></td>
+
+ <td width="30%" align="left"><b>Default Value</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Value_Type216514186" id=
+"Value_Type216514186"><b>typename</b> Value_Type</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Value type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Cmp_Fn294335" id="Cmp_Fn294335"><b>class</b> Cmp_Fn </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Comparison functor.</p>
+ </td>
+
+ <td>
+ <pre>
+std::less&lt;<a href=
+"#Value_Type216514186"><tt>Value_Type</tt></a>&gt;
+</pre>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Tag278938" id="Tag278938"><b>class</b> Tag </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Data-structure tag.</p>
+ </td>
+
+ <td><a href="pairing_heap_tag.html"><span class=
+ "c2"><tt>pairing_heap_tag</tt></span></a></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Allocator35940069" id=
+"Allocator35940069"><b>class</b> Allocator </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Allocator type.</p>
+ </td>
+
+ <td>
+ <pre>
+std::allocator&lt;<b>char</b>&gt;
+</pre>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link2" id="link2">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link3" id="link3">General Container
+ Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="size_type55424436" id="size_type55424436">size_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#Allocator35940069"><tt>Allocator</tt></a>::size_type
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="difference_type868028452" id=
+"difference_type868028452">difference_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#Allocator35940069"><tt>Allocator</tt></a>::difference_type
+</pre>
+ </td>
+
+ <td>
+ <p>Difference type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link4" id="link4">Categories</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="container_category1247973216" id=
+"container_category1247973216">container_category</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Tag278938"><tt>Tag</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>The underlying mapped-structure tag of the
+ container.</p>
+
+ <p>This is one of:</p>
+
+ <ol>
+ <li><a href="binary_heap_tag.html"><span class=
+ "c2"><tt>binary_heap_tag</tt></span></a></li>
+
+ <li><a href="binomial_heap_tag.html"><span class=
+ "c2"><tt>binomial_heap_tag</tt></span></a></li>
+
+ <li><a href="rc_binomial_heap_tag.html"><span class=
+ "c2"><tt>rc_binomial_heap_tag</tt></span></a></li>
+
+ <li><a href="pairing_heap_tag.html"><span class=
+ "c2"><tt>pairing_heap_tag</tt></span></a></li>
+
+ <li><a href="thin_heap_tag.html"><span class=
+ "c2"><tt>thin_heap_tag</tt></span></a></li>
+ </ol>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link5" id="link5">Policy Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="cmp_fn394495" id="cmp_fn394495">cmp_fn</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Cmp_Fn294335"><tt>Cmp_Fn</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Comparison functor type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="allocator48440069" id="allocator48440069">allocator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Allocator35940069"><tt>Allocator</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p><a href="#Allocator35940069"><tt>Allocator</tt></a>
+ type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link6" id="link6">Value-Type Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="value_type279018186" id=
+"value_type279018186">value_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Value_Type216514186"><tt>Value_Type</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Value type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="reference54418471" id="reference54418471">reference</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind&lt;
+ <a href=
+"#value_type279018186"><tt>value_type</tt></a>&gt;::other::reference
+</pre>
+ </td>
+
+ <td>
+ <p>Value reference type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_reference495461441" id=
+"const_reference495461441">const_reference</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind&lt;
+ <a href=
+"#value_type279018186"><tt>value_type</tt></a>&gt;::other::const_reference
+</pre>
+ </td>
+
+ <td>
+ <p>Const value <a href=
+ "#reference54418471"><tt>reference</tt></a> type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="pointer2179769" id="pointer2179769">pointer</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind&lt;
+ <a href=
+"#value_type279018186"><tt>value_type</tt></a>&gt;::other::pointer
+</pre>
+ </td>
+
+ <td>
+ <p>Value pointer type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_pointer878814947" id=
+"const_pointer878814947">const_pointer</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind&lt;
+ <a href=
+"#value_type279018186"><tt>value_type</tt></a>&gt;::other::const_pointer
+</pre>
+ </td>
+
+ <td>
+ <p>Const Value <a href=
+ "#pointer2179769"><tt>pointer</tt></a> type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link7" id="link7">Iterator Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_point_iterator2364676009" id=
+"const_point_iterator2364676009">const_point_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+Const point-type iterator.
+</pre>
+ </td>
+
+ <td>
+ <p>Const point-type iterator.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="point_iterator2789896775" id=
+"point_iterator2789896775">point_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+Point-type iterator.
+</pre>
+ </td>
+
+ <td>
+ <p>Point-type iterator.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_iterator98626788" id=
+"const_iterator98626788">const_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+Const range-type iterator.
+</pre>
+ </td>
+
+ <td>
+ <p>Const range-type iterator.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="iterator10418194" id="iterator10418194">iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+Range-type iterator.
+</pre>
+ </td>
+
+ <td>
+ <p>Range-type iterator.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link8" id="link8">Public Methods</a></h2>
+
+ <h3><a name="link9" id="link9">Constructors, Destructor, and
+ Related</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ priority_queue
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Default constructor.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ priority_queue
+ (<b>const</b> <a href=
+"#cmp_fn394495"><tt>cmp_fn</tt></a> &amp;r_cmp_fn)
+</pre>
+ </td>
+
+ <td>
+ <p>Constructor taking some policy objects. <span class=
+ "c1"><tt>r_cmp_fn</tt></span> will be copied by the
+ <a href="#Cmp_Fn294335"><tt>Cmp_Fn</tt></a> object of the
+ container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>template</b>&lt;
+ <b>class</b> It&gt;
+ priority_queue
+ (It first_it,
+ It last_it)
+</pre>
+ </td>
+
+ <td>
+ <p>Constructor taking iterators to a range of <a href=
+ "#value_type279018186"><tt>value_type</tt></a>s. The
+ <a href="#value_type279018186"><tt>value_type</tt></a>s
+ between <span class="c1"><tt>first_it</tt></span> and
+ <span class="c1"><tt>last_it</tt></span> will be inserted
+ into the container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>template</b>&lt;
+ <b>class</b> It&gt;
+ priority_queue
+ (It first_it,
+ It last_it,
+ <b>const</b> <a href=
+"#cmp_fn394495"><tt>cmp_fn</tt></a> &amp;r_cmp_fn)
+</pre>
+ </td>
+
+ <td>
+ <p>Constructor taking iterators to a range of <a href=
+ "#value_type279018186"><tt>value_type</tt></a>s and some
+ policy objects The <a href=
+ "#value_type279018186"><tt>value_type</tt></a>s between
+ <span class="c1"><tt>first_it</tt></span> and
+ <span class="c1"><tt>last_it</tt></span> will be inserted
+ into the container object. <span class=
+ "c1"><tt>r_cmp_fn</tt></span> will be copied by the
+ <a href="#cmp_fn394495"><tt>cmp_fn</tt></a> object of the
+ container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ priority_queue
+ (<b>const</b> <span class=
+"c2"><tt>priority_queue</tt></span> &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Copy constructor.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b>
+ ~priority_queue
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Destructor.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<span class="c2"><tt>priority_queue</tt></span> &amp;
+ <b>operator</b>=
+ (<b>const</b> <span class=
+"c2"><tt>priority_queue</tt></span> &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Assignment operator.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ swap
+ (<span class="c2"><tt>priority_queue</tt></span> &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Swaps content.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link10" id="link10">Information Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a>
+ size
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the number of distinct <a href=
+ "#value_type279018186"><tt>value_type</tt></a> objects
+ the container object is storing.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a>
+ max_size
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns an upper bound on the number of distinct
+ <a href="#value_type279018186"><tt>value_type</tt></a>
+ objects this container can store.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>bool</b>
+ empty
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns whether the container object is not storing
+ any <a href=
+ "#value_type279018186"><tt>value_type</tt></a>
+ objects.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link11" id="link11">Insert Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href=
+"#point_iterator2789896775"><tt>point_iterator</tt></a>
+ push
+ (<a href=
+"#const_reference495461441"><tt>const_reference</tt></a> r_val)
+</pre>
+ </td>
+
+ <td>
+ <p>Inserts a <a href=
+ "#value_type279018186"><tt>value_type</tt></a> object.
+ returns a <a href=
+ "#point_iterator2789896775"><tt>point_iterator</tt></a>
+ object associated with the new pushed <span class=
+ "c1"><tt>r_val</tt></span>.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link12" id="link12">Find Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href=
+"#const_reference495461441"><tt>const_reference</tt></a>
+ top
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the <a href=
+ "#const_reference495461441"><tt>const_reference</tt></a>
+ of the largest <a href=
+ "#value_type279018186"><tt>value_type</tt></a> in the
+ container object, i.e., a <a href=
+ "#value_type279018186"><tt>value_type</tt></a> v_max for
+ which any other <a href=
+ "#value_type279018186"><tt>value_type</tt></a> v in the
+ container object will satisfy !<a href=
+ "#cmp_fn394495"><tt>cmp_fn</tt></a>()(v_max, v).</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link13" id="link13">Modify Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ modify
+ (<a href=
+"#point_iterator2789896775"><tt>point_iterator</tt></a> it,
+ <a href=
+"#const_reference495461441"><tt>const_reference</tt></a> r_new_val)
+</pre>
+ </td>
+
+ <td>
+ <p>Modifies the <a href=
+ "#value_type279018186"><tt>value_type</tt></a> associated
+ with the <a href=
+ "#point_iterator2789896775"><tt>point_iterator</tt></a>
+ <span class="c1"><tt>it</tt></span> into <span class=
+ "c1"><tt>r_new_val</tt></span>.</p>
+
+ <p>To use this method, <a href=
+ "#value_type279018186"><tt>value_type</tt></a> must be
+ assignable.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link14" id="link14">Erase Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ pop
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Pops the largest <a href=
+ "#value_type279018186"><tt>value_type</tt></a>.</p>
+
+ <p>If the container object is empty, results are
+ undefined.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ erase
+ (<a href=
+"#point_iterator2789896775"><tt>point_iterator</tt></a> it)
+</pre>
+ </td>
+
+ <td>
+ <p>Erases the <a href=
+ "#value_type279018186"><tt>value_type</tt></a> associated
+ with the <a href=
+ "#point_iterator2789896775"><tt>point_iterator</tt></a>
+ <span class="c1"><tt>it</tt></span>.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>template</b>&lt;
+ <b>class</b> Pred&gt;
+<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a>
+ erase_if
+ (Pred prd)
+</pre>
+ </td>
+
+ <td>
+ <p>Erases any <a href=
+ "#value_type279018186"><tt>value_type</tt></a> satisfying
+ the predicate <span class="c1"><tt>prd</tt></span>;
+ returns the number of <a href=
+ "#value_type279018186"><tt>value_type</tt></a>s
+ erased.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ clear
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Clears the container object.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link15" id="link15">Split and join
+ Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ join
+ (<span class="c2"><tt>priority_queue</tt></span> &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Joins two container objects. When this function
+ returns, <span class="c1"><tt>other</tt></span> will be
+ empty.</p>
+
+ <p>When calling this method, <span class=
+ "c1"><tt>other</tt></span>'s policies must be
+ equivalent to this object's policies.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>template</b>&lt;
+ <b>class</b> Pred&gt;
+<b>inline</b> <b>void</b>
+ split
+ (Pred prd,
+ <span class="c2"><tt>priority_queue</tt></span> &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Splits into two container objects. When this function
+ returns, <span class="c1"><tt>other</tt></span> will be
+ contain only values v for which <span class=
+ "c1"><tt>prd</tt></span>(v) is <tt><b>true</b></tt>.</p>
+
+ <p>When calling this method, <span class=
+ "c1"><tt>other</tt></span>'s policies must be
+ equivalent to this object's policies.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link16" id="link16">Iteration Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href="#iterator10418194"><tt>iterator</tt></a>
+ begin
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Returns an <a href=
+ "#iterator10418194"><tt>iterator</tt></a> corresponding
+ to the first <a href=
+ "#value_type279018186"><tt>value_type</tt></a> in the
+ container.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href=
+"#const_iterator98626788"><tt>const_iterator</tt></a>
+ begin
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns a <a href=
+ "#const_iterator98626788"><tt>const_iterator</tt></a>
+ corresponding to the first <a href=
+ "#value_type279018186"><tt>value_type</tt></a> in the
+ container.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href="#iterator10418194"><tt>iterator</tt></a>
+ end
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Returns an <a href=
+ "#iterator10418194"><tt>iterator</tt></a> corresponding
+ to the just-after-last <a href=
+ "#value_type279018186"><tt>value_type</tt></a> in the
+ container.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href=
+"#const_iterator98626788"><tt>const_iterator</tt></a>
+ end
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns a <a href=
+ "#const_iterator98626788"><tt>const_iterator</tt></a>
+ corresponding to the just-after-last <a href=
+ "#value_type279018186"><tt>value_type</tt></a> in the
+ container.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test.html
new file mode 100644
index 000000000..903331d9d
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test.html
@@ -0,0 +1,161 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+<title>Priority Queue Random Int Push Pop Timing Test</title>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+</head>
+<body>
+<div id="page">
+<h1>Priority Queue Random Integer <tt>push</tt> and
+ <tt>pop</tt> Timing Test</h1>
+<h2><a name="description" id="description">Description</a></h2>
+<p>This test inserts a number of values with i.i.d. integer
+ keys into a container using <tt>push</tt> , then removes them
+ using <tt>pop</tt> . It measures the average time for
+ <tt>push</tt> and <tt>pop</tt> as a function of the number of
+ values.</p>
+<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/priority_queue_random_int_push_pop_timing.cc">
+<tt>priority_queue_random_int_push_pop_timing_test</tt></a>
+ thirty_years_among_the_dead_preproc.txt 200 200 2100)</p>
+<h2><a name="purpose" id="purpose">Purpose</a></h2>
+<p>The test checks the effect of different underlying
+ data structures (see <a href="pq_design.html#pq_imp">Design::Priority
+ Queues::Implementations</a>).</p>
+<h2><a name="results" id="results">Results</a></h2>
+<p>Figures <a href="#NPG">NPG</a>, <a href="#NPM">NPM</a>, and
+ <a href="#NPL">NPL</a> shows the results for the native
+ priority queues and <tt>pb_ds</tt> 's priority queues in
+ <a href="pq_performance_tests.html#gcc"><u>g++</u></a>,
+ <a href="pq_performance_tests.html#msvc"><u>msvc++</u></a>, and
+ <a href="pq_performance_tests.html#local"><u>local</u></a>,
+ respectively.</p>
+<div id="NPG_res_div">
+<div id="NPG_gcc">
+<div id="NPG_priority_queue_random_int_push_pop_timing_test">
+<div id="NPG_pq">
+<div id="NPG_Native_and__tt_pb_ds_455tt__priority_queue__tt_push_455tt___tt_pop_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPG" id="NPG"><img src="priority_queue_random_int_push_pop_timing_test_gcc.png" alt="no image" /></a></h6>NPG: Native and <tt>pb ds</tt> priority queue <tt>push</tt> <tt>pop</tt> timing test - <a href="pq_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+thin_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a>
+</li>
+<li>
+rc_binomial_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a>
+</li>
+<li>
+binomial_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a>
+</li>
+<li>
+pairing_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>
+</li>
+<li>
+n_pq_deque-
+<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li>
+<li>
+n_pq_vector-
+<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li>
+<li>
+binary_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NPM_res_div">
+<div id="NPM_msvc">
+<div id="NPM_priority_queue_random_int_push_pop_timing_test">
+<div id="NPM_pq">
+<div id="NPM_Native_and__tt_pb_ds_455tt__priority_queue__tt_push_455tt___tt_pop_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPM" id="NPM"><img src="priority_queue_random_int_push_pop_timing_test_msvc.png" alt="no image" /></a></h6>NPM: Native and <tt>pb ds</tt> priority queue <tt>push</tt> <tt>pop</tt> timing test - <a href="pq_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+thin_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a>
+</li>
+<li>
+rc_binomial_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a>
+</li>
+<li>
+binomial_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a>
+</li>
+<li>
+pairing_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>
+</li>
+<li>
+n_pq_deque-
+<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li>
+<li>
+n_pq_vector-
+<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li>
+<li>
+binary_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NPL_res_div">
+<div id="NPL_local">
+<div id="NPL_priority_queue_random_int_push_pop_timing_test">
+<div id="NPL_pq">
+<div id="NPL_Native_and__tt_pb_ds_455tt__priority_queue__tt_push_455tt___tt_pop_455tt__timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPL" id= "NPL"><img src="priority_queue_random_int_push_pop_timing_test_local.png" alt="no image" /></a></h6>NPL: Native and <tt>pb ds</tt> priority queue <tt>push</tt> <tt>pop</tt> timing test - <a href = "pq_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<h2><a name="observations" id="observations">Observations</a></h2>
+<p>Binary heaps are the most suited for sequences of
+ <tt>push</tt> and <tt>pop</tt> operations of primitive types
+ (<i>e.g.</i> <tt><b>int</b></tt>s). This is explained in
+ <a href="priority_queue_random_int_push_timing_test.html">Priority
+ Queue Random Int <tt>push</tt> Timing Test</a> . (See <a href="priority_queue_text_push_pop_timing_test.html">Priority Queue
+ Text <tt>push</tt> Timing Test</a> for the case of primitive
+ types.)</p>
+<p>At first glance it seems that the STL's vector-based
+ priority queue is approximately on par with <tt>pb_ds</tt>'s
+ corresponding priority queue. There are two differences
+ however:</p>
+<ol>
+<li>The STL's priority queue does not downsize the underlying
+ vector (or deque) as the priority queue becomes smaller
+ (see <a href="priority_queue_text_pop_mem_usage_test.html">Priority Queue
+ Text <tt>pop</tt> Memory Use Test</a>). It is therefore
+ gaining some speed at the expense of space.</li>
+<li>From <a href="priority_queue_random_int_push_pop_timing_test.html">Priority
+ Queue Random Integer <tt>push</tt> and <tt>pop</tt> Timing
+ Test</a>, it seems that the STL's priority queue is slower in
+ terms of <tt>pus</tt> operations. Since the number of
+ <tt>pop</tt> operations is at most that of <tt>push</tt>
+ operations, the test here is the "best" for the STL's
+ priority queue.</li>
+</ol>
+<p><a href="pq_performance_tests.html#pq_observations">Priority-Queue
+ Performance Tests::Observations</a> discusses this further and
+ summarizes.</p>
+</div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test_gcc.png
new file mode 100644
index 000000000..68f5e2b6b
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test_local.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test_local.png
new file mode 100644
index 000000000..51f8211f1
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test_msvc.png
new file mode 100644
index 000000000..4fc191c8b
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test.html
new file mode 100644
index 000000000..ba91f601a
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test.html
@@ -0,0 +1,200 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+<title>Priority Queue Random Int Push Timing Test</title>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+</head>
+<body>
+<div id="page">
+<h1>Priority Queue Random Integer <tt>push</tt> Timing
+ Test</h1>
+<h2><a name="description" id="description">Description</a></h2>
+<p>This test inserts a number of values with i.i.d integer keys
+ into a container using <tt>push</tt> . It measures the average
+ time for <tt>push</tt> as a function of the number of
+ values.</p>
+<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/priority_queue_random_int_push_timing.cc"><tt>
+ priority_queue_random_intpush_timing_test</tt></a>
+ thirty_years_among_the_dead_preproc.txt 200 200 2100)</p>
+<h2><a name="purpose" id="purpose">Purpose</a></h2>
+<p>The test checks the effect of different underlying
+ data structures (see <a href="pq_design.html#pq_imp">Design::Priority
+ Queues::Implementations</a>).</p>
+<h2><a name="results" id="results">Results</a></h2>
+<p>Figures <a href="#NPG">NPG</a>, <a href="#NPM">NPM</a>, and
+ <a href="#NPL">NPL</a> show the results for the native priority
+ queues and <tt>pb_ds</tt> 's priority queues in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>, and
+ <a href="assoc_performance_tests.html#local"><u>local</u></a>,
+ respectively; Figures <a href="#NBPG">NBPG</a>, <a href="#NBPM">NBPM</a>, and <a href="#NBPL">NBPL</a> shows the
+ results for the binary-heap based native priority queues and
+ <tt>pb_ds</tt> 's priority queues in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>, and
+ <a href="assoc_performance_tests.html#local"><u>local</u></a>,
+ respectively</p>
+<div id="NPG_res_div">
+<div id="NPG_gcc">
+<div id="NPG_priority_queue_random_int_push_timing_test">
+<div id="NPG_pq">
+<div id="NPG_Native_and__tt_pb_ds_455tt__priority_queue__tt_push_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPG" id="NPG"><img src="priority_queue_random_int_push_timing_test_gcc.png" alt="no image" /></a></h6>NPG: Native and <tt>pb ds</tt> priority queue <tt>push</tt> timing test - <a href="pq_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+rc_binomial_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a>
+</li>
+<li>
+binomial_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a>
+</li>
+<li>
+n_pq_deque-
+<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li>
+<li>
+pairing_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>
+</li>
+<li>
+thin_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a>
+</li>
+<li>
+n_pq_vector-
+<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li>
+<li>
+binary_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NPM_res_div">
+<div id="NPM_msvc">
+<div id="NPM_priority_queue_random_int_push_timing_test">
+<div id="NPM_pq">
+<div id="NPM_Native_and__tt_pb_ds_455tt__priority_queue__tt_push_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPM" id="NPM"><img src="priority_queue_random_int_push_timing_test_msvc.png" alt="no image" /></a></h6>NPM: Native and <tt>pb ds</tt> priority queue <tt>push</tt> timing test - <a href="pq_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+rc_binomial_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a>
+</li>
+<li>
+binomial_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a>
+</li>
+<li>
+pairing_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>
+</li>
+<li>
+thin_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a>
+</li>
+<li>
+n_pq_deque-
+<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li>
+<li>
+n_pq_vector-
+<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li>
+<li>
+binary_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NPL_res_div">
+<div id="NPL_local">
+<div id="NPL_priority_queue_random_int_push_timing_test">
+<div id="NPL_pq">
+<div id="NPL_Native_and__tt_pb_ds_455tt__priority_queue__tt_push_455tt__timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPL" id= "NPL"><img src="priority_queue_random_int_push_timing_test_local.png" alt="no image" /></a></h6>NPL: Native and <tt>pb ds</tt> priority queue <tt>push</tt> timing test - <a href = "pq_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NBPG_res_div">
+<div id="NBPG_gcc">
+<div id="NBPG_binary_priority_queue_random_int_push_timing_test">
+<div id="NBPG_pq">
+<div id="NBPG_Native_and__tt_pb_ds_455tt__binary_priority_queue__tt_push_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NBPG" id="NBPG"><img src="binary_priority_queue_random_int_push_timing_test_gcc.png" alt="no image" /></a></h6>NBPG: Native and <tt>pb ds</tt> binary priority queue <tt>push</tt> timing test - <a href="pq_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_pq_deque-
+<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li>
+<li>
+n_pq_vector-
+<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li>
+<li>
+binary_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NBPM_res_div">
+<div id="NBPM_msvc">
+<div id="NBPM_binary_priority_queue_random_int_push_timing_test">
+<div id="NBPM_pq">
+<div id="NBPM_Native_and__tt_pb_ds_455tt__binary_priority_queue__tt_push_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NBPM" id="NBPM"><img src="binary_priority_queue_random_int_push_timing_test_msvc.png" alt="no image" /></a></h6>NBPM: Native and <tt>pb ds</tt> binary priority queue <tt>push</tt> timing test - <a href="pq_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_pq_deque-
+<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li>
+<li>
+n_pq_vector-
+<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li>
+<li>
+binary_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NBPL_res_div">
+<div id="NBPL_local">
+<div id="NBPL_binary_priority_queue_random_int_push_timing_test">
+<div id="NBPL_pq">
+<div id="NBPL_Native_and__tt_pb_ds_455tt__binary_priority_queue__tt_push_455tt__timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NBPL" id= "NBPL"><img src="binary_priority_queue_random_int_push_timing_test_local.png" alt="no image" /></a></h6>NBPL: Native and <tt>pb ds</tt> binary priority queue <tt>push</tt> timing test - <a href = "pq_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<h2><a name="observations" id="observations">Observations</a></h2>
+<p>Binary heaps are the most suited for sequences of
+ <tt>push</tt> and <tt>pop</tt> operations of primitive types
+ (<i>e.g.</i> <tt><b>int</b></tt>s). They are less constrained
+ than any other type, and since it is very efficient to store
+ such types in arrays, they outperform even pairing heaps. (See
+ <a href="priority_queue_text_push_timing_test.html">Priority
+ Queue Text <tt>push</tt> Timing Test</a> for the case of
+ non-primitive types.)</p>
+<p><a href="pq_performance_tests.html#pq_observations">Priority-Queue
+ Performance Tests::Observations</a> discusses this further and
+ summarizes.</p>
+</div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test_gcc.png
new file mode 100644
index 000000000..ee8c9b7d9
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test_local.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test_local.png
new file mode 100644
index 000000000..dead185fa
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test_msvc.png
new file mode 100644
index 000000000..0a1a8eaef
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_tag.html
new file mode 100644
index 000000000..8b6d81c37
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_tag.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>priority_queue_tag Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>priority_queue_tag</tt> Interface</h1>
+
+ <p>Basic priority-queue data structure tag.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Base Classes</a></h2>
+
+ <table class="c1" width="100%" border="1" summary="Bases">
+ <tr>
+ <td width="80%" align="left"><b>Class</b></td>
+
+ <td width="20%" align="left"><b>Derivation Type</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="container_tag.html"><span class=
+"c2"><tt>container_tag</tt></span></a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_tag_cd.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_tag_cd.png
new file mode 100644
index 000000000..ed8d875f0
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_tag_cd.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_tag_cd.svg b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_tag_cd.svg
new file mode 100644
index 000000000..be007aecb
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_tag_cd.svg
@@ -0,0 +1,368 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="11in"
+ height="8.5in"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.43"
+ version="1.0"
+ sodipodi:docbase="/mnt/share/src/policy_based_data_structures/pb_ds_images"
+ sodipodi:docname="pq_tag_diagram_2.svg"
+ inkscape:export-filename="/mnt/share/src/policy_based_data_structures/pb_ds_images/pq_tag_diagram_2.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow1Mstart"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow1Mstart"
+ style="overflow:visible">
+ <path
+ id="path3311"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
+ transform="scale(0.4)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Sstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Sstart"
+ style="overflow:visible">
+ <path
+ id="path3319"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="matrix(0.3,0,0,0.3,-1.5,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Sstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Sstart"
+ style="overflow:visible">
+ <path
+ id="path3337"
+ d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="scale(0.2,0.2)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Send"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Send"
+ style="overflow:visible">
+ <path
+ id="path3316"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="matrix(-0.3,0,0,-0.3,1.5,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Mend"
+ style="overflow:visible">
+ <path
+ id="path3322"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="matrix(-0.6,0,0,-0.6,3,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path3346"
+ d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="scale(-0.8,-0.8)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lstart"
+ style="overflow:visible">
+ <path
+ id="path3331"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="matrix(1.1,0,0,1.1,-5.5,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path3328"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="matrix(-1.1,0,0,-1.1,5.5,0)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2"
+ inkscape:cx="608.69002"
+ inkscape:cy="490.05621"
+ inkscape:document-units="in"
+ inkscape:current-layer="layer1"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="1278"
+ inkscape:window-height="973"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ gridtolerance="0.125in"
+ guidetolerance="0.125in">
+ <sodipodi:guide
+ orientation="horizontal"
+ position="629"
+ id="guide1307" />
+ <sodipodi:guide
+ orientation="horizontal"
+ position="449"
+ id="guide1309" />
+ <sodipodi:guide
+ orientation="horizontal"
+ position="269"
+ id="guide1311" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="496"
+ id="guide1313" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="383"
+ id="guide1315" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="241"
+ id="guide1317" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="680"
+ id="guide1319" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="749"
+ id="guide1321" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="124"
+ id="guide1345" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="901"
+ id="guide1347" />
+ <sodipodi:guide
+ orientation="horizontal"
+ position="539"
+ id="guide3390" />
+ <sodipodi:guide
+ orientation="horizontal"
+ position="359"
+ id="guide3392" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="280.5"
+ id="guide3324" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="195"
+ id="guide3326" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="427"
+ id="guide3328" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="795"
+ id="guide3340" />
+ <sodipodi:guide
+ orientation="horizontal"
+ position="179"
+ id="guide1395" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Benjamin Kosnik</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ y="382.17499"
+ x="241.73018"
+ height="23.200001"
+ width="141.64481"
+ id="rect3420"
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3418"
+ width="141.64481"
+ height="23.200001"
+ x="52.730194"
+ y="382.17499" />
+ <text
+ xml:space="preserve"
+ style="font-size:9.60000038;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="122.35258"
+ y="395.91092"
+ id="text3394"
+ sodipodi:linespacing="100%"><tspan
+ sodipodi:role="line"
+ id="tspan1383"
+ x="122.35258"
+ y="395.91092">pairing_heap_tag</tspan></text>
+ <text
+ sodipodi:linespacing="100%"
+ id="text3400"
+ y="395.91092"
+ x="310.55255"
+ style="font-size:9.60000038;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ sodipodi:role="line"
+ id="tspan1381"
+ x="310.55255"
+ y="395.91092">bionomial_heap_tag</tspan></text>
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3380"
+ width="141.64481"
+ height="23.200001"
+ x="425.57764"
+ y="292.56177" />
+ <text
+ xml:space="preserve"
+ style="font-size:9.60000038;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="495.20001"
+ y="307.09772"
+ id="text1323"
+ sodipodi:linespacing="100%"><tspan
+ sodipodi:role="line"
+ id="tspan1363"
+ x="495.20001"
+ y="307.09772">priority_queue_tag</tspan></text>
+ <path
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.16226137;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 124.54034,382.1132 L 124.54034,360.6132 L 311.75594,359.6132 L 311.75594,382.1132"
+ id="path2244" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3422"
+ width="141.64481"
+ height="23.200001"
+ x="425.73022"
+ y="382.17499" />
+ <text
+ sodipodi:linespacing="100%"
+ id="text3406"
+ y="395.91092"
+ x="495.3526"
+ style="font-size:9.60000038;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ sodipodi:role="line"
+ id="tspan1377"
+ x="495.3526"
+ y="395.91092">rc_binomial_heap_tag</tspan></text>
+ <rect
+ y="382.17499"
+ x="607.93024"
+ height="23.200001"
+ width="141.64481"
+ id="rect3424"
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ xml:space="preserve"
+ style="font-size:9.60000038;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="679.15259"
+ y="395.91092"
+ id="text3412"
+ sodipodi:linespacing="100%"><tspan
+ sodipodi:role="line"
+ id="tspan1379"
+ x="679.15259"
+ y="395.91092">binary_heap_tag</tspan></text>
+ <path
+ id="path3347"
+ d="M 495.79886,382.13056 L 495.79886,321.40547"
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect2281"
+ width="141.64481"
+ height="23.200001"
+ x="795.625"
+ y="382.17499" />
+ <text
+ sodipodi:linespacing="100%"
+ id="text2283"
+ y="395.91092"
+ x="866.84735"
+ style="font-size:9.60000038;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ sodipodi:role="line"
+ id="tspan1359"
+ x="866.84735"
+ y="395.91092">thin_heap_tag</tspan></text>
+ <path
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 311.5,360 L 680,360"
+ id="path2309" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path2244"
+ id="use2311"
+ transform="matrix(-1,0,0,1,992.3371,0)"
+ width="990"
+ height="765" />
+ </g>
+</svg>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test.html
new file mode 100644
index 000000000..a4bf576ff
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test.html
@@ -0,0 +1,141 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+<title>Priority Queue Text Join Timing Test</title>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+</head>
+<body>
+<div id="page">
+<h1>Priority Queue Text <tt>join</tt> Timing Test</h1>
+<h2><a name="description" id="description">Description</a></h2>
+<p>This test inserts a number of values with keys from an
+ arbitrary text ([ <a href="references.html#wickland96thirty">wickland96thirty</a> ]) into
+ two containers, then merges the containers. It uses
+ <tt>join</tt> for <tt>pb_ds</tt>'s priority queues; for the
+ STL's priority queues, it successively pops values from one
+ container and pushes them into the other. The test measures the
+ average time as a function of the number of values.</p>
+<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/priority_queue_text_join_timing.cc"><tt>priority_queue_text_join_timing_test</tt></a>
+ thirty_years_among_the_dead_preproc.txt 200 200 2100)</p>
+<h2><a name="purpose" id="purpose">Purpose</a></h2>
+<p>The test checks the effect of different underlying
+ data structures (see <a href="pq_design.html#pq_imp">Design::Priority
+ Queues::Implementations</a>).</p>
+<h2><a name="results" id="results">Results</a></h2>
+<p>Figures <a href="#NPG">NPG</a>, <a href="#NPM">NPM</a>, and
+ <a href="#NPL">NPL</a> show the results for the native priority
+ queues and <tt>pb_ds</tt> 's priority queues in <a href="pq_performance_tests.html#gcc"><u>g++</u></a>, <a href="pq_performance_tests.html#msvc"><u>msvc</u></a>, and <a href="pq_performance_tests.html#local"><u>local</u></a>,
+ respectively.</p>
+<div id="NPG_res_div">
+<div id="NPG_gcc">
+<div id="NPG_priority_queue_text_join_timing_test">
+<div id="NPG_pq">
+<div id="NPG_Native_tree_and__tt_pb_ds_455tt__priority_queue__tt_push_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPG" id="NPG"><img src="priority_queue_text_join_timing_test_gcc.png" alt="no image" /></a></h6>NPG: Native tree and <tt>pb ds</tt> priority queue <tt>push</tt> timing test - <a href="pq_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_pq_deque-
+<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li>
+<li>
+n_pq_vector-
+<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li>
+<li>
+binary_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a>
+</li>
+<li>
+thin_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a>
+</li>
+<li>
+rc_binomial_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a>
+</li>
+<li>
+pairing_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>
+</li>
+<li>
+binomial_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NPM_res_div">
+<div id="NPM_msvc">
+<div id="NPM_priority_queue_text_join_timing_test">
+<div id="NPM_pq">
+<div id="NPM_Native_tree_and__tt_pb_ds_455tt__priority_queue__tt_push_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPM" id="NPM"><img src="priority_queue_text_join_timing_test_msvc.png" alt="no image" /></a></h6>NPM: Native tree and <tt>pb ds</tt> priority queue <tt>push</tt> timing test - <a href="pq_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_pq_deque-
+<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li>
+<li>
+n_pq_vector-
+<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li>
+<li>
+binary_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a>
+</li>
+<li>
+thin_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a>
+</li>
+<li>
+rc_binomial_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a>
+</li>
+<li>
+pairing_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>
+</li>
+<li>
+binomial_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NPL_res_div">
+<div id="NPL_local">
+<div id="NPL_priority_queue_text_join_timing_test">
+<div id="NPL_pq">
+<div id="NPL_Native_tree_and__tt_pb_ds_455tt__priority_queue__tt_push_455tt__timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPL" id= "NPL"><img src="priority_queue_text_join_timing_test_local.png" alt="no image" /></a></h6>NPL: Native tree and <tt>pb ds</tt> priority queue <tt>push</tt> timing test - <a href = "pq_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<h2><a name="observations" id="observations">Observations</a></h2>
+<p>In this test the node-based heaps perform <tt>join</tt> in
+ either logarithmic or constant time. The binary heap requires
+ linear time, since the well-known heapify algorithm [<a href="references.html#clrs2001">clrs2001</a>] is linear.</p>
+<p>It would be possible to apply the heapify algorithm to the
+ STL containers, if they would support iteration (which they
+ don't). Barring iterators, it is still somehow possible to
+ perform linear-time merge on a <tt>std::vector</tt>-based STL
+ priority queue, using <tt>top()</tt> and <tt>size()</tt> (since
+ they are enough to expose the underlying array), but this is
+ impossible for a <tt>std::deque</tt>-based STL priority queue.
+ Without heapify, the cost is super-linear.</p>
+</div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test_gcc.png
new file mode 100644
index 000000000..a48bb3586
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test_local.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test_local.png
new file mode 100644
index 000000000..1701b4d8a
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test_msvc.png
new file mode 100644
index 000000000..0575b99c0
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test.html
new file mode 100644
index 000000000..7ece80bcf
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test.html
@@ -0,0 +1,204 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+<title>Priority Queue Text Modify (Down) Timing Test</title>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+</head>
+<body>
+<div id="page">
+<h1>Priority Queue Text <tt>modify</tt> Timing Test - II</h1>
+<h2><a name="description" id="description">Description</a></h2>
+<p>This test inserts a number of values with keys from an
+ arbitrary text ([ <a href="references.html#wickland96thirty">wickland96thirty</a> ]) into
+ into a container then modifies each one "down" (<i>i.e.,</i> it
+ makes it smaller). It uses <tt>modify</tt> for <tt>pb_ds</tt>'s
+ priority queues; for the STL's priority queues, it pops values
+ from a container until it reaches the value that should be
+ modified, then pushes values back in. It measures the average
+ time for <tt>modify</tt> as a function of the number of
+ values.</p>
+<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify_timing.cc"><tt>priority_queue_text_modify_down_timing_test</tt></a>
+ thirty_years_among_the_dead_preproc.txt 200 200 2100 f)</p>
+<h2><a name="purpose" id="purpose">Purpose</a></h2>
+<p>The main purpose of this test is to contrast <a href="priority_queue_text_modify_up_timing_test.html">Priority Queue
+ Text <tt>modify</tt> Timing Test - I</a>.</p>
+<h2><a name="results" id="results">Results</a></h2>
+<p>Figures <a href="#NPG">NPG</a>, <a href="#NPM">NPM</a>, and
+ <a href="#NPL">NPL</a> show the results for the native priority
+ queues and <tt>pb_ds</tt> 's priority queues in <a href="pq_performance_tests.html#gcc"><u>g++</u></a>, <a href="pq_performance_tests.html#msvc"><u>msvc++</u></a>, and
+ <a href="pq_performance_tests.html#local"><u>local</u></a>,
+ respectively; Figures <a href="#NRTG">NRTG</a>, <a href="#NRTM">NRTM</a>, and <a href="#NRTL">NRTL</a> show the results
+ for the pairing heap and thin heaps in <a href="pq_performance_tests.html#gcc"><u>g++</u></a>, <a href="pq_performance_tests.html#msvc"><u>msvc++</u></a>, and
+ <a href="pq_performance_tests.html#local"><u>local</u></a>,
+ respectively,</p>
+<div id="NPG_res_div">
+<div id="NPG_gcc">
+<div id="NPG_priority_queue_text_modify_down_timing_test">
+<div id="NPG_pq">
+<div id="NPG_Native_and__tt_pb_ds_455tt__priority_queue__tt_modify_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPG" id="NPG"><img src="priority_queue_text_modify_down_timing_test_gcc.png" alt="no image" /></a></h6>NPG: Native and <tt>pb ds</tt> priority queue <tt>modify</tt> timing test - <a href="pq_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_pq_deque-
+<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li>
+<li>
+n_pq_vector-
+<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li>
+<li>
+binary_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a>
+</li>
+<li>
+thin_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a>
+</li>
+<li>
+rc_binomial_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a>
+</li>
+<li>
+binomial_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a>
+</li>
+<li>
+pairing_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NPM_res_div">
+<div id="NPM_msvc">
+<div id="NPM_priority_queue_text_modify_down_timing_test">
+<div id="NPM_pq">
+<div id="NPM_Native_and__tt_pb_ds_455tt__priority_queue__tt_modify_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPM" id="NPM"><img src="priority_queue_text_modify_down_timing_test_msvc.png" alt="no image" /></a></h6>NPM: Native and <tt>pb ds</tt> priority queue <tt>modify</tt> timing test - <a href="pq_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_pq_deque-
+<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li>
+<li>
+n_pq_vector-
+<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li>
+<li>
+binary_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a>
+</li>
+<li>
+thin_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a>
+</li>
+<li>
+rc_binomial_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a>
+</li>
+<li>
+binomial_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a>
+</li>
+<li>
+pairing_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NPL_res_div">
+<div id="NPL_local">
+<div id="NPL_priority_queue_text_modify_down_timing_test">
+<div id="NPL_pq">
+<div id="NPL_Native_and__tt_pb_ds_455tt__priority_queue__tt_modify_455tt__timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPL" id= "NPL"><img src="priority_queue_text_modify_down_timing_test_local.png" alt="no image" /></a></h6>NPL: Native and <tt>pb ds</tt> priority queue <tt>modify</tt> timing test - <a href = "pq_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NRTG_res_div">
+<div id="NRTG_gcc">
+<div id="NRTG_priority_queue_text_modify_down_timing_test_pairing_thin">
+<div id="NRTG_pq">
+<div id="NRTG_Pairing_and_thin__priority_queue__tt_modify_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NRTG" id="NRTG"><img src="priority_queue_text_modify_down_timing_test_pairing_thin_gcc.png" alt="no image" /></a></h6>NRTG: Pairing and thin priority queue <tt>modify</tt> timing test - <a href="pq_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+thin_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a>
+</li>
+<li>
+pairing_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NRTM_res_div">
+<div id="NRTM_msvc">
+<div id="NRTM_priority_queue_text_modify_down_timing_test_pairing_thin">
+<div id="NRTM_pq">
+<div id="NRTM_Pairing_and_thin__priority_queue__tt_modify_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NRTM" id="NRTM"><img src="priority_queue_text_modify_down_timing_test_pairing_thin_msvc.png" alt="no image" /></a></h6>NRTM: Pairing and thin priority queue <tt>modify</tt> timing test - <a href="pq_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+thin_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a>
+</li>
+<li>
+pairing_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NRTL_res_div">
+<div id="NRTL_local">
+<div id="NRTL_priority_queue_text_modify_down_timing_test_pairing_thin">
+<div id="NRTL_pq">
+<div id="NRTL_Pairing_and_thin__priority_queue__tt_modify_455tt__timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NRTL" id= "NRTL"><img src="priority_queue_text_modify_down_timing_test_pairing_thin_local.png" alt="no image" /></a></h6>NRTL: Pairing and thin priority queue <tt>modify</tt> timing test - <a href = "pq_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<h2><a name="observations" id="observations">Observations</a></h2>
+<p>Most points in these results are similar to <a href="priority_queue_text_modify_up_timing_test.html">Priority Queue
+ Text <tt>modify</tt> Timing Test - I</a>.</p>
+<p>It is interesting to note, however, that as opposed to that
+ test, a thin heap (<a href="priority_queue.html"><tt>priority_queue</tt></a> with
+ <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a>) is
+ outperformed by a pairing heap (<a href="priority_queue.html"><tt>priority_queue</tt></a> with
+ <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>).
+ In this case, both heaps essentially perform an <tt>erase</tt>
+ operation followed by a <tt>push</tt> operation. As the other
+ tests show, a pairing heap is usually far more efficient than a
+ thin heap, so this is not surprising.</p>
+<p>Most algorithms that involve priority queues increase values
+ (in the sense of the priority queue's comparison functor), and
+ so <a href="priority_queue_text_modify_up_timing_test.html">Priority Queue
+ Text <tt>modify</tt> Timing Test - I</a> is more interesting
+ than this test.</p>
+</div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_gcc.png
new file mode 100644
index 000000000..74cbc6523
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_local.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_local.png
new file mode 100644
index 000000000..2fa9c7988
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_msvc.png
new file mode 100644
index 000000000..20b663736
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_pairing_thin_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_pairing_thin_gcc.png
new file mode 100644
index 000000000..ca901831e
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_pairing_thin_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_pairing_thin_local.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_pairing_thin_local.png
new file mode 100644
index 000000000..977d16718
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_pairing_thin_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_pairing_thin_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_pairing_thin_msvc.png
new file mode 100644
index 000000000..bf68bf992
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_pairing_thin_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test.html
new file mode 100644
index 000000000..72a1e0a75
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test.html
@@ -0,0 +1,222 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+<title>Priority Queue Text Modify (Up) Timing Test</title>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+</head>
+<body>
+<div id="page">
+<h1>Priority Queue Text <tt>modify</tt> Timing Test - I</h1>
+<h2><a name="description" id="description">Description</a></h2>
+<p>This test inserts a number of values with keys from an
+ arbitrary text ([ <a href="references.html#wickland96thirty">wickland96thirty</a> ]) into
+ into a container then modifies each one "up" (<i>i.e.,</i> it
+ makes it larger). It uses <tt>modify</tt> for <tt>pb_ds</tt>'s
+ priority queues; for the STL's priority queues, it pops values
+ from a container until it reaches the value that should be
+ modified, then pushes values back in. It measures the average
+ time for <tt>modify</tt> as a function of the number of
+ values.</p>
+<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify_timing.cc"><tt>priority_queue_text_modify_up_timing_test</tt></a>
+ thirty_years_among_the_dead_preproc.txt 200 200 2100 t)</p>
+<h2><a name="purpose" id="purpose">Purpose</a></h2>
+<p>The test checks the effect of different underlying
+ data structures (see <a href="pq_design.html#pq_imp">Design::Priority
+ Queues::Implementations</a>) for graph algorithms settings.
+ Note that making an arbitrary value larger (in the sense of the
+ priority queue's comparison functor) corresponds to
+ decrease-key in standard graph algorithms [<a href="references.html#clrs2001">clrs2001</a>].</p>
+<h2><a name="results" id="results">Results</a></h2>
+<p>Figures <a href="#NPG">NPG</a>, <a href="#NPM">NPM</a>, and
+ <a href="#NPL">NPL</a> show the results for the native priority
+ queues and <tt>pb_ds</tt> 's priority queues in <a href="pq_performance_tests.html#gcc"><u>g++</u></a>, <a href="pq_performance_tests.html#msvc"><u>msvc++</u></a>, and
+ <a href="pq_performance_tests.html#local"><u>local</u></a>,
+ respectively; Figures <a href="#NRTG">NRTG</a>, <a href="#NRTM">NRTM</a>, and <a href="#NRTL">NRTL</a> show the results
+ for the pairing heap and thin heaps in <a href="pq_performance_tests.html#gcc"><u>g++</u></a>, <a href="pq_performance_tests.html#msvc"><u>msvc++</u></a>, and
+ <a href="pq_performance_tests.html#local"><u>local</u></a>,
+ respectively,</p>
+<div id="NPG_res_div">
+<div id="NPG_gcc">
+<div id="NPG_priority_queue_text_modify_up_timing_test">
+<div id="NPG_pq">
+<div id="NPG_Native_and__tt_pb_ds_455tt__priority_queue__tt_modify_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPG" id="NPG"><img src="priority_queue_text_modify_up_timing_test_gcc.png" alt="no image" /></a></h6>NPG: Native and <tt>pb ds</tt> priority queue <tt>modify</tt> timing test - <a href="pq_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_pq_deque-
+<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li>
+<li>
+n_pq_vector-
+<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li>
+<li>
+binary_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a>
+</li>
+<li>
+rc_binomial_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a>
+</li>
+<li>
+pairing_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>
+</li>
+<li>
+binomial_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a>
+</li>
+<li>
+thin_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NPM_res_div">
+<div id="NPM_msvc">
+<div id="NPM_priority_queue_text_modify_up_timing_test">
+<div id="NPM_pq">
+<div id="NPM_Native_and__tt_pb_ds_455tt__priority_queue__tt_modify_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPM" id="NPM"><img src="priority_queue_text_modify_up_timing_test_msvc.png" alt="no image" /></a></h6>NPM: Native and <tt>pb ds</tt> priority queue <tt>modify</tt> timing test - <a href="pq_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_pq_deque-
+<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li>
+<li>
+n_pq_vector-
+<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li>
+<li>
+binary_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a>
+</li>
+<li>
+rc_binomial_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a>
+</li>
+<li>
+pairing_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>
+</li>
+<li>
+binomial_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a>
+</li>
+<li>
+thin_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NPL_res_div">
+<div id="NPL_local">
+<div id="NPL_priority_queue_text_modify_up_timing_test">
+<div id="NPL_pq">
+<div id="NPL_Native_and__tt_pb_ds_455tt__priority_queue__tt_modify_455tt__timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPL" id= "NPL"><img src="priority_queue_text_modify_up_timing_test_local.png" alt="no image" /></a></h6>NPL: Native and <tt>pb ds</tt> priority queue <tt>modify</tt> timing test - <a href = "pq_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NRTG_res_div">
+<div id="NRTG_gcc">
+<div id="NRTG_priority_queue_text_modify_up_timing_test_pairing_thin">
+<div id="NRTG_pq">
+<div id="NRTG_Pairing_and_thin__priority_queue__tt_modify_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NRTG" id="NRTG"><img src="priority_queue_text_modify_up_timing_test_pairing_thin_gcc.png" alt="no image" /></a></h6>NRTG: Pairing and thin priority queue <tt>modify</tt> timing test - <a href="pq_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+pairing_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>
+</li>
+<li>
+thin_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NRTM_res_div">
+<div id="NRTM_msvc">
+<div id="NRTM_priority_queue_text_modify_up_timing_test_pairing_thin">
+<div id="NRTM_pq">
+<div id="NRTM_Pairing_and_thin__priority_queue__tt_modify_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NRTM" id="NRTM"><img src="priority_queue_text_modify_up_timing_test_pairing_thin_msvc.png" alt="no image" /></a></h6>NRTM: Pairing and thin priority queue <tt>modify</tt> timing test - <a href="pq_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+pairing_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>
+</li>
+<li>
+thin_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NRTL_res_div">
+<div id="NRTL_local">
+<div id="NRTL_priority_queue_text_modify_up_timing_test_pairing_thin">
+<div id="NRTL_pq">
+<div id="NRTL_Pairing_and_thin__priority_queue__tt_modify_455tt__timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NRTL" id= "NRTL"><img src="priority_queue_text_modify_up_timing_test_pairing_thin_local.png" alt="no image" /></a></h6>NRTL: Pairing and thin priority queue <tt>modify</tt> timing test - <a href = "pq_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<h2><a name="observations" id="observations">Observations</a></h2>
+<p>As noted above, increasing an arbitrary value (in the sense
+ of the priority queue's comparison functor) is very common in
+ graph-related algorithms. In this case, a thin heap (<a href="priority_queue.html"><tt>priority_queue</tt></a> with
+ <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a>)
+ outperforms a pairing heap (<a href="priority_queue.html"><tt>priority_queue</tt></a> with
+ <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>).
+ Conversely, <a href="priority_queue_text_push_timing_test.html">Priority Queue Text
+ <tt>push</tt> Timing Test</a>, <a href="priority_queue_text_push_pop_timing_test.html">Priority Queue
+ Text <tt>push</tt> and <tt>pop</tt> Timing Test</a>, <a href="priority_queue_random_int_push_timing_test.html">Priority
+ Queue Random Integer <tt>push</tt> Timing Test</a>, and
+ <a href="priority_queue_random_int_push_pop_timing_test.html">Priority
+ Queue Random Integer <tt>push</tt> and <tt>pop</tt> Timing
+ Test</a> show that the situation is reversed for other
+ operations. It is not clear when to prefer one of these two
+ different types.</p>
+<p>In this test <tt>pb_ds</tt>'s binary heaps effectively
+ perform modify in linear time. As explained in <a href="pq_design.html#pq_traits">Priority Queue Design::Traits</a>,
+ given a valid point-type iterator, a binary heap can perform
+ <tt>modify</tt> logarithmically. The problem is that binary
+ heaps invalidate their find iterators with each modifying
+ operation, and so the only way to obtain a valid point-type
+ iterator is to iterate using a range-type iterator until
+ finding the appropriate value, then use the range-type iterator
+ for the <tt>modify</tt> operation.</p>
+<p>The explanation for the STL's priority queues' performance
+ is similar to that in <a href="priority_queue_text_join_timing_test.html">Priority Queue Text
+ <tt>join</tt> Timing Test</a>.</p>
+<p><a href="pq_performance_tests.html#pq_observations">Priority-Queue
+ Performance Tests::Observations</a> discusses this further and
+ summarizes.</p>
+</div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_gcc.png
new file mode 100644
index 000000000..d9dedc20c
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_local.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_local.png
new file mode 100644
index 000000000..31575b452
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_msvc.png
new file mode 100644
index 000000000..4005547c8
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_pairing_thin_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_pairing_thin_gcc.png
new file mode 100644
index 000000000..1aa5aba94
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_pairing_thin_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_pairing_thin_local.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_pairing_thin_local.png
new file mode 100644
index 000000000..b878dde66
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_pairing_thin_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_pairing_thin_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_pairing_thin_msvc.png
new file mode 100644
index 000000000..740594384
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_pairing_thin_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test.html b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test.html
new file mode 100644
index 000000000..2545fc07d
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test.html
@@ -0,0 +1,143 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+<title>Priority Queue Text Pop Memory Use Test</title>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+</head>
+<body>
+<div id="page">
+<h1>Priority Queue Text <tt>pop</tt> Memory Use Test</h1>
+<h2><a name="description" id="description">Description</a></h2>
+<p>This test inserts a number of values with keys from an
+ arbitrary text ([ <a href="references.html#wickland96thirty">wickland96thirty</a> ]) into
+ a container, then pops them until only one is left in the
+ container. It measures the memory use as a function of the
+ number of values pushed to the container.</p>
+<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/priority_queue_text_pop_mem_usage.cc"><tt>priority_queue_text_pop_mem_usage_test</tt></a>
+ thirty_years_among_the_dead_preproc.txt 200 200 2100)</p>
+<h2><a name="purpose" id="purpose">Purpose</a></h2>
+<p>The test checks the effect of different underlying
+ data structures (see <a href="pq_design.html#pq_imp">Design::Priority
+ Queues::Implementations</a>).</p>
+<h2><a name="results" id="results">Results</a></h2>
+<p>Figures <a href="#NPG">NPG</a>, <a href="#NPM">NPM</a>, and
+ <a href="#NPL">NPL</a> show the results for the native priority
+ queues and <tt>pb_ds</tt> 's priority queues in <a href="pq_performance_tests.html#gcc"><u>g++</u></a>, <a href="pq_performance_tests.html#msvc"><u>msvc++</u></a>, and
+ <a href="pq_performance_tests.html#local"><u>local</u></a>,
+ respectively.</p>
+<div id="NPG_res_div">
+<div id="NPG_gcc">
+<div id="NPG_priority_queue_text_pop_mem_usage_test">
+<div id="NPG_pq">
+<div id="NPG_Native_and__tt_pb_ds_455tt__priority_queue__tt_pop_455tt__memory-use_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPG" id="NPG"><img src="priority_queue_text_pop_mem_usage_test_gcc.png" alt="no image" /></a></h6>NPG: Native and <tt>pb ds</tt> priority queue <tt>pop</tt> memory-use test - <a href="pq_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_pq_vector-
+<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li>
+<li>
+n_pq_deque-
+<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li>
+<li>
+binary_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a>
+</li>
+<li>
+thin_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a>
+</li>
+<li>
+binomial_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a>
+</li>
+<li>
+rc_binomial_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a>
+</li>
+<li>
+pairing_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NPM_res_div">
+<div id="NPM_msvc">
+<div id="NPM_priority_queue_text_pop_mem_usage_test">
+<div id="NPM_pq">
+<div id="NPM_Native_and__tt_pb_ds_455tt__priority_queue__tt_pop_455tt__memory-use_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPM" id="NPM"><img src="priority_queue_text_pop_mem_usage_test_msvc.png" alt="no image" /></a></h6>NPM: Native and <tt>pb ds</tt> priority queue <tt>pop</tt> memory-use test - <a href="pq_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_pq_vector-
+<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li>
+<li>
+n_pq_deque-
+<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li>
+<li>
+binary_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a>
+</li>
+<li>
+thin_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a>
+</li>
+<li>
+binomial_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a>
+</li>
+<li>
+rc_binomial_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a>
+</li>
+<li>
+pairing_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NPL_res_div">
+<div id="NPL_local">
+<div id="NPL_priority_queue_text_pop_mem_usage_test">
+<div id="NPL_pq">
+<div id="NPL_Native_and__tt_pb_ds_455tt__priority_queue__tt_pop_455tt__memory-use_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPL" id= "NPL"><img src="priority_queue_text_pop_mem_usage_test_local.png" alt="no image" /></a></h6>NPL: Native and <tt>pb ds</tt> priority queue <tt>pop</tt> memory-use test - <a href = "pq_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<h2><a name="observations" id="observations">Observations</a></h2>
+<p>The priority queue implementations (excluding the STL's) use
+ memory proportionally to the number of values they hold:
+ node-based implementations (<i>e.g.</i>, a pairing heap) do so
+ naturally; <tt>pb_ds</tt>'s binary heap de-allocates memory when
+ a certain lower threshold is exceeded.</p>
+<p>Note from <a href="priority_queue_text_push_pop_timing_test.html">Priority Queue
+ Text <tt>push</tt> and <tt>pop</tt> Timing Test</a> and
+ <a href="priority_queue_random_int_push_pop_timing_test.html">Priority
+ Queue Random Integer <tt>push</tt> and <tt>pop</tt> Timing
+ Test</a> that this does not impede performance compared to the
+ STL's priority queues.</p>
+<p>(See <a href="hash_random_int_erase_mem_usage_test.html">Hash-Based Erase
+ Memory Use Test</a> for a similar phenomenon regarding priority
+ queues.)</p>
+</div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test_gcc.png
new file mode 100644
index 000000000..2c1918d06
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test_local.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test_local.png
new file mode 100644
index 000000000..c1413fc93
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test_msvc.png
new file mode 100644
index 000000000..9717f498b
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test.html
new file mode 100644
index 000000000..3c143fe5a
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test.html
@@ -0,0 +1,209 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+<title>Priority Queue Text Push Pop Timing Test</title>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+</head>
+<body>
+<div id="page">
+<h1>Priority Queue Text <tt>push</tt> and <tt>pop</tt> Timing
+ Test</h1>
+<h2><a name="description" id="description">Description</a></h2>
+<p>This test inserts a number of values with keys from an
+ arbitrary text ([ <a href="references.html#wickland96thirty">wickland96thirty</a> ]) into
+ a container using <tt>push</tt> , then removes them using
+ <tt>pop</tt> . It measures the average time for <tt>push</tt>
+ as a function of the number of values.</p>
+<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/priority_queue_text_push_pop_timing.cc"><tt>
+ priority_queue_text_push_pop_timing_test</tt></a>
+ thirty_years_among_the_dead_preproc.txt 200 200 2100)</p>
+<h2><a name="purpose" id="purpose">Purpose</a></h2>
+<p>The test checks the effect of different underlying
+ data structures (see <a href="pq_design.html#pq_imp">Design::Priority
+ Queues::Implementations</a>).</p>
+<h2><a name="results" id="results">Results</a></h2>
+<p>Figures <a href="#NPG">NPG</a>, <a href="#NPM">NPM</a>, and
+ <a href="#NPL">NPL</a> show the results for the native priority
+ queues and <tt>pb_ds</tt> 's priority queues in <a href="pq_performance_tests.html#gcc"><u>g++</u></a>, <a href="pq_performance_tests.html#msvc"><u>msvc++</u></a>, and
+ <a href="pq_performance_tests.html#local"><u>local</u></a>,
+ respectively; Figures <a href="#NBRG">NBRG</a>, <a href="#NBRM">NBRM</a>, and <a href="#NBRL">NBRL</a> show the results
+ for the native priority queues and <tt>pb_ds</tt>'s pairing
+ queues in <a href="pq_performance_tests.html#gcc"><u>g++</u></a>, <a href="pq_performance_tests.html#msvc"><u>msvc++</u></a>, and
+ <a href="pq_performance_tests.html#local"><u>local</u></a>,
+ respectively.</p>
+<div id="NPG_res_div">
+<div id="NPG_gcc">
+<div id="NPG_priority_queue_text_push_pop_timing_test">
+<div id="NPG_pq">
+<div id="NPG_Native_tree_and__tt_pb_ds_455tt__priority_queue__tt_push_455tt__and__tt_pop_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPG" id="NPG"><img src="priority_queue_text_push_pop_timing_test_gcc.png" alt="no image" /></a></h6>NPG: Native tree and <tt>pb ds</tt> priority queue <tt>push</tt> and <tt>pop</tt> timing test - <a href="pq_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_pq_vector-
+<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li>
+<li>
+n_pq_deque-
+<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li>
+<li>
+thin_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a>
+</li>
+<li>
+rc_binomial_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a>
+</li>
+<li>
+binomial_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a>
+</li>
+<li>
+binary_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a>
+</li>
+<li>
+pairing_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NPM_res_div">
+<div id="NPM_msvc">
+<div id="NPM_priority_queue_text_push_pop_timing_test">
+<div id="NPM_pq">
+<div id="NPM_Native_tree_and__tt_pb_ds_455tt__priority_queue__tt_push_455tt__and__tt_pop_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPM" id="NPM"><img src="priority_queue_text_push_pop_timing_test_msvc.png" alt="no image" /></a></h6>NPM: Native tree and <tt>pb ds</tt> priority queue <tt>push</tt> and <tt>pop</tt> timing test - <a href="pq_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_pq_deque-
+<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li>
+<li>
+n_pq_vector-
+<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li>
+<li>
+thin_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a>
+</li>
+<li>
+rc_binomial_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a>
+</li>
+<li>
+binomial_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a>
+</li>
+<li>
+pairing_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>
+</li>
+<li>
+binary_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NPL_res_div">
+<div id="NPL_local">
+<div id="NPL_priority_queue_text_push_pop_timing_test">
+<div id="NPL_pq">
+<div id="NPL_Native_tree_and__tt_pb_ds_455tt__priority_queue__tt_push_455tt__and__tt_pop_455tt__timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPL" id= "NPL"><img src="priority_queue_text_push_pop_timing_test_local.png" alt="no image" /></a></h6>NPL: Native tree and <tt>pb ds</tt> priority queue <tt>push</tt> and <tt>pop</tt> timing test - <a href = "pq_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NBRG_res_div">
+<div id="NBRG_gcc">
+<div id="NBRG_pairing_priority_queue_text_push_pop_timing_test">
+<div id="NBRG_pq">
+<div id="NBRG_Native_tree_and__tt_pb_ds_455tt__pairing_priority_queue__tt_push_455tt__and__tt_pop_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NBRG" id="NBRG"><img src="pairing_priority_queue_text_push_pop_timing_test_gcc.png" alt="no image" /></a></h6>NBRG: Native tree and <tt>pb ds</tt> pairing priority queue <tt>push</tt> and <tt>pop</tt> timing test - <a href="pq_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_pq_vector-
+<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li>
+<li>
+n_pq_deque-
+<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li>
+<li>
+pairing_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NBRM_res_div">
+<div id="NBRM_msvc">
+<div id="NBRM_pairing_priority_queue_text_push_pop_timing_test">
+<div id="NBRM_pq">
+<div id="NBRM_Native_tree_and__tt_pb_ds_455tt__pairing_priority_queue__tt_push_455tt__and__tt_pop_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NBRM" id="NBRM"><img src="pairing_priority_queue_text_push_pop_timing_test_msvc.png" alt="no image" /></a></h6>NBRM: Native tree and <tt>pb ds</tt> pairing priority queue <tt>push</tt> and <tt>pop</tt> timing test - <a href="pq_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_pq_deque-
+<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li>
+<li>
+n_pq_vector-
+<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li>
+<li>
+pairing_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NBRL_res_div">
+<div id="NBRL_local">
+<div id="NBRL_pairing_priority_queue_text_push_pop_timing_test">
+<div id="NBRL_pq">
+<div id="NBRL_Native_tree_and__tt_pb_ds_455tt__pairing_priority_queue__tt_push_455tt__and__tt_pop_455tt__timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NBRL" id= "NBRL"><img src="pairing_priority_queue_text_push_pop_timing_test_local.png" alt="no image" /></a></h6>NBRL: Native tree and <tt>pb ds</tt> pairing priority queue <tt>push</tt> and <tt>pop</tt> timing test - <a href = "pq_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<h2><a name="observations" id="observations">Observations</a></h2>
+<p>These results are very similar to <a href="priority_queue_text_push_timing_test.html">Priority Queue Text
+ <tt>push</tt> Timing Test</a>. As stated there, pairing heaps
+ (<a href="priority_queue.html"><tt>priority_queue</tt></a> with
+ <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>)
+ are most suited for <tt>push</tt> and <tt>pop</tt> sequences of
+ non-primitive types such as strings. Observing these two tests,
+ one can note that a pairing heap outperforms the others in
+ terms of <tt>push</tt> operations, but equals binary heaps
+ (<a href="priority_queue.html"><tt>priority_queue</tt></a> with
+ <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a>) if
+ the number of <tt>push</tt> and <tt>pop</tt> operations is
+ equal. As the number of <tt>pop</tt> operations is at most
+ equal to the number of <tt>push</tt> operations, pairing heaps
+ are better in this case. See <a href="priority_queue_random_int_push_pop_timing_test.html">Priority
+ Queue Random Integer <tt>push</tt> and <tt>pop</tt> Timing
+ Test</a> for a case which is different.</p>
+<p><a href="pq_performance_tests.html#pq_observations">Priority-Queue
+ Performance Tests::Observations</a> discusses this further and
+ summarizes.</p>
+</div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test_gcc.png
new file mode 100644
index 000000000..d4886ae59
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test_local.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test_local.png
new file mode 100644
index 000000000..a7c5f8987
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test_msvc.png
new file mode 100644
index 000000000..a5720402b
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test.html
new file mode 100644
index 000000000..542eb913c
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test.html
@@ -0,0 +1,219 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+<title>Priority Queue Text Push Timing Test</title>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+</head>
+<body>
+<div id="page">
+<h1>Priority Queue Text <tt>push</tt> Timing Test</h1>
+<h2><a name="description" id="description">Description</a></h2>
+<p>This test inserts a number of values with keys from an
+ arbitrary text ([ <a href="references.html#wickland96thirty">wickland96thirty</a> ]) into
+ a container using <tt>push</tt> . It measures the average time
+ for <tt>push</tt> as a function of the number of values
+ pushed.</p>
+<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/priority_queue_text_push_timing.cc"><tt>priority_queue_text_push_timing_test</tt></a>
+ thirty_years_among_the_dead_preproc.txt 200 200 2100)</p>
+<h2><a name="purpose" id="purpose">Purpose</a></h2>
+<p>The test checks the effect of different underlying
+ data structures (see <a href="pq_design.html#pq_imp">Design::Priority
+ Queues::Implementations</a>).</p>
+<h2><a name="results" id="results">Results</a></h2>
+<p>Figures <a href="#NPG">NPG</a>, <a href="#NPM">NPM</a>, and
+ <a href="#NPL">NPL</a> show the results for the native priority
+ queues and <tt>pb_ds</tt> 's priority queues in <a href="pq_performance_tests.html#gcc"><u>g++</u></a>, <a href="pq_performance_tests.html#msvc"><u>msvc++</u></a>, and
+ <a href="pq_performance_tests.html#local"><u>local</u></a>,
+ respectively; Figures <a href="#NBRG">NBRG</a>, <a href="#NBRM">NBRM</a>, and <a href="#NBRL">NBRL</a> shows the
+ results for the binary-heap based native priority queues and
+ <tt>pb_ds</tt>'s pairing-heap priority queues in <a href="pq_performance_tests.html#gcc"><u>g++</u></a>, <a href="pq_performance_tests.html#msvc"><u>msvc++</u></a>, and
+ <a href="pq_performance_tests.html#local"><u>local</u></a>,
+ respectively</p>
+<div id="NPG_res_div">
+<div id="NPG_gcc">
+<div id="NPG_priority_queue_text_push_timing_test">
+<div id="NPG_pq">
+<div id="NPG_Native_and__tt_pb_ds_455tt__priority_queue__tt_push_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPG" id="NPG"><img src="priority_queue_text_push_timing_test_gcc.png" alt="no image" /></a></h6>NPG: Native and <tt>pb ds</tt> priority queue <tt>push</tt> timing test - <a href="pq_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_pq_vector-
+<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li>
+<li>
+n_pq_deque-
+<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li>
+<li>
+binary_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a>
+</li>
+<li>
+rc_binomial_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a>
+</li>
+<li>
+thin_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a>
+</li>
+<li>
+binomial_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a>
+</li>
+<li>
+pairing_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NPM_res_div">
+<div id="NPM_msvc">
+<div id="NPM_priority_queue_text_push_timing_test">
+<div id="NPM_pq">
+<div id="NPM_Native_and__tt_pb_ds_455tt__priority_queue__tt_push_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPM" id="NPM"><img src="priority_queue_text_push_timing_test_msvc.png" alt="no image" /></a></h6>NPM: Native and <tt>pb ds</tt> priority queue <tt>push</tt> timing test - <a href="pq_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_pq_deque-
+<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li>
+<li>
+rc_binomial_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a>
+</li>
+<li>
+binary_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a>
+</li>
+<li>
+binomial_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a>
+</li>
+<li>
+n_pq_vector-
+<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li>
+<li>
+pairing_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>
+</li>
+<li>
+thin_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NPL_res_div">
+<div id="NPL_local">
+<div id="NPL_priority_queue_text_push_timing_test">
+<div id="NPL_pq">
+<div id="NPL_Native_and__tt_pb_ds_455tt__priority_queue__tt_push_455tt__timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPL" id= "NPL"><img src="priority_queue_text_push_timing_test_local.png" alt="no image" /></a></h6>NPL: Native and <tt>pb ds</tt> priority queue <tt>push</tt> timing test - <a href = "pq_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NBRG_res_div">
+<div id="NBRG_gcc">
+<div id="NBRG_pairing_priority_queue_text_push_timing_test">
+<div id="NBRG_pq">
+<div id="NBRG_Native_and__tt_pb_ds_455tt__pairing_priority_queue__tt_push_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NBRG" id="NBRG"><img src="pairing_priority_queue_text_push_timing_test_gcc.png" alt="no image" /></a></h6>NBRG: Native and <tt>pb ds</tt> pairing priority queue <tt>push</tt> timing test - <a href="pq_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_pq_vector-
+<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li>
+<li>
+n_pq_deque-
+<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li>
+<li>
+thin_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a>
+</li>
+<li>
+pairing_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NBRM_res_div">
+<div id="NBRM_msvc">
+<div id="NBRM_pairing_priority_queue_text_push_timing_test">
+<div id="NBRM_pq">
+<div id="NBRM_Native_and__tt_pb_ds_455tt__pairing_priority_queue__tt_push_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NBRM" id="NBRM"><img src="pairing_priority_queue_text_push_timing_test_msvc.png" alt="no image" /></a></h6>NBRM: Native and <tt>pb ds</tt> pairing priority queue <tt>push</tt> timing test - <a href="pq_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_pq_deque-
+<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li>
+<li>
+n_pq_vector-
+<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li>
+<li>
+pairing_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>
+</li>
+<li>
+thin_heap-
+<a href="priority_queue.html"><tt>priority_queue</tt></a>
+ with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NBRL_res_div">
+<div id="NBRL_local">
+<div id="NBRL_pairing_priority_queue_text_push_timing_test">
+<div id="NBRL_pq">
+<div id="NBRL_Native_and__tt_pb_ds_455tt__pairing_priority_queue__tt_push_455tt__timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NBRL" id= "NBRL"><img src="pairing_priority_queue_text_push_timing_test_local.png" alt="no image" /></a></h6>NBRL: Native and <tt>pb ds</tt> pairing priority queue <tt>push</tt> timing test - <a href = "pq_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<h2><a name="observations" id="observations">Observations</a></h2>
+<p>Pairing heaps (<a href="priority_queue.html"><tt>priority_queue</tt></a> with
+ <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>)
+ are the most suited for sequences of <tt>push</tt> and
+ <tt>pop</tt> operations of non-primitive types (<i>e.g.</i>
+<tt>std::string</tt>s). (see also <a href="priority_queue_text_push_pop_timing_test.html">Priority Queue
+ Text <tt>push</tt> and <tt>pop</tt> Timing Test</a>.) They are
+ less constrained than binomial heaps, <i>e.g.</i>, and since
+ they are node-based, they outperform binary heaps. (See
+ <a href="priority_queue_random_int_push_timing_test.html">Priority
+ Queue Random Integer <tt>push</tt> Timing Test</a> for the case
+ of primitive types.)</p>
+<p>The STL's priority queues do not seem to perform well in
+ this case: the <tt>std::vector</tt> implementation needs to
+ perform a logarithmic sequence of string operations for each
+ operation, and the deque implementation is possibly hampered by
+ its need to manipulate a relatively-complex type (deques
+ support a <i>O(1)</i> <tt>push_front</tt>, even though it is
+ not used by <tt>std::priority_queue</tt>.)</p>
+<p><a href="pq_performance_tests.html#pq_observations">Priority-Queue
+ Performance Tests::Observations</a> discusses this further and
+ summarizes.</p>
+</div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test_gcc.png
new file mode 100644
index 000000000..8895f507c
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test_local.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test_local.png
new file mode 100644
index 000000000..da7297bff
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test_msvc.png
new file mode 100644
index 000000000..ff39ca37d
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/quadratic_probe_fn.html b/libstdc++-v3/doc/html/ext/pb_ds/quadratic_probe_fn.html
new file mode 100644
index 000000000..00367dac8
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/quadratic_probe_fn.html
@@ -0,0 +1,141 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>quadratic_probe_fn Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>quadratic_probe_fn</tt> Interface</h1>
+
+ <p>A probe sequence policy using square increments.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/hash_policy.hpp"><tt>hash_policy.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Template Parameters</a></h2>
+
+ <table class="c1" width="100%" border="1" summary=
+ "Template Parameters">
+ <tr>
+ <td width="20%" align="left"><b>Parameter</b></td>
+
+ <td width="50%" align="left"><b>Description</b></td>
+
+ <td width="30%" align="left"><b>Default Value</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Size_Type42920436" id=
+"Size_Type42920436"><b>typename</b> Size_Type </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+
+ <td>size_t</td>
+ </tr>
+ </table>
+
+ <h2><a name="link2" id="link2">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link3" id="link3">General Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="size_type55424436" id="size_type55424436">size_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Size_Type42920436"><tt>Size_Type</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link4" id="link4">Public Methods</a></h2>
+
+ <h3><a name="link5" id="link5">Constructors, Destructor, and
+ Related</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ swap
+ (<span class=
+"c2"><tt>quadratic_probe_fn</tt></span> &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Swaps content.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link6" id="link6">Protected Methods</a></h2>
+
+ <h3><a name="link7" id="link7">Offset Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a>
+ <b>operator</b>()
+ (<a href=
+"#size_type55424436"><tt>size_type</tt></a> i) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the <span class="c1"><tt>i</tt></span>-th
+ offset from the hash value.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/random_int_find_find_timing_test_tree_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/random_int_find_find_timing_test_tree_gcc.png
new file mode 100644
index 000000000..61962704f
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/random_int_find_find_timing_test_tree_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/random_int_find_find_timing_test_tree_local.png b/libstdc++-v3/doc/html/ext/pb_ds/random_int_find_find_timing_test_tree_local.png
new file mode 100644
index 000000000..83105202a
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/random_int_find_find_timing_test_tree_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/random_int_find_find_timing_test_tree_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/random_int_find_find_timing_test_tree_msvc.png
new file mode 100644
index 000000000..2206cef5a
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/random_int_find_find_timing_test_tree_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/range_invalidation_guarantee.html b/libstdc++-v3/doc/html/ext/pb_ds/range_invalidation_guarantee.html
new file mode 100644
index 000000000..7bfba19e8
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/range_invalidation_guarantee.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>range_invalidation_guarantee Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>range_invalidation_guarantee</tt> Interface</h1>
+
+ <p>Signifies an invalidation guarantee that includes all those
+ of its base, and additionally, that any range-type iterator
+ (including the returns of begin() and end()) is in the correct
+ relative positions to other range-type iterators as long as its
+ corresponding entry has not be erased, regardless of
+ modifications to the container object.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Base Classes</a></h2>
+
+ <table class="c1" width="100%" border="1" summary="Bases">
+ <tr>
+ <td width="80%" align="left"><b>Class</b></td>
+
+ <td width="20%" align="left"><b>Derivation Type</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="point_invalidation_guarantee.html"><span class=
+"c2"><tt>point_invalidation_guarantee</tt></span></a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/rationale_null_node_updator.png b/libstdc++-v3/doc/html/ext/pb_ds/rationale_null_node_updator.png
new file mode 100644
index 000000000..438748915
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/rationale_null_node_updator.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/rb_tree_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/rb_tree_tag.html
new file mode 100644
index 000000000..2adbd09bf
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/rb_tree_tag.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>rb_tree_tag Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>rb_tree_tag</tt> Interface</h1>
+
+ <p>Red-black tree data structure tag.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Base Classes</a></h2>
+
+ <table class="c1" width="100%" border="1" summary="Bases">
+ <tr>
+ <td width="80%" align="left"><b>Class</b></td>
+
+ <td width="20%" align="left"><b>Derivation Type</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="tree_tag.html"><span class=
+"c2"><tt>tree_tag</tt></span></a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/rc_binomial_heap_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/rc_binomial_heap_tag.html
new file mode 100644
index 000000000..1a4ba9f2e
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/rc_binomial_heap_tag.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>rc_binomial_heap_tag Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>rc_binomial_heap_tag</tt> Interface</h1>
+
+ <p>Redundant-counter binomial-heap data structure tag.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Base Classes</a></h2>
+
+ <table class="c1" width="100%" border="1" summary="Bases">
+ <tr>
+ <td width="80%" align="left"><b>Class</b></td>
+
+ <td width="20%" align="left"><b>Derivation Type</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="priority_queue_tag.html"><span class=
+"c2"><tt>priority_queue_tag</tt></span></a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/references.html b/libstdc++-v3/doc/html/ext/pb_ds/references.html
new file mode 100644
index 000000000..064e92464
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/references.html
@@ -0,0 +1,258 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>References</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1>References</h1>
+
+ <ol>
+ <li>[<a name="abrahams97exception" id=
+ "abrahams97exception">abrahams97exception</a>] Dave Abrahams,
+ STL Exception Handling Contract, <a href=
+ "http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/1997/N1075.pdf">
+ http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/1997/N1075.pdf</a></li>
+
+ <li>[<a name="alexandrescu01modern" id=
+ "alexandrescu01modern">alexandrescu01modern</a>] Andrei
+ Alexandrescu, <i>Modern C++ Design: Generic Programming and
+ Design Patterns Applied</i>, Addison-Wesley Publishing
+ Company, 2001</li>
+
+ <li>[<a name="andrew04mtf" id="andrew04mtf">andrew04mtf</a>]
+ K. Andrew and D. Gleich, "MTF, Bit, and COMB: A Guide to
+ Deterministic and Randomized Algorithms for the List Update
+ Problem"</li>
+
+ <li>[<a name="austern00noset" id=
+ "austern00noset">austern00noset</a>] Matthew Austern, "Why
+ You shouldn't use <tt>set</tt> - and What You Should Use
+ Instead", C++ Report, April, 2000</li>
+
+ <li>[<a name="austern01htprop" id=
+ "austern01htprop">austern01htprop</a>] Matthew Austern, "A
+ Proposal to Add Hashtables to the Standard Library", <a href=
+ "http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2001/n1326l.html">
+ http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2001/n1326l.html</a></li>
+
+ <li>[<a name="austern98segmented" id=
+ "austern98segmented">austern98segmented</a>] Matthew Austern,
+ "Segmented iterators and hierarchical algorithms", Generic
+ Programming, April 1998, pp. 80-90</li>
+
+ <li>[<a name="boost_timer" id="boost_timer">boost_timer</a>],
+ "Boost timer library", <a href=
+ "http://www.boost.org/">http://www.boost.org</a> by Beman
+ Dawes</li>
+
+ <li>[<a name="boost_pool" id="boost_pool">boost_pool</a>],
+ "Boost pool library", <a href=
+ "http://www.boost.org/">http://www.boost.org</a> by Stephen
+ Cleary</li>
+
+ <li>[<a name="boost_type_traits" id=
+ "boost_type_traits">boost_type_traits</a>], "Boost
+ <tt>type_traits</tt> library", <a href=
+ "http://www.boost.org/">http://www.boost.org</a> by John
+ Maddock, Steve Cleary, <i>et. al.</i></li>
+
+ <li>[<a name="brodal96priority" id=
+ "brodal96priority">brodal96priority</a>] Gerth Stolting
+ Brodal, <a href=
+ "http://portal.acm.org/citation.cfm?id=313883">Worst-case
+ efficient priority queues</a></li>
+
+ <li>[<a name="bulka99efficient" id=
+ "bulka99efficient">bulka99efficient</a>] D. Bulka, and D.
+ Mayhew, "Efficient C++ Programming Techniques.",
+ Addison-Wesley Publishing Company, Addison-Wesley, 1997</li>
+
+ <li>[<a name="clrs2001" id="clrs2001">clrs2001</a>] T. H.
+ Cormen, C. E., Leiserson, R. L. Rivest, C. and Stein,
+ "Introduction to Algorithms, 2nd ed.", MIT Press, 2001</li>
+
+ <li>[<a name="dinkumware_stl" id=
+ "dinkumware_stl">dinkumware_stl</a>], "Dinkumware C++ Library
+ Reference", <a href=
+ "http://www.dinkumware.com/htm_cpl/index.html">http://www.dinkumware.com/htm_cpl/index.html</a></li>
+
+ <li>[<a name="dubhashi98neg" id=
+ "dubhashi98neg">dubhashi98neg</a>] D. Dubashi, and D. Ranjan,
+ "Balls and bins: A study in negative dependence.", Random
+ Structures and Algorithms 13, 2 (1998), 99-124</li>
+
+ <li>[<a name="fagin79extendible" id=
+ "fagin79extendible">fagin79extendible</a>] R. Fagin, J.
+ Nievergelt, N. Pippenger, and H. R. Strong, "Extendible
+ hashing - a fast access method for dynamic files", ACM Trans.
+ Database Syst. 4, 3 (1979), 315-344</li>
+
+ <li>[<a name="filliatre2000ptset" id=
+ "filliatre2000ptset">filliatre2000ptset</a>], J. C.
+ Filliatre, "Ptset: Sets of integers implemented as Patricia
+ trees", <a href=
+ "http://www.lri.fr/~filliatr/ftp/ocaml/misc/ptset.ml">http://www.lri.fr/~filliatr/ftp/ocaml/misc/ptset.ml</a></li>
+
+ <li>[<a name="fredman86pairing" id=
+ "fredman86pairing">fredman86pairing</a>], M. L. Fredman, R
+ Sedgewick, D. D. Sleator, R. E. Tarjan, <a href=
+ "http://www.cs.cmu.edu/~sleator/papers/pairing-heaps.pdf">The
+ pairing heap: a new form of self-adjusting heap</a></li>
+
+ <li>[<a name="gamma95designpatterns" id=
+ "gamma95designpatterns">gamma95designpatterns</a>] E. Gamma,
+ R. Helm, R. Johnson, and J. Vlissides, "Design Patterns -
+ Elements of Reusable Object-Oriented Software",
+ Addison-Wesley Publishing Company, Addison-Wesley, 1995</li>
+
+ <li>[<a name="garg86order" id="garg86order">garg86order</a>]
+ A. K. Garg and C. C. Gotlieb, "Order-preserving key
+ transformations", Trans. Database Syst. 11, 2 (1986),
+ 213-234</li>
+
+ <li>[<a name="hyslop02making" id=
+ "hyslop02making">hyslop02making</a>] J. Hyslop, and H.
+ Sutter, "Making a real hash of things", C++ Report, May
+ 2002</li>
+
+ <li>[<a name="jossutis01stl" id=
+ "jossutis01stl">jossutis01stl</a>] N. M. Jossutis, "The C++
+ Standard Library - A Tutorial and Reference", Addison-Wesley
+ Publishing Company, Addison-Wesley, 2001</li>
+
+ <li>[<a name="kt99fat_heaps" id=
+ "kt99fat_heaps">kt99fat_heas</a>] Haim Kaplan and Robert E.
+ Tarjan, <a href=
+ "http://www.cs.princeton.edu/research/techreps/TR-597-99">New
+ Heap Data Structures</a></li>
+
+ <li>[<a name="kleft00sets" id="kleft00sets">kleft00sets</a>]
+ Klaus Kleft and Angelika Langer, "Are Set Iterators Mutable
+ or Immutable?", C/C++ Users Jornal, October 2000</li>
+
+ <li>[<a name="knuth98sorting" id=
+ "knuth98sorting">knuth98sorting</a>] D. E. Knuth, "The Art of
+ Computer Programming - Sorting and Searching", Addison-Wesley
+ Publishing Company, Addison-Wesley, 1998</li>
+
+ <li>[<a name="liskov98data" id=
+ "liskov98data">liskov98data</a>] B. Liskov, "Data abstraction
+ and hierarchy", SIGPLAN Notices 23, 5 (May 1998)</li>
+
+ <li>[<a name="litwin80lh" id="litwin80lh">litwin80lh</a>] W.
+ Litwin, "Linear hashing: A new tool for file and table
+ addressing", Proceedings of International Conference on Very
+ Large Data Bases (June 1980), pp. 212-223</li>
+
+ <li>[<a name="maverik_lowerbounds" id=
+ "maverik_lowerbounds">maverik_lowerbounds</a>] Maverik Woo,
+ <a href=
+ "http://magic.aladdin.cs.cmu.edu/2005/08/01/deamortization-part-2-binomial-heaps/">
+ Deamortization - Part 2: Binomial Heaps</a></li>
+
+ <li>[<a name="metrowerks_stl" id=
+ "metrowerks_stl">metrowerks_stl</a>], "Metrowerks CodeWarrior
+ Pro 7 MSL C++ Reference Manual",</li>
+
+ <li>[<a name="meyers96more" id=
+ "meyers96more">meyers96more</a>] S. Meyers, "More Effective
+ C++: 35 New Ways to Improve Your Programs and Designs - 2nd
+ ed.", Addison-Wesley Publishing Company, Addison-Wesley,
+ 1996</li>
+
+ <li>[<a name="meyers00nonmember" id=
+ "meyers00nonmember">meyers00nonmember</a>] S. Meyers, "How
+ Non-Member Functions Improve Encapsulation", C/C++ Users
+ Journal, 2000</li>
+
+ <li>[<a name="meyers01stl" id="meyers01stl">meyers01stl</a>]
+ S. Meyers, "Effective STL: 50 Specific Ways to Improve Your
+ Use of the Standard Template Library", Addison-Wesley
+ Publishing Company, Addison-Wesley, 2001</li>
+
+ <li>[<a name="meyers02both" id=
+ "meyers02both">meyers02both</a>] S. Meyers, "Class Template,
+ Member Template - or Both?", C/C++ Users Journal, 2003</li>
+
+ <li>[<a name="motwani95random" id=
+ "motwani95random">motwani95random</a>] R. Motwani, and P.
+ Raghavan, "Randomized Algorithms", Cambridge University
+ Press</li>
+
+ <li>[<a name="mscom" id="mscom">mscom</a>] <a href=
+ "http://www.microsoft.com/com">COM: Component Model Object
+ Technologies</a></li>
+
+ <li>[<a name="musser95rationale" id=
+ "musser95rationale">musser95rationale</a>], David R. Musser,
+ "Rationale for Adding Hash Tables to the C++ Standard
+ Template Library"</li>
+
+ <li>[<a name="musser96stltutorial" id=
+ "musser96stltutorial">musser96stltutorial</a>] D. R. Musser
+ and A. Saini, "STL Tutorial and Reference Guide",
+ Addison-Wesley Publishing Company, Addison-Wesley, 1996</li>
+
+ <li>[<a name="nelson96stlpq" id=
+ "nelson96stlpq">nelson96stlpql</a>] Mark Nelson, <a href=
+ "http://www.dogma.net/markn/articles/pq_stl/priority.htm">Priority
+ Queues and the STL</a>, Dr. Dobbs Journal, January, 1996</li>
+
+ <li>[<a name="okasaki98mereable" id=
+ "okasaki98mereable">okasaki98mereable</a>] C. Okasaki and A.
+ Gill, "Fast mergeable integer maps", In Workshop on ML, pages
+ 77--86, September 1998. 95</li>
+
+ <li>[<a name="sgi_stl" id="sgi_stl">sgi_stl</a>] SGI,
+ "Standard Template Library Programmer's Guide", <a href=
+ "http://www.sgi.com/tech/stl/">http://www.sgi.com/tech/stl</a></li>
+
+ <li>[<a name="select_man" id="select_man">select_man</a>]
+ <a href=
+ "http://www.scit.wlv.ac.uk/cgi-bin/mansec?3C+select"><tt>select</tt>
+ man page.</a></li>
+
+ <li>[<a name="sleator84amortized" id=
+ "sleator84amortized">sleator84amortized</a>] D. D. Sleator
+ and R. E. Tarjan, "Amortized Efficiency of List Update
+ Problems", ACM Symposium on Theory of Computing, 1984</li>
+
+ <li>[<a name="sleator85self" id=
+ "sleator85self">sleator85self</a>] D. D. Sleator and R. E.
+ Tarjan, "Self-Adjusting Binary Search Trees", ACM Symposium
+ on Theory of Computing, 1985</li>
+
+ <li>[<a name="stepanov94standard" id=
+ "stepanov94standard">stepanov94standard</a>] A. A. Stepanov
+ and M. Lee", "The Standard Template Library"</li>
+
+ <li>[<a name="stroustrup97cpp" id=
+ "stroustrup97cpp">stroustrup97cpp</a>] Bjarne Stroustrup,
+ <i>The C++ Programming Langugage -3rd ed.</i>, Addison-Wesley
+ Publishing Company,Reading, MA, USA, 1997</li>
+
+ <li>[<a name="vandevoorde2002cpptemplates" id=
+ "vandevoorde2002cpptemplates">vandevoorde2002cpptemplates</a>]
+ D. Vandevoorde, and N. M. Josuttis, "C++ Templates: The
+ Complete Guide", Addison-Wesley Publishing Company,
+ Addison-Wesley, 2002</li>
+
+ <li>[<a name="wickland96thirty" id=
+ "wickland96thirty">wickland96thirty</a>] C. A. Wickland,
+ "Thirty Years Among the Dead", National Psychological
+ Institute, Los Angeles, 1996,<a href=
+ "http://myweb.wvnet.edu/~gsa00121/books/amongdead30.zip">http://myweb.wvnet.edu/gsa00121/books/amongdead30.zip</a></li>
+ </ol>
+ <hr />
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/resize_error.html b/libstdc++-v3/doc/html/ext/pb_ds/resize_error.html
new file mode 100644
index 000000000..6aab88c15
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/resize_error.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+<title>resize_error Interface</title>
+<meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+</head>
+
+<body>
+<div id="page">
+<h1><tt>resize_error</tt> Interface</h1>
+
+<p>A container cannot be resized.</p>
+
+<p>Exception thrown when a size policy cannot supply an
+ adequate size for an external resize.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/exception.hpp"><tt>exception.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Base Classes</a></h2>
+
+ <table class="c1" width="100%" border="1" summary="Bases">
+ <tr>
+ <td width="80%" align="left"><b>Class</b></td>
+
+ <td width="20%" align="left"><b>Derivation Type</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ <a href="exceptions.html"><span class=
+ "c2"><tt>resize_error</tt></span></a>
+ </pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </body>
+ </html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/resize_policy_cd.png b/libstdc++-v3/doc/html/ext/pb_ds/resize_policy_cd.png
new file mode 100644
index 000000000..338e33c15
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/resize_policy_cd.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/restoring_node_invariants.png b/libstdc++-v3/doc/html/ext/pb_ds/restoring_node_invariants.png
new file mode 100644
index 000000000..33ba84bfe
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/restoring_node_invariants.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/sample_probe_fn.html b/libstdc++-v3/doc/html/ext/pb_ds/sample_probe_fn.html
new file mode 100644
index 000000000..51dccce5c
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/sample_probe_fn.html
@@ -0,0 +1,152 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>sample_probe_fn Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>sample_probe_fn</tt> Interface</h1>
+
+ <p>A sample probe policy.</p>
+
+ <p>This class serves to show the interface a probe functor
+ needs to support.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp"><tt>sample_probe_fn.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link2" id="link2">General definitions.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="size_type55424436" id="size_type55424436">size_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+size_t, e.g.
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link3" id="link3">Public Methods</a></h2>
+
+ <h3><a name="link4" id="link4">Constructors, destructor, and
+ related.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ sample_probe_fn
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Default constructor.</p>
+
+ <p>Must be default constructable.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ sample_probe_fn
+ (<b>const</b> sample_probe_fn &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Copy constructor.</p>
+
+ <p>Must be copy constructable.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ swap
+ (sample_probe_fn &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Swaps content.</p>
+
+ <p>Must be swappable (if there is such a word).</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link5" id="link5">Protected Methods</a></h2>
+
+ <h3><a name="link6" id="link6">Offset methods.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a>
+ <b>operator</b>()
+ (const_key_reference r_key,
+ <a href=
+"#size_type55424436"><tt>size_type</tt></a> i) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the <span class="c1"><tt>i</tt></span>-th
+ offset from the hash value of some key <span class=
+ "c1"><tt>r_key</tt></span>.</p>
+
+ <p><tt>size_type</tt> is the size type on which the
+ functor operates.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/sample_range_hashing.html b/libstdc++-v3/doc/html/ext/pb_ds/sample_range_hashing.html
new file mode 100644
index 000000000..85051873c
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/sample_range_hashing.html
@@ -0,0 +1,172 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>sample_range_hashing Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>sample_range_hashing</tt> Interface</h1>
+
+ <p>A sample range-hashing functor.</p>
+
+ <p>This class serves to show the interface a range-hashing
+ functor needs to support.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp"><tt>sample_range_hashing.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link2" id="link2">General definitions.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="size_type55424436" id="size_type55424436">size_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+size_t, e.g.
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link3" id="link3">Public Methods</a></h2>
+
+ <h3><a name="link4" id="link4">Constructors, destructor, and
+ related.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ sample_range_hashing
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Default constructor.</p>
+
+ <p>Must be default constructable.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ sample_range_hashing
+ (<b>const</b> sample_range_hashing &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Copy constructor.</p>
+
+ <p>Must be copy constructable.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ swap
+ (sample_range_hashing &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Swaps content.</p>
+
+ <p>Must be swappable (if there is such a word).</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link5" id="link5">Protected Methods</a></h2>
+
+ <h3><a name="link6" id="link6">Notification methods.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ notify_resized
+ (<a href="#size_type55424436"><tt>size_type</tt></a> size)
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies the policy object that the container's size
+ has changed to <span class="c1"><tt>size</tt></span>.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link7" id="link7">Operators.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a>
+ <b>operator</b>()
+ (<a href=
+"#size_type55424436"><tt>size_type</tt></a> hash) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Transforms the hash value <span class=
+ "c1"><tt>hash</tt></span> into a ranged-hash value.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/sample_ranged_hash_fn.html b/libstdc++-v3/doc/html/ext/pb_ds/sample_ranged_hash_fn.html
new file mode 100644
index 000000000..834f49650
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/sample_ranged_hash_fn.html
@@ -0,0 +1,171 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>sample_ranged_hash_fn Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>sample_ranged_hash_fn</tt> Interface</h1>
+
+ <p>A sample ranged-hash functor.</p>
+
+ <p>This class serves to show the interface a ranged-hash
+ functor needs to support.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp"><tt>sample_ranged_hash_fn.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link2" id="link2">General definitions.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="size_type55424436" id="size_type55424436">size_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+size_t, e.g.
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link3" id="link3">Public Methods</a></h2>
+
+ <h3><a name="link4" id="link4">Constructors, destructor, and
+ related.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ sample_ranged_hash_fn
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Default constructor.</p>
+
+ <p>Must be default constructable.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ sample_ranged_hash_fn
+ (<b>const</b> sample_ranged_hash_fn &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Copy constructor.</p>
+
+ <p>Must be copy constructable.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ swap
+ (sample_ranged_hash_fn &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Swaps content.</p>
+
+ <p>Must be swappable (if there is such a word).</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link5" id="link5">Protected Methods</a></h2>
+
+ <h3><a name="link6" id="link6">Notification methods.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ notify_resized
+ (<a href="#size_type55424436"><tt>size_type</tt></a> size)
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies the policy object that the container's size
+ has changed to <span class="c1"><tt>size</tt></span>.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link7" id="link7">Operators.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a>
+ <b>operator</b>()
+ (const_key_reference r_key) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Transforms <span class="c1"><tt>r_key</tt></span> into
+ a position within the table.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/sample_ranged_probe_fn.html b/libstdc++-v3/doc/html/ext/pb_ds/sample_ranged_probe_fn.html
new file mode 100644
index 000000000..ee1bc0664
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/sample_ranged_probe_fn.html
@@ -0,0 +1,178 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>sample_ranged_probe_fn Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>sample_ranged_probe_fn</tt> Interface</h1>
+
+ <p>A sample ranged-probe functor.</p>
+
+ <p>This class serves to show the interface a ranged-probe
+ functor needs to support.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp"><tt>sample_ranged_probe_fn.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link2" id="link2">General definitions.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="size_type55424436" id="size_type55424436">size_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+size_t, e.g.
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link3" id="link3">Public Methods</a></h2>
+
+ <h3><a name="link4" id="link4">Constructors, destructor, and
+ related.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ sample_ranged_probe_fn
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Default constructor.</p>
+
+ <p>Must be default constructable.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ sample_ranged_probe_fn
+ (<b>const</b> sample_ranged_probe_fn &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Copy constructor.</p>
+
+ <p>Must be copy constructable.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ swap
+ (sample_ranged_probe_fn &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Swaps content.</p>
+
+ <p>Must be swappable (if there is such a word).</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link5" id="link5">Protected Methods</a></h2>
+
+ <h3><a name="link6" id="link6">Notification methods.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ notify_resized
+ (<a href="#size_type55424436"><tt>size_type</tt></a> size)
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies the policy object that the container's size
+ has changed to <span class="c1"><tt>size</tt></span>.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link7" id="link7">Operators.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a>
+ <b>operator</b>()
+ (const_key_reference r_key,
+ size_t hash,
+ <a href=
+"#size_type55424436"><tt>size_type</tt></a> i) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Transforms the <tt><b>const</b></tt> key reference
+ <span class="c1"><tt>r_key</tt></span> <span class=
+ "c1"><tt>into the </tt></span><span class=
+ "c1"><tt>i-th </tt></span>position within the table. This
+ method <span class="c1"><tt>i</tt></span>s called for
+ each collision within the probe sequence.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/sample_resize_policy.html b/libstdc++-v3/doc/html/ext/pb_ds/sample_resize_policy.html
new file mode 100644
index 000000000..61ff09ba0
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/sample_resize_policy.html
@@ -0,0 +1,413 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>sample_resize_policy Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>sample_resize_policy</tt> Interface</h1>
+
+ <p>A sample resize policy.</p>
+
+ <p>This class serves to show the interface a resize policy
+ needs to support.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp"><tt>sample_resize_policy.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link2" id="link2">General definitions.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="size_type55424436" id="size_type55424436">size_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+size_t, e.g.
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link3" id="link3">Public Methods</a></h2>
+
+ <h3><a name="link4" id="link4">Constructors, destructor, and
+ related.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ sample_resize_policy
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Default constructor.</p>
+
+ <p>Must be default constructable.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ sample_range_hashing
+ (<b>const</b> sample_resize_policy &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Copy constructor.</p>
+
+ <p>Must be copy constructable.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ swap
+ (sample_resize_policy &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Swaps content.</p>
+
+ <p>Must be swappable (if there is such a word).</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link5" id="link5">Protected Methods</a></h2>
+
+ <h3><a name="link6" id="link6">Insert search
+ notifications.</a></h3>
+
+ <p>Notifications called during an insert operation.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_insert_search_start
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search started.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_insert_search_collision
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search encountered a collision.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_insert_search_end
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search ended.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link7" id="link7">Find search
+ notifications.</a></h3>
+
+ <p>Notifications called during a find operation.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_find_search_start
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search started.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_find_search_collision
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search encountered a collision.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_find_search_end
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search ended.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link8" id="link8">Erase search
+ notifications.</a></h3>
+
+ <p>Notifications called during an insert operation.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_erase_search_start
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search started.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_erase_search_collision
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search encountered a collision.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_erase_search_end
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search ended.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link9" id="link9">Content change
+ notifications.</a></h3>
+
+ <p>Notifications called when the content of the table changes
+ in a way that can affect the resize policy.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_inserted
+ (<a href="#size_type55424436"><tt>size_type</tt></a> num_e)
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies an element was inserted.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_erased
+ (<a href="#size_type55424436"><tt>size_type</tt></a> num_e)
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies an element was erased.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ notify_cleared
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies the table was cleared.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link10" id="link10">Size change
+ notifications.</a></h3>
+
+ <p>Notifications called when the table changes size.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ notify_resized
+ (<a href="#size_type55424436"><tt>size_type</tt></a> new_size)
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies the table was resized to <span class=
+ "c1"><tt>new_size</tt></span>.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link11" id="link11">Queries.</a></h3>
+
+ <p>Called to query whether/how to resize.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>bool</b>
+ is_resize_needed
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Queries whether a resize is needed.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#size_type55424436"><tt>size_type</tt></a>
+ get_new_size
+ (<a href="#size_type55424436"><tt>size_type</tt></a> size,
+ <a href=
+"#size_type55424436"><tt>size_type</tt></a> num_used_e) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Queries what the new <span class=
+ "c1"><tt>size</tt></span> should be.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/sample_resize_trigger.html b/libstdc++-v3/doc/html/ext/pb_ds/sample_resize_trigger.html
new file mode 100644
index 000000000..5c8173c8e
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/sample_resize_trigger.html
@@ -0,0 +1,462 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>sample_resize_trigger Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>sample_resize_trigger</tt> Interface</h1>
+
+ <p>A sample resize trigger policy.</p>
+
+ <p>This class serves to show the interface a trigger policy
+ needs to support.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp"><tt>
+ sample_resize_trigger.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link2" id="link2">General definitions.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="size_type55424436" id="size_type55424436">size_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+size_t, e.g.
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link3" id="link3">Public Methods</a></h2>
+
+ <h3><a name="link4" id="link4">Constructors, destructor, and
+ related.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ sample_resize_trigger
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Default constructor.</p>
+
+ <p>Must be default constructable.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ sample_range_hashing
+ (<b>const</b> sample_resize_trigger &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Copy constructor.</p>
+
+ <p>Must be copy constructable.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ swap
+ (sample_resize_trigger &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Swaps content.</p>
+
+ <p>Must be swappable (if there is such a word).</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link5" id="link5">Protected Methods</a></h2>
+
+ <h3><a name="link6" id="link6">Insert search
+ notifications.</a></h3>
+
+ <p>Notifications called during an insert operation.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_insert_search_start
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search started.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_insert_search_collision
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search encountered a collision.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_insert_search_end
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search ended.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link7" id="link7">Find search
+ notifications.</a></h3>
+
+ <p>Notifications called during a find operation.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_find_search_start
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search started.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_find_search_collision
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search encountered a collision.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_find_search_end
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search ended.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link8" id="link8">Erase search
+ notifications.</a></h3>
+
+ <p>Notifications called during an insert operation.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_erase_search_start
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search started.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_erase_search_collision
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search encountered a collision.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_erase_search_end
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies a search ended.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link9" id="link9">Content change
+ notifications.</a></h3>
+
+ <p>Notifications called when the content of the table changes
+ in a way that can affect the resize policy.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_inserted
+ (<a href="#size_type55424436"><tt>size_type</tt></a> num_entries)
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies an element was inserted. the total number of
+ entries in the table is <span class=
+ "c1"><tt>num_entries</tt></span>.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ notify_erased
+ (<a href="#size_type55424436"><tt>size_type</tt></a> num_entries)
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies an element was erased.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ notify_cleared
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies the table was cleared.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link10" id="link10">Size change
+ notifications.</a></h3>
+
+ <p>Notifications called when the table changes size.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ notify_resized
+ (<a href="#size_type55424436"><tt>size_type</tt></a> new_size)
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies the table was resized as a result of this
+ object's signifying that a resize is needed.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ notify_externally_resized
+ (<a href="#size_type55424436"><tt>size_type</tt></a> new_size)
+</pre>
+ </td>
+
+ <td>
+ <p>Notifies the table was resized externally.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link11" id="link11">Queries.</a></h3>
+
+ <p>Called to query whether/how to resize.</p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>bool</b>
+ is_resize_needed
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Queries whether a resize is needed.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>bool</b>
+ is_grow_needed
+ (<a href="#size_type55424436"><tt>size_type</tt></a> size,
+ <a href=
+"#size_type55424436"><tt>size_type</tt></a> num_entries) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Queries whether a grow is needed.</p>
+
+ <p>This method is called only if this object indicated
+ resize is needed. The actual <span class=
+ "c1"><tt>size</tt></span> of the table is <span class=
+ "c1"><tt>size</tt></span>, and the number of entries in
+ it is <span class="c1"><tt>num_entries</tt></span>.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link12" id="link12">Private Methods</a></h2>
+
+ <h3><a name="link13" id="link13">Overrides.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b> <b>void</b>
+ do_resize
+ (<a href="#size_type55424436"><tt>size_type</tt></a> new_size)
+</pre>
+ </td>
+
+ <td>
+ <p>Resizes to <span class=
+ "c1"><tt>new_size</tt></span>.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/sample_size_policy.html b/libstdc++-v3/doc/html/ext/pb_ds/sample_size_policy.html
new file mode 100644
index 000000000..ebb14d30b
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/sample_size_policy.html
@@ -0,0 +1,163 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>sample_size_policy Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>sample_size_policy</tt> Interface</h1>
+
+ <p>A sample size policy.</p>
+
+ <p>This class serves to show the interface a size policy needs
+ to support.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp"><tt>sample_size_policy.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link2" id="link2">General definitions.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="size_type55424436" id="size_type55424436">size_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+size_t, e.g.
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link3" id="link3">Public Methods</a></h2>
+
+ <h3><a name="link4" id="link4">Constructors, destructor, and
+ related.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ sample_size_policy
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Default constructor.</p>
+
+ <p>Must be default constructable.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ sample_range_hashing
+ (<b>const</b> sample_size_policy &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Copy constructor.</p>
+
+ <p>Must be copy constructable.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ swap
+ (sample_size_policy &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Swaps content.</p>
+
+ <p>Must be swappable (if there is such a word).</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link5" id="link5">Protected Methods</a></h2>
+
+ <h3><a name="link6" id="link6">Size methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a>
+ get_nearest_larger_size
+ (<a href=
+"#size_type55424436"><tt>size_type</tt></a> size) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Given a size <span class="c1"><tt>size</tt></span>,
+ returns a size that is larger.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a>
+ get_nearest_smaller_size
+ (<a href=
+"#size_type55424436"><tt>size_type</tt></a> size) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Given a size <span class="c1"><tt>size</tt></span>,
+ returns a size that is smaller.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/sample_tree_node_update.html b/libstdc++-v3/doc/html/ext/pb_ds/sample_tree_node_update.html
new file mode 100644
index 000000000..aefd67056
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/sample_tree_node_update.html
@@ -0,0 +1,193 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>sample_tree_node_update Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>sample_tree_node_update</tt> Interface</h1>
+
+ <p>A sample node updater.</p>
+
+ <p>This class serves to show the interface a node update
+ functor needs to support.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp"><tt>
+ sample_tree_node_update.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Template Parameters</a></h2>
+
+ <table class="c1" width="100%" border="1" summary=
+ "Template Parameters">
+ <tr>
+ <td width="20%" align="left"><b>Parameter</b></td>
+
+ <td width="50%" align="left"><b>Description</b></td>
+
+ <td width="30%" align="left"><b>Default Value</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Const_Node_Iterator1933878761" id=
+"Const_Node_Iterator1933878761"><b>class</b> Const_Node_Iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Const node iterator type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Node_Iterator4206909839" id=
+"Node_Iterator4206909839"><b>class</b> Node_Iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Node iterator type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Cmp_Fn294335" id="Cmp_Fn294335"><b>class</b> Cmp_Fn</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Comparison functor.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Allocator35940069" id=
+"Allocator35940069"><b>class</b> Allocator</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Allocator type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+ </table>
+
+ <h2><a name="link2" id="link2">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link3" id="link3">Metadata definitions.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="metadata_type2849297114" id=
+"metadata_type2849297114">metadata_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+size_t
+</pre>
+ </td>
+
+ <td>
+ <p>Metadata type.</p>
+
+ <p>This can be any type; size_t is merely an example.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link4" id="link4">Protected Methods</a></h2>
+
+ <h3><a name="link5" id="link5">Conclassors, declassor, and
+ related.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ sample_tree_node_update
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Default constructor.</p>
+
+ <p>Must be default constructable.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link6" id="link6">Operators.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ <b>operator</b>()
+ (node_iterator node_it,
+ const_node_iterator end_nd_it) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Updates the rank of a node through a <span class=
+ "c1"><tt>node_iterator</tt></span> <span class=
+ "c1"><tt>node_it</tt></span>; <span class=
+ "c1"><tt>end_nd_it</tt></span> is the end node
+ iterator.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/sample_trie_e_access_traits.html b/libstdc++-v3/doc/html/ext/pb_ds/sample_trie_e_access_traits.html
new file mode 100644
index 000000000..a46c91b1d
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/sample_trie_e_access_traits.html
@@ -0,0 +1,231 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>sample_trie_e_access_traits Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>sample_trie_e_access_traits</tt> Interface</h1>
+
+ <p>A sample trie element-access traits.</p>
+
+ <p>This class serves to show the interface an element- access
+ traits class needs to support.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_e_access_traits.hpp">
+ <tt>sample_trie_e_access_traits.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link2" id="link2">General definitions.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="size_type55424436" id="size_type55424436">size_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+size_t, e.g.
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="key_type10393186" id="key_type10393186">key_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+std::string, e.g.
+</pre>
+ </td>
+
+ <td>
+ <p>Key type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_key_reference3185471705" id=
+"const_key_reference3185471705">const_key_reference</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+const string &amp;, e.g.
+</pre>
+ </td>
+
+ <td>
+ <p>Const key reference type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link3" id="link3">Element definitions.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_iterator98626788" id=
+"const_iterator98626788">const_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+string::const_iterator, e.g.
+</pre>
+ </td>
+
+ <td>
+ <p>Element <tt><b>const</b></tt> iterator type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="e_type393186" id="e_type393186">e_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+char, e.g.
+</pre>
+ </td>
+
+ <td>
+ <p>Element type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="max_size10483336" id="max_size10483336">max_size</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+4, e.g.
+</pre>
+ </td>
+
+ <td>
+ <p>Number of distinct elements.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link4" id="link4">Public Methods</a></h2>
+
+ <h3><a name="link5" id="link5">Access methods.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>static</b> <a href=
+"#const_iterator98626788"><tt>const_iterator</tt></a>
+ begin
+ (<a href=
+"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key)
+</pre>
+ </td>
+
+ <td>
+ <p>Returns a <a href=
+ "#const_iterator98626788"><tt>const_iterator</tt></a> to
+ the first element of <span class=
+ "c1"><tt>r_key</tt></span>.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>static</b> <a href=
+"#const_iterator98626788"><tt>const_iterator</tt></a>
+ end
+ (<a href=
+"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key)
+</pre>
+ </td>
+
+ <td>
+ <p>Returns a <a href=
+ "#const_iterator98626788"><tt>const_iterator</tt></a> to
+ the after-last element of <span class=
+ "c1"><tt>r_key</tt></span>.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>static</b> <a href=
+"#size_type55424436"><tt>size_type</tt></a>
+ e_pos
+ (<a href="#e_type393186"><tt>e_type</tt></a> e)
+</pre>
+ </td>
+
+ <td>
+ <p>Maps an <span class="c1"><tt>element</tt></span> to a
+ position.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/sample_trie_node_update.html b/libstdc++-v3/doc/html/ext/pb_ds/sample_trie_node_update.html
new file mode 100644
index 000000000..61b6b407f
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/sample_trie_node_update.html
@@ -0,0 +1,194 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>sample_trie_node_update Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>sample_trie_node_update</tt> Interface</h1>
+
+ <p>A sample node updater.</p>
+
+ <p>This class serves to show the interface a node update
+ functor needs to support.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp"><tt>
+ sample_trie_node_update.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Template Parameters</a></h2>
+
+ <table class="c1" width="100%" border="1" summary=
+ "Template Parameters">
+ <tr>
+ <td width="20%" align="left"><b>Parameter</b></td>
+
+ <td width="50%" align="left"><b>Description</b></td>
+
+ <td width="30%" align="left"><b>Default Value</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Const_Node_Iterator1933878761" id=
+"Const_Node_Iterator1933878761"><b>class</b> Const_Node_Iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Const node iterator type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Node_Iterator4206909839" id=
+"Node_Iterator4206909839"><b>class</b> Node_Iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Node iterator type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="E_Access_Traits686553840" id=
+"E_Access_Traits686553840"><b>class</b> E_Access_Traits</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Comparison functor.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Allocator35940069" id=
+"Allocator35940069"><b>class</b> Allocator</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Allocator type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+ </table>
+
+ <h2><a name="link2" id="link2">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link3" id="link3">Metadata definitions.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="metadata_type2849297114" id=
+"metadata_type2849297114">metadata_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+size_t
+</pre>
+ </td>
+
+ <td>
+ <p>Metadata type.</p>
+
+ <p>This can be any type; size_t is merely an example.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link4" id="link4">Protected Methods</a></h2>
+
+ <h3><a name="link5" id="link5">Conclassors, declassor, and
+ related.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ sample_trie_node_update
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Default constructor.</p>
+
+ <p>Must be default constructable.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link6" id="link6">Operators.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ <b>operator</b>()
+ (node_iterator node_it,
+ const_node_iterator end_nd_it) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Updates the rank of a node through a <span class=
+ "c1"><tt>node_iterator</tt></span> <span class=
+ "c1"><tt>node_it</tt></span>; <span class=
+ "c1"><tt>end_nd_it</tt></span> is the end node
+ iterator.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/sample_update_policy.html b/libstdc++-v3/doc/html/ext/pb_ds/sample_update_policy.html
new file mode 100644
index 000000000..8a286c74c
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/sample_update_policy.html
@@ -0,0 +1,178 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>sample_update_policy Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>sample_update_policy</tt> Interface</h1>
+
+ <p>A sample list-update policy.</p>
+
+ <p>This class serves to show the interface a list update
+ functor needs to support.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp"><tt>sample_update_policy.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Public Methods</a></h2>
+
+ <h3><a name="link2" id="link2">Constructors, destructor, and
+ related.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ sample_update_policy
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Default constructor.</p>
+
+ <p>Must be default constructable.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ sample_update_policy
+ (<b>const</b> sample_update_policy &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Copy constructor.</p>
+
+ <p>Must be copy constructable.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ swap
+ (sample_update_policy &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Swaps content.</p>
+
+ <p>Must be swappable (if there is such a word).</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link3" id="link3">Protected Types and
+ Constants</a></h2>
+
+ <h3><a name="link4" id="link4">Metadata definitions.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="metadata_type2849297114" id=
+"metadata_type2849297114">metadata_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+Some metadata type.
+</pre>
+ </td>
+
+ <td>
+ <p>Metadata on which this functor operates.</p>
+
+ <p>The <tt><b>class</b></tt> must declare the metadata
+ type on which it operates; the list-update based
+ containers will append to each node an object of this
+ type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link5" id="link5">Protected Methods</a></h2>
+
+ <h3><a name="link6" id="link6">Metadata operations.</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#metadata_type2849297114"><tt>metadata_type</tt></a>
+ <b>operator</b>()
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Creates a metadata object.</p>
+
+ <p>A list-update based container object will call this
+ method to create a metadata type when a node is
+ created.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>bool</b>
+ <b>operator</b>()
+ (metadata_reference r_data) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Decides whether a metadata object should be moved to
+ the front of the list. A list-update based containers
+ object will call this method to decide whether to move a
+ node to the front of the list. The method should return
+ <tt><b>true</b></tt> if the node should be moved to the
+ front of the list.</p>
+
+ <p><tt>metadata_reference</tt> is a reference to a
+ <a href=
+ "#metadata_type2849297114"><tt>metadata_type</tt></a>.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/simple_list.png b/libstdc++-v3/doc/html/ext/pb_ds/simple_list.png
new file mode 100644
index 000000000..9a05d3f5e
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/simple_list.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/splay_tree_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/splay_tree_tag.html
new file mode 100644
index 000000000..3e6a64b1c
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/splay_tree_tag.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>splay_tree_tag Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>splay_tree_tag</tt> Interface</h1>
+
+ <p>Splay tree data structure tag.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Base Classes</a></h2>
+
+ <table class="c1" width="100%" border="1" summary="Bases">
+ <tr>
+ <td width="80%" align="left"><b>Class</b></td>
+
+ <td width="20%" align="left"><b>Derivation Type</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="tree_tag.html"><span class=
+"c2"><tt>tree_tag</tt></span></a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/string_trie_e_access_traits.html b/libstdc++-v3/doc/html/ext/pb_ds/string_trie_e_access_traits.html
new file mode 100644
index 000000000..4ce9e864a
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/string_trie_e_access_traits.html
@@ -0,0 +1,400 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>string_trie_e_access_traits Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>string_trie_e_access_traits</tt> Interface</h1>
+
+ <p>Element access traits for string types.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/trie_policy.hpp"><tt>trie_policy.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Template Parameters</a></h2>
+
+ <table class="c1" width="100%" border="1" summary=
+ "Template Parameters">
+ <tr>
+ <td width="20%" align="left"><b>Parameter</b></td>
+
+ <td width="50%" align="left"><b>Description</b></td>
+
+ <td width="30%" align="left"><b>Default Value</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="String349403" id="String349403"><b>class</b> String </a>
+</pre>
+ </td>
+
+ <td>
+ <p>String type.</p>
+ </td>
+
+ <td><tt>std::string</tt></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Min_E_Val40354618" id=
+"Min_E_Val40354618"><b>typename</b> </a><a href=
+"#String349403"><tt>String</tt></a>::value_type Min_E_Val
+</pre>
+ </td>
+
+ <td>
+ <p>Minimal element.</p>
+ </td>
+
+ <td><tt>SCHAR_MIN</tt></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Max_E_Val39885868" id=
+"Max_E_Val39885868"><b>typename</b> </a><a href=
+"#String349403"><tt>String</tt></a>::value_type Max_E_Val
+</pre>
+ </td>
+
+ <td>
+ <p>Maximal element.</p>
+ </td>
+
+ <td><tt>SCHAR_MAX</tt></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Reverse1686776" id=
+"Reverse1686776"><b>bool</b> Reverse </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Indicates whether reverse iteration should be
+ used.</p>
+ </td>
+
+ <td><tt><b>false</b></tt></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Allocator35940069" id=
+"Allocator35940069"><b>class</b> Allocator </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Allocator type.</p>
+ </td>
+
+ <td>
+ <pre>
+std::allocator&lt;<b>char</b>&gt;
+</pre>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link2" id="link2">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link3" id="link3">General Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="size_type55424436" id="size_type55424436">size_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#Allocator35940069"><tt>Allocator</tt></a>::size_type
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link4" id="link4">Key-Type Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="key_type10393186" id="key_type10393186">key_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#String349403"><tt>String</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Key type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_key_reference3185471705" id=
+"const_key_reference3185471705">const_key_reference</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#Allocator35940069"><tt>Allocator</tt></a>::<b>template</b> rebind&lt;
+ <a href=
+"#key_type10393186"><tt>key_type</tt></a>&gt;::other::const_reference
+</pre>
+ </td>
+
+ <td>
+ <p>Const key reference type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link5" id="link5">Element-Type
+ Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="reverse2186776" id="reverse2186776">reverse</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Reverse1686776"><tt>Reverse</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p><a href="#Reverse1686776"><tt>Reverse</tt></a>
+ iteration indicator.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_iterator98626788" id=
+"const_iterator98626788">const_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> __gnu_pbds::detail::__conditional_type&lt;
+ <a href="#Reverse1686776"><tt>Reverse</tt></a>,
+ <b>typename</b> <a href=
+"#String349403"><tt>String</tt></a>::const_reverse_iterator,
+ <b>typename</b> <a href=
+"#String349403"><tt>String</tt></a>::const_iterator&gt;::__type
+</pre>
+ </td>
+
+ <td>
+ <p>Element <tt><b>const</b></tt> iterator type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="e_type393186" id="e_type393186">e_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> std::iterator_traits&lt;<a href=
+"#const_iterator98626788"><tt>const_iterator</tt></a>&gt;::value_type
+</pre>
+ </td>
+
+ <td>
+ <p>Element type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="min_e_val52875418" id="min_e_val52875418">min_e_val</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Min_E_Val40354618"><tt>Min_E_Val</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Minimal element.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="max_e_val52406668" id="max_e_val52406668">max_e_val</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Max_E_Val39885868"><tt>Max_E_Val</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Maximal element.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="max_size10483336" id="max_size10483336">max_size</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#max_e_val52406668"><tt>max_e_val</tt></a> - <a href=
+"#min_e_val52875418"><tt>min_e_val</tt></a> + 1
+</pre>
+ </td>
+
+ <td>
+ <p>Number of distinct elements.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link6" id="link6">Public Methods</a></h2>
+
+ <h3><a name="link7" id="link7">Access Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>static</b> <a href=
+"#const_iterator98626788"><tt>const_iterator</tt></a>
+ begin
+ (<a href=
+"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key)
+</pre>
+ </td>
+
+ <td>
+ <p>Returns a <a href=
+ "#const_iterator98626788"><tt>const_iterator</tt></a> to
+ the first element of <span class=
+ "c1"><tt>r_key</tt></span>.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>static</b> <a href=
+"#const_iterator98626788"><tt>const_iterator</tt></a>
+ end
+ (<a href=
+"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key)
+</pre>
+ </td>
+
+ <td>
+ <p>Returns a <a href=
+ "#const_iterator98626788"><tt>const_iterator</tt></a> to
+ the after-last element of <span class=
+ "c1"><tt>r_key</tt></span>.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>static</b> <a href=
+"#size_type55424436"><tt>size_type</tt></a>
+ e_pos
+ (<a href="#e_type393186"><tt>e_type</tt></a> e)
+</pre>
+ </td>
+
+ <td>
+ <p>Maps an <span class="c1"><tt>e</tt></span>element to a
+ position.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tests.html b/libstdc++-v3/doc/html/ext/pb_ds/tests.html
new file mode 100644
index 000000000..ab5d54bb4
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/tests.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>Tests</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1>Tests</h1>
+
+ <p><a href="assoc_tests.html">Associative-Container Tests</a>
+ describes tests for associative containers; <a href=
+ "pq_tests.html">Priority-Queue Tests</a> describes tests for
+ priority queues.</p>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_hash_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_hash_gcc.png
new file mode 100644
index 000000000..59247ec6a
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_hash_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_hash_local.png b/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_hash_local.png
new file mode 100644
index 000000000..d85980f30
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_hash_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_hash_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_hash_msvc.png
new file mode 100644
index 000000000..227164568
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_hash_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_tree_like_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_tree_like_gcc.png
new file mode 100644
index 000000000..8b6c4f0f0
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_tree_like_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_tree_like_local.png b/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_tree_like_local.png
new file mode 100644
index 000000000..b7fdc4746
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_tree_like_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_tree_like_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_tree_like_msvc.png
new file mode 100644
index 000000000..dc82a4e7e
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_tree_like_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/thin_heap_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/thin_heap_tag.html
new file mode 100644
index 000000000..c44189664
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/thin_heap_tag.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>thin_heap_tag Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>thin_heap_tag</tt> Interface</h1>
+
+ <p>Thin heap data structure tag.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Base Classes</a></h2>
+
+ <table class="c1" width="100%" border="1" summary="Bases">
+ <tr>
+ <td width="80%" align="left"><b>Class</b></td>
+
+ <td width="20%" align="left"><b>Derivation Type</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="priority_queue_tag.html"><span class=
+"c2"><tt>priority_queue_tag</tt></span></a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree.html b/libstdc++-v3/doc/html/ext/pb_ds/tree.html
new file mode 100644
index 000000000..3202a6e9f
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/tree.html
@@ -0,0 +1,516 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>tree Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>tree</tt> Interface</h1>
+
+ <p>A concrete basic tree-based associative container.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/assoc_container.hpp"><tt>assoc_container.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Template Parameters</a></h2>
+
+ <table class="c1" width="100%" border="1" summary=
+ "Template Parameters">
+ <tr>
+ <td width="20%" align="left"><b>Parameter</b></td>
+
+ <td width="50%" align="left"><b>Description</b></td>
+
+ <td width="30%" align="left"><b>Default Value</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Key2501" id="Key2501"><b>typename</b> Key</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Key type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Mapped318655" id="Mapped318655"><b>typename</b> Mapped</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Mapped type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Cmp_Fn294335" id="Cmp_Fn294335"><b>class</b> Cmp_Fn </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Comparison functor.</p>
+ </td>
+
+ <td>
+ <pre>
+std::less&lt;<a href="#Key2501"><tt>Key</tt></a>&gt;
+</pre>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Tag278938" id="Tag278938"><b>class</b> Tag </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Mapped-structure tag.</p>
+ </td>
+
+ <td><a href="rb_tree_tag.html"><span class=
+ "c2"><tt>rb_tree_tag</tt></span></a></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Node_Update841554648" id=
+"Node_Update841554648"><b>template</b>&lt;
+ <b>typename</b> Const_Node_Iterator,
+ <b>typename</b> Node_Iterator,
+ <b>class</b> Cmp_Fn_,
+ <b>typename</b> Allocator_&gt;
+<b>class</b> Node_Update </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Node updater type.</p>
+
+ <p><a href=
+ "tree_based_containers.html#invariants">Design::Tree-Based
+ Containers::Node Invariants</a> explains this
+ concept.</p>
+ </td>
+
+ <td><a href="null_tree_node_update.html"><span class=
+ "c2"><tt>null_tree_node_update</tt></span></a></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Allocator35940069" id=
+"Allocator35940069"><b>class</b> Allocator </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Allocator type.</p>
+ </td>
+
+ <td>
+ <pre>
+std::allocator&lt;<b>char</b>&gt;
+</pre>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link2" id="link2">Base Classes</a></h2>
+
+ <table class="c1" width="100%" border="1" summary="Bases">
+ <tr>
+ <td width="80%" align="left"><b>Class</b></td>
+
+ <td width="20%" align="left"><b>Derivation Type</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="basic_tree.html"><span class=
+"c2"><tt>basic_tree</tt></span></a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link3" id="link3">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link4" id="link4">Policy Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="cmp_fn394495" id="cmp_fn394495">cmp_fn</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Cmp_Fn294335"><tt>Cmp_Fn</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Comparison functor type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link5" id="link5">Iterator Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_node_iterator4205924553" id=
+"const_node_iterator4205924553">const_node_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href=
+"tree_const_node_iterator.html"><span class=
+"c2"><tt>const_node_iterator</tt></span></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Const node iterator.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="node_iterator3431975247" id=
+"node_iterator3431975247">node_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="tree_node_iterator.html"><span class=
+"c2"><tt>node_iterator</tt></span></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Node iterator.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link6" id="link6">Public Methods</a></h2>
+
+ <h3><a name="link7" id="link7">Constructors, Destructor, and
+ Related</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ tree
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Default constructor.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ tree
+ (<b>const</b> <a href=
+"#cmp_fn394495"><tt>cmp_fn</tt></a> &amp;r_cmp_fn)
+</pre>
+ </td>
+
+ <td>
+ <p>Constructor taking some policy objects. <span class=
+ "c1"><tt>r_cmp_fn</tt></span> will be copied by the
+ <a href="#Cmp_Fn294335"><tt>Cmp_Fn</tt></a> object of the
+ container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>template</b>&lt;
+ <b>class</b> It&gt;
+ tree
+ (It first_it,
+ It last_it)
+</pre>
+ </td>
+
+ <td>
+ <p>Constructor taking iterators to a range of
+ value_types. The value_types between <span class=
+ "c1"><tt>first_it</tt></span> and <span class=
+ "c1"><tt>last_it</tt></span> will be inserted into the
+ container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>template</b>&lt;
+ <b>class</b> It&gt;
+ tree
+ (It first_it,
+ It last_it,
+ <b>const</b> <a href=
+"#cmp_fn394495"><tt>cmp_fn</tt></a> &amp;r_cmp_fn)
+</pre>
+ </td>
+
+ <td>
+ <p>Constructor taking iterators to a range of value_types
+ and some policy objects The value_types between
+ <span class="c1"><tt>first_it</tt></span> and
+ <span class="c1"><tt>last_it</tt></span> will be inserted
+ into the container object. <span class=
+ "c1"><tt>r_cmp_fn</tt></span> will be copied by the
+ <a href="#cmp_fn394495"><tt>cmp_fn</tt></a> object of the
+ container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ tree
+ (<b>const</b> <span class=
+"c2"><tt>tree</tt></span> &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Copy constructor.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b>
+ ~tree
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Destructor.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<span class="c2"><tt>tree</tt></span> &amp;
+ <b>operator</b>=
+ (<b>const</b> <span class=
+"c2"><tt>tree</tt></span> &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Assignment operator.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ swap
+ (<span class=
+"c2"><tt>tree</tt></span> &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Swaps content.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link8" id="link8">Policy Access Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#cmp_fn394495"><tt>cmp_fn</tt></a> &amp;
+ get_cmp_fn
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Access to the <a href=
+ "#cmp_fn394495"><tt>cmp_fn</tt></a> object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>const</b> <a href="#cmp_fn394495"><tt>cmp_fn</tt></a> &amp;
+ get_cmp_fn
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Const access to the <a href=
+ "#cmp_fn394495"><tt>cmp_fn</tt></a> object.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link9" id="link9">Node-Iteration Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#node_iterator3431975247"><tt>node_iterator</tt></a>
+ node_begin
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Returns a <a href=
+ "#node_iterator3431975247"><tt>node_iterator</tt></a>
+ corresponding to the node at the root of the tree.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href=
+"#const_node_iterator4205924553"><tt>const_node_iterator</tt></a>
+ node_begin
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns a <a href=
+ "#const_node_iterator4205924553"><tt>const_node_iterator</tt></a>
+ corresponding to the node at the root of the tree.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#node_iterator3431975247"><tt>node_iterator</tt></a>
+ node_end
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Returns a <a href=
+ "#node_iterator3431975247"><tt>node_iterator</tt></a>
+ corresponding to a node just after a leaf of the
+ tree.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href=
+"#const_node_iterator4205924553"><tt>const_node_iterator</tt></a>
+ node_end
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns a <a href=
+ "#const_node_iterator4205924553"><tt>const_node_iterator</tt></a>
+ corresponding to a node just after a leaf of the
+ tree.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_based_containers.html b/libstdc++-v3/doc/html/ext/pb_ds/tree_based_containers.html
new file mode 100644
index 000000000..63c7c7482
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/tree_based_containers.html
@@ -0,0 +1,358 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>Tree-Based Containers</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1>Tree Design</h1>
+
+ <h2><a name="overview" id="overview">Overview</a></h2>
+
+ <p>The tree-based container has the following declaration:</p>
+ <pre>
+<b>template</b>&lt;
+ <b>typename</b> Key,
+ <b>typename</b> Mapped,
+ <b>typename</b> Cmp_Fn = std::less&lt;Key&gt;,
+ <b>typename</b> Tag = <a href="rb_tree_tag.html">rb_tree_tag</a>,
+ <b>template</b>&lt;
+ <b>typename</b> Const_Node_Iterator,
+ <b>typename</b> Node_Iterator,
+ <b>typename</b> Cmp_Fn_,
+ <b>typename</b> Allocator_&gt;
+ <b>class</b> Node_Update = <a href=
+"null_tree_node_update.html">null_tree_node_update</a>,
+ <b>typename</b> Allocator = std::allocator&lt;<b>char</b>&gt; &gt;
+<b>class</b> <a href=
+"tree.html">tree</a>;
+</pre>
+
+ <p>The parameters have the following meaning:</p>
+
+ <ol>
+ <li><tt>Key</tt> is the key type.</li>
+
+ <li><tt>Mapped</tt> is the mapped-policy.</li>
+
+ <li><tt>Cmp_Fn</tt> is a key comparison functor</li>
+
+ <li><tt>Tag</tt> specifies which underlying data structure
+ to use.</li>
+
+ <li><tt>Node_Update</tt> is a policy for updating node
+ invariants. This is described in <a href="#invariants">Node
+ Invariants</a>.</li>
+
+ <li><tt>Allocator</tt> is an allocator
+ type.</li>
+ </ol>
+
+ <p>The <tt>Tag</tt> parameter specifies which underlying
+ data structure to use. Instantiating it by <a href=
+ "rb_tree_tag.html"><tt>rb_tree_tag</tt></a>, <a href=
+ "splay_tree_tag.html"><tt>splay_tree_tag</tt></a>, or
+ <a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a>,
+ specifies an underlying red-black tree, splay tree, or
+ ordered-vector tree, respectively; any other tag is illegal.
+ Note that containers based on the former two contain more types
+ and methods than the latter (<i>e.g.</i>,
+ <tt>reverse_iterator</tt> and <tt>rbegin</tt>), and different
+ exception and invalidation guarantees.</p>
+
+ <h2><a name="invariants" id="invariants">Node
+ Invariants</a></h2>
+
+ <p>Consider the two trees in Figures <a href=
+ "#node_invariants">Some node invariants</a> A and B. The first
+ is a tree of floats; the second is a tree of pairs, each
+ signifying a geometric line interval. Each element in a tree is refered to as a node of the tree. Of course, each of
+ these trees can support the usual queries: the first can easily
+ search for <tt>0.4</tt>; the second can easily search for
+ <tt>std::make_pair(10, 41)</tt>.</p>
+
+ <p>Each of these trees can efficiently support other queries.
+ The first can efficiently determine that the 2rd key in the
+ tree is <tt>0.3</tt>; the second can efficiently determine
+ whether any of its intervals overlaps
+ <tt>std::make_pair(29,42)</tt> (useful in geometric
+ applications or distributed file systems with leases, for
+ example). (See <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/tree_order_statistics.cc"><tt>tree_order_statistics.cc</tt></a>
+ and <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/tree_intervals.cc"><tt>tree_intervals.cc</tt></a>
+ for examples.) It should be noted that an <tt>std::set</tt> can
+ only solve these types of problems with linear complexity.</p>
+
+ <p>In order to do so, each tree stores some <i>metadata</i> in
+ each node, and maintains node invariants <a href=
+ "references.html#clrs2001">clrs2001</a>]. The first stores in
+ each node the size of the sub-tree rooted at the node; the
+ second stores at each node the maximal endpoint of the
+ intervals at the sub-tree rooted at the node.</p>
+
+ <h6 class="c1"><a name="node_invariants" id=
+ "node_invariants"><img src="node_invariants.png" alt=
+ "no image" /></a></h6>
+
+ <h6 class="c1">Some node invariants.</h6>
+
+ <p>Supporting such trees is difficult for a number of
+ reasons:</p>
+
+ <ol>
+ <li>There must be a way to specify what a node's metadata
+ should be (if any).</li>
+
+ <li>Various operations can invalidate node invariants.
+ <i>E.g.</i>, Figure <a href=
+ "#node_invariant_invalidations">Invalidation of node
+ invariants</a> shows how a right rotation, performed on A,
+ results in B, with nodes <i>x</i> and <i>y</i> having
+ corrupted invariants (the grayed nodes in C); Figure <a href=
+ "#node_invariant_invalidations">Invalidation of node
+ invariants</a> shows how an insert, performed on D, results
+ in E, with nodes <i>x</i> and <i>y</i> having corrupted
+ invariants (the grayed nodes in F). It is not feasible to
+ know outside the tree the effect of an operation on the nodes
+ of the tree.</li>
+
+ <li>The search paths of standard associative containers are
+ defined by comparisons between keys, and not through
+ metadata.</li>
+
+ <li>It is not feasible to know in advance which methods trees
+ can support. Besides the usual <tt>find</tt> method, the
+ first tree can support a <tt>find_by_order</tt> method, while
+ the second can support an <tt>overlaps</tt> method.</li>
+ </ol>
+
+ <h6 class="c1"><a name="node_invariant_invalidations" id=
+ "node_invariant_invalidations"><img src=
+ "node_invariant_invalidations.png" alt="no image" /></a></h6>
+
+ <h6 class="c1">Invalidation of node invariants.</h6>
+
+ <p>These problems are solved by a combination of two means:
+ node iterators, and template-template node updater
+ parameters.</p>
+
+ <h3><a name="node_it" id="node_it">Node Iterators</a></h3>
+
+ <p>Each tree-based container defines two additional iterator
+ types, <a href=
+ "tree_const_node_iterator.html"><tt>const_node_iterator</tt></a>
+ and <a href=
+ "tree_node_iterator.html"><tt>node_iterator</tt></a>.
+ These iterators allow descending from a node to one of its
+ children. Node iterator allow search paths different than those
+ determined by the comparison functor. <a href=
+ "tree.html">tree</a>
+ supports the methods:</p>
+ <pre>
+ <a href="tree_const_node_iterator.html"><tt>const_node_iterator</tt></a>
+ node_begin() <b>const</b>;
+
+ <a href="tree_node_iterator.html"><tt>node_iterator</tt></a>
+ node_begin();
+
+ <a href="tree_const_node_iterator.html"><tt>const_node_iterator</tt></a>
+ node_end() <b>const</b>;
+
+ <a href="tree_node_iterator.html"><tt>node_iterator</tt></a>
+ node_end();
+</pre>
+
+ <p>The first pairs return node iterators corresponding to the
+ root node of the tree; the latter pair returns node iterators
+ corresponding to a just-after-leaf node.</p>
+
+ <h3><a name="node_up" id="node_up">Node Updater
+ (Template-Template) Parameters</a></h3>
+
+ <p>The tree-based containers are parametrized by a
+ <tt>Node_Update</tt> template-template parameter. A tree-based
+ container instantiates <tt>Node_Update</tt> to some
+ <tt>node_update</tt> class, and publicly
+ subclasses <tt>node_update</tt>. Figure
+ <a href="#tree_node_update_cd">A tree and its update
+ policy</a> shows this scheme, as well as some predefined
+ policies (which are explained below).</p>
+
+ <h6 class="c1"><a name="tree_node_update_cd" id=
+ "tree_node_update_cd"><img src=
+ "tree_node_update_policy_cd.png" alt="no image" /></a></h6>
+
+ <h6 class="c1">A tree and its update policy.</h6>
+
+ <p><tt>node_update</tt> (an instantiation of
+ <tt>Node_Update</tt>) must define <tt>metadata_type</tt> as
+ the type of metadata it requires. For order statistics,
+ <i>e.g.</i>, <tt>metadata_type</tt> might be <tt>size_t</tt>.
+ The tree defines within each node a <tt>metadata_type</tt>
+ object.</p>
+
+ <p><tt>node_update</tt> must also define the following method
+ for restoring node invariants:</p>
+ <pre>
+ void
+ operator()(<a href=
+"tree_node_iterator.html"><tt>node_iterator</tt></a> nd_it, <a href=
+"tree_const_node_iterator.html"><tt>const_node_iterator</tt></a> end_nd_it)
+</pre>
+
+ <p>In this method, <tt>nd_it</tt> is a <a href=
+ "tree_node_iterator.html"><tt>node_iterator</tt></a>
+ corresponding to a node whose A) all descendants have valid
+ invariants, and B) its own invariants might be violated;
+ <tt>end_nd_it</tt> is a <a href=
+ "tree_const_node_iterator.html"><tt>const_node_iterator</tt></a>
+ corresponding to a just-after-leaf node. This method should
+ correct the node invariants of the node pointed to by
+ <tt>nd_it</tt>. For example, say node <i>x</i> in Figure
+ <a href="#restoring_node_invariants">Restoring node
+ invariants</a>-A has an invalid invariant, but its' children,
+ <i>y</i> and <i>z</i> have valid invariants. After the
+ invocation, all three nodes should have valid invariants, as in
+ Figure <a href="#restoring_node_invariants">Restoring node
+ invariants</a>-B.</p>
+
+ <h6 class="c1"><a name="restoring_node_invariants" id=
+ "restoring_node_invariants"><img src=
+ "restoring_node_invariants.png" alt="no image" /></a></h6>
+
+ <h6 class="c1">Invalidation of node invariants.</h6>
+
+ <p>When a tree operation might invalidate some node invariant,
+ it invokes this method in its <tt>node_update</tt> base to
+ restore the invariant. For example, Figure <a href=
+ "#update_seq_diagram">Insert update sequence diagram</a> shows
+ an <tt>insert</tt> operation (point A); the tree performs some
+ operations, and calls the update functor three times (points B,
+ C, and D). (It is well known that any <tt>insert</tt>,
+ <tt>erase</tt>, <tt>split</tt> or <tt>join</tt>, can restore
+ all node invariants by a small number of node invariant updates
+ [<a href="references.html#clrs2001">clrs2001</a>].)</p>
+
+ <h6 class="c1"><a name="update_seq_diagram" id=
+ "update_seq_diagram"><img src="update_seq_diagram.png" alt=
+ "no image" /></a></h6>
+
+ <h6 class="c1">Insert update sequence diagram.</h6>
+
+ <p>To complete the description of the scheme, three questions
+ need to be answered:</p>
+
+ <ol>
+ <li>How can a tree which supports order statistics define a
+ method such as <tt>find_by_order</tt>?</li>
+
+ <li>How can the node updater base access methods of the
+ tree?</li>
+
+ <li>How can the following cyclic dependency be resolved?
+ <tt>node_update</tt> is a base class of the tree, yet it
+ uses node iterators defined in the tree (its child).</li>
+ </ol>
+
+ <p>The first two questions are answered by the fact that
+ <tt>node_update</tt> (an instantiation of
+ <tt>Node_Update</tt>) is a <tt><b>public</b></tt> base class
+ of the tree. Consequently:</p>
+
+ <ol>
+ <li>Any public methods of <tt>node_update</tt> are
+ automatically methods of the tree [<a href=
+ "references.html#alexandrescu01modern">alexandrescu01modern</a>].
+ Thus an order-statistics node updater, <a href=
+ "tree_order_statistics_node_update.html"><tt>tree_order_statistics_node_update</tt></a>
+ defines the <tt>find_by_order</tt> method; any tree
+ instantiated by this policy consequently supports this method
+ as well.</li>
+
+ <li>In C++, if a base class declares a method as
+ <tt><b>virtual</b></tt>, it is <tt><b>virtual</b></tt> in its
+ subclasses. If <tt>node_update</tt> needs to access one of
+ the tree's methods, say the member function <tt>end</tt>, it simply
+ declares that method as <tt><b>virtual</b></tt>
+ abstract.</li>
+ </ol>
+
+ <p>The cyclic dependency is solved through template-template
+ parameters. <tt>Node_Update</tt> is parametrized by the tree's node iterators, its comparison
+ functor, and its allocator type. Thus,
+ instantiations of <tt>Node_Update</tt> have all information required.</p>
+
+ <p class="c1"><tt>pb_ds</tt> assumes that constructing a metadata object and modifying it
+ are exception free. Suppose that during some method, say
+ <tt>insert</tt>, a metadata-related operation
+ (<i>e.g.</i>, changing the value of a metadata) throws an
+ exception. Ack! Rolling back the method is unusually complex.</p>
+
+ <p>In <a href=
+ "concepts.html#concepts_null_policies">Interface::Concepts::Null
+ Policy Classes</a> a distinction was made between <i>redundant
+ policies</i> and <i>null policies</i>. Node invariants show a
+ case where null policies are required.</p>
+
+ <p>Assume a regular tree is required, one which need not
+ support order statistics or interval overlap queries.
+ Seemingly, in this case a redundant policy - a policy which
+ doesn't affect nodes' contents would suffice. This, would lead
+ to the following drawbacks:</p>
+
+ <ol>
+ <li>Each node would carry a useless metadata object, wasting
+ space.</li>
+
+ <li>The tree cannot know if its <tt>Node_Update</tt> policy
+ actually modifies a node's metadata (this is halting
+ reducible). In Figure <a href=
+ "#rationale_null_node_update">Useless update path</a> ,
+ assume the shaded node is inserted. The tree would have to
+ traverse the useless path shown to the root, applying
+ redundant updates all the way.</li>
+ </ol>
+
+ <h6 class="c1"><a name="rationale_null_node_update" id=
+ "rationale_null_node_update"><img src=
+ "rationale_null_node_update.png" alt="no image" /></a></h6>
+
+ <h6 class="c1">Useless update path.</h6>
+
+ <p>A null policy class, <a href=
+ "null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+ solves both these problems. The tree detects that node
+ invariants are irrelevant, and defines all accordingly.</p>
+
+ <h2><a name="add_methods" id="add_methods">Additional
+ Methods</a></h2>
+
+ <p>Tree-based containers support split and join methods.
+ It is possible to split a tree so that it passes
+ all nodes with keys larger than a given key to a different
+ tree. These methods have the following advantages over the
+ alternative of externally inserting to the destination
+ tree and erasing from the source tree:</p>
+
+ <ol>
+ <li>These methods are efficient - red-black trees are split
+ and joined in poly-logarithmic complexity; ordered-vector
+ trees are split and joined at linear complexity. The
+ alternatives have super-linear complexity.</li>
+
+ <li>Aside from orders of growth, these operations perform
+ few allocations and de-allocations. For red-black trees, allocations are not performed,
+ and the methods are exception-free. </li>
+ </ol>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_node_iterator.html b/libstdc++-v3/doc/html/ext/pb_ds/tree_node_iterator.html
new file mode 100644
index 000000000..ba09b5b4d
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/tree_node_iterator.html
@@ -0,0 +1,143 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>tree::node_iterator Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt><span class=
+ "c2"><tt>tree</tt></span>::node_iterator</tt>
+ Interface</h1>
+
+ <p>Node iterator.</p>
+
+ <p>This is an <quote>iterator to an iterator </quote> - it
+ iterates over nodes, and de-referencing it returns one of the
+ tree's iterators</p>
+
+ <h2><a name="link1" id="link1">Base Classes</a></h2>
+
+ <table class="c1" width="100%" border="1" summary="Bases">
+ <tr>
+ <td width="80%" align="left"><b>Class</b></td>
+
+ <td width="20%" align="left"><b>Derivation Type</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href=
+"tree.html#const_node_iterator4205924553"><span class="c2"><tt>tree</tt></span>::const_node_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link2" id="link2">Public Methods</a></h2>
+
+ <h3><a name="link3" id="link3">Constructors, Destructor, and
+ Related</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b>
+ node_iterator
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Default constructor.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link4" id="link4">Access Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href=
+"container_base.html#iterator10418194"><span class=
+"c2"><tt>container_base</tt></span>::iterator</a>
+ <b>operator</b>*
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Access.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link5" id="link5">Movement Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <span class="c2"><tt>node_iterator</tt></span>
+ get_l_child
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the node iterator associated with the left
+ node.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <span class="c2"><tt>node_iterator</tt></span>
+ get_r_child
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the node iterator associated with the right
+ node.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_node_updator_policy_cd.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_node_updator_policy_cd.png
new file mode 100644
index 000000000..5cae5781a
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/tree_node_updator_policy_cd.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_node_update.html b/libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_node_update.html
new file mode 100644
index 000000000..f4345531f
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_node_update.html
@@ -0,0 +1,678 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>tree_order_statistics_node_update Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>tree_order_statistics_node_update</tt> Interface</h1>
+
+ <p>Functor updating ranks of entrees.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tree_policy.hpp"><tt>tree_policy.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Template Parameters</a></h2>
+
+ <table class="c1" width="100%" border="1" summary=
+ "Template Parameters">
+ <tr>
+ <td width="20%" align="left"><b>Parameter</b></td>
+
+ <td width="50%" align="left"><b>Description</b></td>
+
+ <td width="30%" align="left"><b>Default Value</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Const_Node_Iterator1933878761" id=
+"Const_Node_Iterator1933878761"><b>class</b> Const_Node_Iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Const node iterator type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Node_Iterator4206909839" id=
+"Node_Iterator4206909839"><b>class</b> Node_Iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Node iterator type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Cmp_Fn294335" id="Cmp_Fn294335"><b>class</b> Cmp_Fn</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Comparison functor.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Allocator35940069" id=
+"Allocator35940069"><b>class</b> Allocator</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Allocator type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+ </table>
+
+ <h2><a name="link2" id="link2">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link3" id="link3">Policy Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="cmp_fn394495" id="cmp_fn394495">cmp_fn</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Cmp_Fn294335"><tt>Cmp_Fn</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p><a href="#Allocator35940069"><tt>Allocator</tt></a>
+ type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="allocator48440069" id="allocator48440069">allocator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Allocator35940069"><tt>Allocator</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p><a href="#Allocator35940069"><tt>Allocator</tt></a>
+ type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link4" id="link4">General Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="size_type55424436" id="size_type55424436">size_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#allocator48440069"><tt>allocator</tt></a>::size_type
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link5" id="link5">Key-type Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="key_type10393186" id="key_type10393186">key_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+The instantiating container's key type.
+</pre>
+ </td>
+
+ <td>
+ <p>Key type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_key_reference3185471705" id=
+"const_key_reference3185471705">const_key_reference</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+The instantiating container's const key reference type.
+</pre>
+ </td>
+
+ <td>
+ <p>Const key reference.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link6" id="link6">Metadata-Type
+ Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="metadata_type2849297114" id=
+"metadata_type2849297114">metadata_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#size_type55424436"><tt>size_type</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Metadata type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link7" id="link7">Iterator Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_node_iterator4205924553" id=
+"const_node_iterator4205924553">const_node_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href=
+"#Const_Node_Iterator1933878761"><tt>Const_Node_Iterator</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Const node iterator type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="node_iterator3431975247" id=
+"node_iterator3431975247">node_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Node_Iterator4206909839"><tt>Node_Iterator</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Node iterator type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_iterator98626788" id=
+"const_iterator98626788">const_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#const_node_iterator4205924553"><tt>const_node_iterator</tt></a>::value_type
+</pre>
+ </td>
+
+ <td>
+ <p>Const iterator type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="iterator10418194" id="iterator10418194">iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#node_iterator3431975247"><tt>node_iterator</tt></a>::value_type
+</pre>
+ </td>
+
+ <td>
+ <p>Iterator type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link8" id="link8">Public Methods</a></h2>
+
+ <h3><a name="link9" id="link9">Find-Type Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href=
+"#const_iterator98626788"><tt>const_iterator</tt></a>
+ find_by_order
+ (<a href=
+"#size_type55424436"><tt>size_type</tt></a> order) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Finds an entry by order. Returns a <a href=
+ "#const_iterator98626788"><tt>const_iterator</tt></a> to
+ the entry with the order <span class=
+ "c1"><tt>order</tt></span>, or a <a href=
+ "#const_iterator98626788"><tt>const_iterator</tt></a> to
+ the container object's end if <span class=
+ "c1"><tt>order</tt></span> is at least the size of the
+ container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href="#iterator10418194"><tt>iterator</tt></a>
+ find_by_order
+ (<a href="#size_type55424436"><tt>size_type</tt></a> order)
+</pre>
+ </td>
+
+ <td>
+ <p>Finds an entry by order. Returns an <a href=
+ "#iterator10418194"><tt>iterator</tt></a> to the entry
+ with the order <span class="c1"><tt>order</tt></span>, or
+ an <a href="#iterator10418194"><tt>iterator</tt></a> to
+ the container object's end if <span class=
+ "c1"><tt>order</tt></span> is at least the size of the
+ container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a>
+ order_of_key
+ (<a href=
+"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the order of a key within a sequence. For
+ example, if <span class="c1"><tt>r_key</tt></span> is the
+ smallest key, this method will return 0; if <span class=
+ "c1"><tt>r_key</tt></span> is a key between the smallest
+ and next key, this method will return 1; if <span class=
+ "c1"><tt>r_key</tt></span> is a key larger than the
+ largest key, this method will return the size of r_c.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link10" id="link10">Protected Types and
+ Constants</a></h2>
+
+ <h3><a name="link11" id="link11">Value-type
+ Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_reference495461441" id=
+"const_reference495461441">const_reference</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+The instantiating container's const reference type.
+</pre>
+ </td>
+
+ <td>
+ <p>Const reference to the container's value-type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_pointer878814947" id=
+"const_pointer878814947">const_pointer</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+The instantiating container's const pointer type.
+</pre>
+ </td>
+
+ <td>
+ <p>Const pointer to the container's value-type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_metadata_reference1108857465" id=
+"const_metadata_reference1108857465">const_metadata_reference</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#Allocator35940069"><tt>Allocator</tt></a>::<b>template</b> rebind&lt;
+ <a href=
+"#metadata_type2849297114"><tt>metadata_type</tt></a>&gt;::other::<a href="#const_reference495461441"><tt>const_reference</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Const metadata reference.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="metadata_reference583863863" id=
+"metadata_reference583863863">metadata_reference</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#Allocator35940069"><tt>Allocator</tt></a>::<b>template</b> rebind&lt;
+ <a href=
+"#metadata_type2849297114"><tt>metadata_type</tt></a>&gt;::other::reference
+</pre>
+ </td>
+
+ <td>
+ <p>Metadata reference.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link12" id="link12">Protected Methods</a></h2>
+
+ <h3><a name="link13" id="link13">Operators</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ <b>operator</b>()
+ (<a href=
+"#node_iterator3431975247"><tt>node_iterator</tt></a> node_it,
+ <a href=
+"#const_node_iterator4205924553"><tt>const_node_iterator</tt></a> end_nd_it) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Updates the rank of a node through a <a href=
+ "#node_iterator3431975247"><tt>node_iterator</tt></a>
+ <span class="c1"><tt>node_it</tt></span>; <span class=
+ "c1"><tt>end_nd_it</tt></span> is the end node <a href=
+ "#iterator10418194"><tt>iterator</tt></a>.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link14" id="link14">Constructors, destructor, and
+ related</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b>
+ ~tree_order_statistics_node_update
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Destructor.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link15" id="link15">Private Methods</a></h2>
+
+ <h3><a name="link16" id="link16">Overrides</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b> <a href=
+"#const_node_iterator4205924553"><tt>const_node_iterator</tt></a>
+ node_begin
+ () <b>const</b> = 0
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the <a href=
+ "#const_node_iterator4205924553"><tt>const_node_iterator</tt></a>
+ associated with the tree's root node.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b> <a href=
+"#node_iterator3431975247"><tt>node_iterator</tt></a>
+ node_begin
+ () = 0
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the <a href=
+ "#node_iterator3431975247"><tt>node_iterator</tt></a>
+ associated with the tree's root node.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b> <a href=
+"#const_node_iterator4205924553"><tt>const_node_iterator</tt></a>
+ node_end
+ () <b>const</b> = 0
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the <a href=
+ "#const_node_iterator4205924553"><tt>const_node_iterator</tt></a>
+ associated with a just-after leaf node.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b> <a href=
+"#node_iterator3431975247"><tt>node_iterator</tt></a>
+ node_end
+ () = 0
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the <a href=
+ "#node_iterator3431975247"><tt>node_iterator</tt></a>
+ associated with a just-after leaf node.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b> <a href="#cmp_fn394495"><tt>cmp_fn</tt></a> &amp;
+ get_cmp_fn
+ () = 0
+</pre>
+ </td>
+
+ <td>
+ <p>Access to the <a href=
+ "#cmp_fn394495"><tt>cmp_fn</tt></a> object.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test.html
new file mode 100644
index 000000000..ef811613e
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test.html
@@ -0,0 +1,118 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+<title>Tree Order Statistics Timing Test</title>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+</head>
+<body>
+<div id="page">
+<h1>Tree Order-Statistics Timing Test</h1>
+<h2><a name="description" id="description">Description</a></h2>
+<p>This test creates a container, inserts random integers into
+ the the container, and then checks the order-statistics of the
+ container's values. (If the container is one of <tt>pb_ds</tt>
+ 's trees, it does this with the <tt>order_of_key</tt> method of
+ <a href="tree_order_statistics_node_update.html"><tt>tree_order_statistics_node_update</tt></a>
+ ; otherwise, it uses the <tt>find</tt> method and
+ <tt>std::distance</tt> .) It measures the average time for such
+ queries as a function of the number of values inserted.</p>
+<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/tree_order_statistics_timing.cc"><tt>tree_order_statistics_timing_test</tt></a>
+ 200 200 2100)</p>
+<h2><a name="purpose" id="purpose">Purpose</a></h2>
+<p>The test checks the performance difference of policies based
+ on node-invariant as opposed to a external functions. (see
+ <a href="tree_based_containers.html#invariants">Design::Associative
+ Containers::Tree-Based Containers::Node Invariants</a> .)</p>
+<h2><a name="results" id="results">Results</a></h2>
+<p>Figures <a href="#NTG">NTG</a>, <a href="#NTM">NTM</a>, and
+ <a href="#NTL">NTL</a> show the results for the native and
+ tree-based containers in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>, and
+ <a href="assoc_performance_tests.html#local"><u>local</u></a>,
+ respectively.</p>
+<div id="NTG_res_div">
+<div id="NTG_gcc">
+<div id="NTG_tree_order_statistics_timing_test">
+<div id="NTG_assoc">
+<div id="NTG_Native_and_tree-based_container_order-statistics_queries"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTG" id="NTG"><img src="tree_order_statistics_timing_test_gcc.png" alt="no image" /></a></h6>NTG: Native and tree-based container order-statistics queries - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_set-
+<tt>std::set</tt></li>
+<li>
+splay_tree_ost_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="tree_order_statistics_node_update.html"><tt>tree_order_statistics_node_update</tt></a>
+</li>
+<li>
+rb_tree_ost_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="tree_order_statistics_node_update.html"><tt>tree_order_statistics_node_update</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NTM_res_div">
+<div id="NTM_msvc">
+<div id="NTM_tree_order_statistics_timing_test">
+<div id="NTM_assoc">
+<div id="NTM_Native_and_tree-based_container_order-statistics_queries"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTM" id="NTM"><img src="tree_order_statistics_timing_test_msvc.png" alt="no image" /></a></h6>NTM: Native and tree-based container order-statistics queries - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_set-
+<tt>std::set</tt></li>
+<li>
+splay_tree_ost_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="tree_order_statistics_node_update.html"><tt>tree_order_statistics_node_update</tt></a>
+</li>
+<li>
+rb_tree_ost_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="tree_order_statistics_node_update.html"><tt>tree_order_statistics_node_update</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NTL_res_div">
+<div id="NTL_local">
+<div id="NTL_tree_order_statistics_timing_test">
+<div id="NTL_assoc">
+<div id="NTL_Native_and_tree-based_container_order-statistics_queries"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTL" id= "NTL"><img src="tree_order_statistics_timing_test_local.png" alt="no image" /></a></h6>NTL: Native and tree-based container order-statistics queries - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<h2><a name="observations" id="observations">Observations</a></h2>
+<p>In this test, the native red-black tree can support
+ order-statistics queries only externally, by performing a
+ <tt>find</tt> (alternatively, <tt>lower_bound</tt> or
+ <tt>upper_bound</tt> ) and then using <tt>std::distance</tt> .
+ This is clearly linear, and it is not that surprising that the
+ cost is high.</p>
+<p><tt>pb_ds</tt> 's tree-based containers use in this test the
+ <tt>order_of_key</tt> method of <a href="tree_order_statistics_node_update.html"><tt>tree_order_statistics_node_update</tt></a>.
+ This method has only linear complexity in the length of the
+ root-node path. Unfortunately, the average path of a splay tree
+ (<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag =</tt> <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a> ) can
+ be higher than logarithmic; the longest path of a red-black
+ tree (<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag =</tt> <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> ) is
+ logarithmic in the number of elements. Consequently, the splay
+ tree has worse performance than the red-black tree.</p>
+</div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test_gcc.png
new file mode 100644
index 000000000..bdb00d07a
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test_local.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test_local.png
new file mode 100644
index 000000000..2b921743f
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test_msvc.png
new file mode 100644
index 000000000..76dcbee44
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_random_int_find_find_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/tree_random_int_find_find_timing_test.html
new file mode 100644
index 000000000..c34354f3e
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/tree_random_int_find_find_timing_test.html
@@ -0,0 +1,160 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+<title>Tree Text Find Timing Test</title>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+</head>
+<body>
+<div id="page">
+<h1>Tree-Based and Trie-Based Text <tt>find</tt> Find Timing
+ Test</h1>
+<h2><a name="description" id="description">Description</a></h2>
+<p>This test inserts a number of values with keys from an
+ arbitrary text ([<a href="references.html#wickland96thirty">wickland96thirty</a>]) into
+ a container, then performs a series of finds using
+ <tt>find</tt>. It measures the average time for <tt>find</tt>
+ as a function of the number of values inserted.</p>
+<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/text_find_timing.cc"><tt>text_find_timing_test</tt></a>
+ thirty_years_among_the_dead_preproc.txt 200 200 2100)</p>
+<h2><a name="purpose" id="purpose">Purpose</a></h2>
+<p>The test checks the effect of different underlying
+ data structures.</p>
+<h2><a name="results" id="results">Results</a></h2>
+<p>Figures <a href="#NTTG">NTTG</a>, <a href="#NTTM">NTTM</a>,
+ and <a href="#NTTG">NTTL</a> show the results for the native,
+ tree-based, and trie-based types in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#local"><u>local</u></a>, and
+ <a href="assoc_performance_tests.html#local"><u>local</u></a>,
+ respectively.</p>
+<div id="NTTG_res_div">
+<div id="NTTG_gcc">
+<div id="NTTG_random_int_find_find_timing_test_tree">
+<div id="NTTG_assoc">
+<div id="NTTG_Native_456_tree-based_456_random_int_find_timing_test_using__tt_find_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTTG" id="NTTG"><img src="random_int_find_find_timing_test_tree_gcc.png" alt="no image" /></a></h6>NTTG: Native, tree-based, random int find timing test using <tt>find</tt> - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+splay_tree_map-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+</li>
+<li>
+ov_tree_map-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+</li>
+<li>
+n_map-
+<tt>std::map</tt></li>
+<li>
+rb_tree_map-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+<div id="NTTM_res_div">
+<div id="NTTM_msvc">
+<div id="NTTM_random_int_find_find_timing_test_tree">
+<div id="NTTM_assoc">
+<div id="NTTM_Native_456_tree-based_456_random_int_find_timing_test_using__tt_find_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTTM" id="NTTM"><img src="random_int_find_find_timing_test_tree_msvc.png" alt="no image" /></a></h6>NTTM: Native, tree-based, random int find timing test using <tt>find</tt> - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+splay_tree_map-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+</li>
+<li>
+ov_tree_map-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+</li>
+<li>
+n_map-
+<tt>std::map</tt></li>
+<li>
+rb_tree_map-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+<div id="NTTL_res_div">
+<div id="NTTL_local">
+<div id="NTTL_random_int_find_find_timing_test_tree">
+<div id="NTTL_assoc">
+<div id="NTTL_Native_456_tree-based_456_random_int_find_timing_test_using__tt_find_455tt_"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTTL" id= "NTTL"><img src="random_int_find_find_timing_test_tree_local.png" alt="no image" /></a></h6>NTTL: Native, tree-based, random int find timing test using <tt>find</tt> - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+<h2><a name="observations" id="observations">Observations</a></h2>
+<p>For this setting, a splay tree (<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag =</tt> <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a>)
+ does not do well. This is possibly due to two
+ reasons:</p>
+<ol>
+<li>A splay tree is not guaranteed to be balanced
+ [<a href="references.html#motwani95random">motwani95random</a>].
+ If a splay tree contains <i>n</i> nodes, its
+ average root-leaf path can be <i>m &gt;&gt;
+ log(n)</i>.</li>
+<li>Assume a specific root-leaf search path has
+ length <i>m</i>, and the search-target node has
+ distance <i>m'</i> from the root. A red-black
+ tree will require <i>m + 1</i> comparisons to
+ find the required node; a splay tree will require
+ <i>2 m'</i> comparisons. A splay tree,
+ consequently, can perform many more comparisons
+ than a red-black tree.</li>
+</ol>
+<p>An ordered-vector tree (<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag =</tt> <a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a>),
+ a red-black tree (<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag =</tt> <a href="splay_tree_tag.html"><tt>rb_tree_tag</tt></a>),
+ and the native red-black tree all share
+ approximately the same performance.</p>
+<p>An ordered-vector tree is slightly slower than
+ red-black trees, since it requires, in order to
+ find a key, more math operations than they do.
+ Conversely, an ordered-vector tree requires far
+ lower space than the others. ([<a href="references.html#austern00noset">austern00noset</a>],
+ however, seems to have an implementation that is
+ also faster than a red-black tree).</p>
+<p>A PATRICIA trie (<a href="trie.html"><tt>trie</tt></a>
+ with <tt>Tag =</tt> <a href="pat_trie_tag.html"><tt>pat_trie_tag</tt></a>)
+ has good look-up performance, due to its large
+ fan-out in this case. In this setting, a PATRICIA
+ trie has lookup performance comparable to a hash
+ table (see <a href="hash_text_find_find_timing_test.html">Hash-Based
+ Text <tt>find</tt> Find Timing Test</a>), but it is
+ order preserving. This is not that surprising,
+ since a large fan-out PATRICIA trie works like a
+ hash table with collisions resolved by a sub-trie.
+ A large fan-out PATRICIA trie does not do well on
+ modifications (see <a href="tree_text_insert_timing_test.html">Tree-Based and
+ Trie-Based Text Insert Timing Test</a>). It is
+ possibly beneficial to semi-static settings,
+ therefore.</p>
+<p><a href="assoc_performance_tests.html#tree_like_based_types">
+ Observations::Tree-Like-Based Container Types</a>
+ summarizes some observations on tree-based and
+ trie-based containers.</p>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test.html
new file mode 100644
index 000000000..9164984d1
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test.html
@@ -0,0 +1,143 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+<title>Tree Split Join Timing Test</title>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+</head>
+<body>
+<div id="page">
+<h1>Tree Split-Join Timing Test</h1>
+<h2><a name="description" id="description">Description</a></h2>
+<p>This test a container, inserts into a number of values,
+ splits the container at the median, and joins the two
+ containers. (If the containers are one of <tt>pb_ds</tt> 's
+ trees, it splits and joins with the <tt>split</tt> and
+ <tt>join</tt> method; otherwise, it uses the <tt>erase</tt> and
+ <tt>insert</tt> methods.) It measures the time for splitting
+ and joining the containers as a function of the number of
+ values inserted.</p>
+<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/tree_split_join_timing.cc"><tt>tree_split_join_timing_test</tt></a>
+ 200 200 2100)</p>
+<h2><a name="purpose" id="purpose">Purpose</a></h2>
+<p>The test checks the performance difference of <tt>join</tt>
+ as opposed to a sequence of <tt>insert</tt> operations; by
+ implication, this test checks the most efficient way to erase a
+ sub-sequence from a tree-like-based container, since this can
+ always be performed by a small sequence of splits and joins
+ (see <a href="motivation.html#assoc_split_join_methods">Motivation::Associative
+ Containers::Slightly Different Methods::Methods Related to
+ Split and Join</a> and <a href="tree_based_containers.html#add_methods">Design::Associative
+ Containers::Tree-Based Containers::Additional Methods</a>
+ .)</p>
+<h2><a name="results" id="results">Results</a></h2>
+<p>Figures <a href="#NTG">NTG</a>, <a href="#NTM">NTM</a>, and
+ <a href="#NTL">NTL</a> show the results for the native and
+ tree-based containers in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>, and
+ <a href="assoc_performance_tests.html#local"><u>local</u></a>,
+ respectively.</p>
+<div id="NTG_res_div">
+<div id="NTG_gcc">
+<div id="NTG_tree_split_join_timing_test">
+<div id="NTG_assoc">
+<div id="NTG_Native_and_tree-based_container_splits_and_joins"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTG" id="NTG"><img src="tree_split_join_timing_test_gcc.png" alt="no image" /></a></h6>NTG: Native and tree-based container splits and joins - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_set-
+<tt>std::set</tt></li>
+<li>
+splay_tree_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+</li>
+<li>
+rb_tree_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+</li>
+<li>
+ov_tree_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NTM_res_div">
+<div id="NTM_msvc">
+<div id="NTM_tree_split_join_timing_test">
+<div id="NTM_assoc">
+<div id="NTM_Native_and_tree-based_container_splits_and_joins"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTM" id="NTM"><img src="tree_split_join_timing_test_msvc.png" alt="no image" /></a></h6>NTM: Native and tree-based container splits and joins - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_set-
+<tt>std::set</tt></li>
+<li>
+splay_tree_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+</li>
+<li>
+rb_tree_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+</li>
+<li>
+ov_tree_set-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NTL_res_div">
+<div id="NTL_local">
+<div id="NTL_tree_split_join_timing_test">
+<div id="NTL_assoc">
+<div id="NTL_Native_and_tree-based_container_splits_and_joins"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTL" id= "NTL"><img src="tree_split_join_timing_test_local.png" alt="no image" /></a></h6>NTL: Native and tree-based container splits and joins - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<h2><a name="observations" id="observations">Observations</a></h2>
+<p>In this test, the native red-black trees must be split and
+ joined externally, through a sequence of <tt>erase</tt> and
+ <tt>insert</tt> operations. This is clearly super-linear, and
+ it is not that surprising that the cost is high.</p>
+<p><tt>pb_ds</tt> 's tree-based containers use in this test the
+ <tt>split</tt> and <tt>join</tt> methods, which have lower
+ complexity: the <tt>join</tt> method of a splay tree ( <a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag =</tt> <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a> ) is
+ quadratic in the length of the longest root-leaf path, and
+ linear in the total number of elements; the <tt>join</tt>
+ method of a red-black tree ( <a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag =</tt> <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> ) or an
+ ordered-vector tree ( <a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag =</tt> <a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a> ) is linear
+ in the number of elements.</p>
+<p>Asides from orders of growth, <tt>pb_ds</tt> 's trees access
+ their allocator very little in these operations, and some of
+ them do not access it at all. This leads to lower constants in
+ their complexity, and, for some containers, to exception-free
+ splits and joins (which can be determined via <a href="assoc_container_traits.html"><tt>container_traits</tt></a>).</p>
+<p>It is important to note that <tt>split</tt> and
+ <tt>join</tt> are not esoteric methods - they are the most
+ efficient means of erasing a contiguous range of values from a
+ tree based container.</p>
+</div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test_gcc.png
new file mode 100644
index 000000000..88867eca6
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test_local.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test_local.png
new file mode 100644
index 000000000..131d24a1a
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test_msvc.png
new file mode 100644
index 000000000..37ed1b2e7
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/tree_tag.html
new file mode 100644
index 000000000..d7265ac18
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/tree_tag.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>tree_tag Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>tree_tag</tt> Interface</h1>
+
+ <p>Basic tree data structure tag.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Base Classes</a></h2>
+
+ <table class="c1" width="100%" border="1" summary="Bases">
+ <tr>
+ <td width="80%" align="left"><b>Class</b></td>
+
+ <td width="20%" align="left"><b>Derivation Type</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="basic_tree_tag.html"><span class=
+"c2"><tt>basic_tree_tag</tt></span></a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_find_find_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_find_find_timing_test.html
new file mode 100644
index 000000000..fbfdfeffa
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_find_find_timing_test.html
@@ -0,0 +1,162 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+<title>Tree Text Find Timing Test</title>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+</head>
+<body>
+<div id="page">
+<h1>Tree-Based and Trie-Based Text <tt>find</tt> Find Timing
+ Test</h1>
+<h2><a name="description" id="description">Description</a></h2>
+<p>This test inserts a number of values with keys from an
+ arbitrary text ([<a href="references.html#wickland96thirty">wickland96thirty</a>]) into
+ a container, then performs a series of finds using
+ <tt>find</tt>. It measures the average time for <tt>find</tt>
+ as a function of the number of values inserted.</p>
+<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/text_find_timing.cc"><tt>text_find_timing_test</tt></a>
+ thirty_years_among_the_dead_preproc.txt 200 200 2100)</p>
+<h2><a name="purpose" id="purpose">Purpose</a></h2>
+<p>The test checks the effect of different underlying
+ data structures.</p>
+<h2><a name="results" id="results">Results</a></h2>
+<p>Figures <a href="#NTTG">NTTG</a>, <a href="#NTTM">NTTM</a>,
+ and <a href="#NTTG">NTTL</a> show the results for the native,
+ tree-based, and trie-based types in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#local"><u>local</u></a>, and
+ <a href="assoc_performance_tests.html#local"><u>local</u></a>,
+ respectively.</p>
+<div id="NTTG_res_div">
+<div id="NTTG_gcc">
+<div id="NTTG_text_find_timing_test_tree_like">
+<div id="NTTG_assoc">
+<div id="NTTG_Native_456_tree-based_456_and_trie-based_456_text_find_timing_test_using__tt_find_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTTG" id="NTTG"><img src="text_find_timing_test_tree_like_gcc.png" alt="no image" /></a></h6>NTTG: Native, tree-based, and trie-based, text find timing test using <tt>find</tt> - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+splay_tree_map-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+</li>
+<li>
+ov_tree_map-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+</li>
+<li>
+rb_tree_map-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+</li>
+<li>
+n_map-
+<tt>std::map</tt></li>
+<li>
+pat_trie_map-
+<a href="trie.html"><tt>trie</tt></a>
+ with <tt>Tag</tt> = <a href="pat_trie_tag.html"><tt>pat_trie_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_trie_node_update.html"><tt>null_trie_node_update</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NTTM_res_div">
+<div id="NTTM_msvc">
+<div id="NTTM_text_find_timing_test_tree_like">
+<div id="NTTM_assoc">
+<div id="NTTM_Native_456_tree-based_456_and_trie-based_456_text_find_timing_test_using__tt_find_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTTM" id="NTTM"><img src="text_find_timing_test_tree_like_msvc.png" alt="no image" /></a></h6>NTTM: Native, tree-based, and trie-based, text find timing test using <tt>find</tt> - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+splay_tree_map-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+</li>
+<li>
+ov_tree_map-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+</li>
+<li>
+rb_tree_map-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+</li>
+<li>
+n_map-
+<tt>std::map</tt></li>
+<li>
+pat_trie_map-
+<a href="trie.html"><tt>trie</tt></a>
+ with <tt>Tag</tt> = <a href="pat_trie_tag.html"><tt>pat_trie_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_trie_node_update.html"><tt>null_trie_node_update</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NTTL_res_div">
+<div id="NTTL_local">
+<div id="NTTL_text_find_timing_test_tree_like">
+<div id="NTTL_assoc">
+<div id="NTTL_Native_456_tree-based_456_and_trie-based_456_text_find_timing_test_using__tt_find_455tt_"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTTL" id= "NTTL"><img src="text_find_timing_test_tree_like_local.png" alt="no image" /></a></h6>NTTL: Native, tree-based, and trie-based, text find timing test using <tt>find</tt> - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<h2><a name="observations" id="observations">Observations</a></h2>
+<p>For this setting, a splay tree (<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag =</tt> <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a>) does
+ not do well. This is possibly due to two reasons:</p>
+<ol>
+<li>A splay tree is not guaranteed to be balanced [<a href="references.html#motwani95random">motwani95random</a>]. If a
+ splay tree contains <i>n</i> nodes, its average root-leaf
+ path can be <i>m &gt;&gt; log(n)</i>.</li>
+<li>Assume a specific root-leaf search path has length
+ <i>m</i>, and the search-target node has distance <i>m'</i>
+ from the root. A red-black tree will require <i>m + 1</i>
+ comparisons to find the required node; a splay tree will
+ require <i>2 m'</i> comparisons. A splay tree, consequently,
+ can perform many more comparisons than a red-black tree.</li>
+</ol>
+<p>An ordered-vector tree (<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag =</tt> <a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a>), a red-black
+ tree (<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag =</tt> <a href="splay_tree_tag.html"><tt>rb_tree_tag</tt></a>), and the
+ native red-black tree all share approximately the same
+ performance.</p>
+<p>An ordered-vector tree is slightly slower than red-black
+ trees, since it requires, in order to find a key, more math
+ operations than they do. Conversely, an ordered-vector tree
+ requires far lower space than the others. ([<a href="references.html#austern00noset">austern00noset</a>], however,
+ seems to have an implementation that is also faster than a
+ red-black tree).</p>
+<p>A PATRICIA trie (<a href="trie.html"><tt>trie</tt></a>
+ with <tt>Tag =</tt> <a href="pat_trie_tag.html"><tt>pat_trie_tag</tt></a>) has good
+ look-up performance, due to its large fan-out in this case. In
+ this setting, a PATRICIA trie has look-up performance comparable
+ to a hash table (see <a href="hash_text_find_find_timing_test.html">Hash-Based Text
+ <tt>find</tt> Find Timing Test</a>), but it is order
+ preserving. This is not that surprising, since a large-fan-out
+ PATRICIA trie works like a hash table with collisions resolved
+ by a sub-trie. A large-fan-out PATRICIA trie does not do well on
+ modifications (see <a href="tree_text_insert_timing_test.html">Tree-Based and Trie-Based
+ Text Insert Timing Test</a>). It is possibly beneficial to
+ semi-static settings, therefore.</p>
+<p><a href="assoc_performance_tests.html#tree_like_based_types">Observations::Tree-Like-Based
+ Container Types</a> summarizes some observations on tree-based
+ and trie-based containers.</p>
+</div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test.html
new file mode 100644
index 000000000..a5815fb2e
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test.html
@@ -0,0 +1,226 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+<title>Tree Text Insert Timing Test</title>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+</head>
+<body>
+<div id="page">
+<h1>Tree-Based and Trie-Based Text Insert Timing Test</h1>
+<h2><a name="description" id="description">Description</a></h2>
+<p>This test inserts a number of values with keys from an
+ arbitrary text ([ <a href="references.html#wickland96thirty">wickland96thirty</a> ]) into
+ a container using <tt>insert</tt> . It measures the average
+ time for <tt>insert</tt> as a function of the number of values
+ inserted.</p>
+<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/tree_text_insert_timing.cc"><tt>tree_text_insert_timing_test</tt></a>
+ thirty_years_among_the_dead_preproc.txt 200 200 2100)</p>
+<h2><a name="purpose" id="purpose">Purpose</a></h2>
+<p>The test checks the effect of different underlying
+ data structures.</p>
+<h2><a name="results" id="results">Results</a></h2>
+<p>Figures <a href="#NNTG">NNTG</a>, <a href="#NVTG">NVTG</a>,
+ and <a href="#NPTG">NPTG</a> show the results for the native
+ tree and <tt>pb_ds</tt>'s node-based trees, the native tree and
+ <tt>pb_ds</tt>'s vector-based trees, and the native tree
+ and<tt>pb_ds</tt>'s PATRICIA-trie, respectively, in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>; Figures
+ <a href="#NNTM">NNTM</a>, <a href="#NVTM">NVTM</a>, and
+ <a href="#NPTM">NPTM</a> show the same in <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>; Figures
+ <a href="#NNTL">NNTL</a>, <a href="#NVTL">NVTL</a>, and
+ <a href="#NPTL">NPTL</a> show the same in <a href="assoc_performance_tests.html#local"><u>local</u></a>.</p>
+<div id="NNTG_res_div">
+<div id="NNTG_gcc">
+<div id="NNTG_tree_text_insert_timing_test_node_tree">
+<div id="NNTG_assoc">
+<div id="NNTG_Native_tree_and_node-based_trees_text_insert_timing_test_using__tt_insert_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NNTG" id="NNTG"><img src="tree_text_insert_timing_test_node_tree_gcc.png" alt="no image" /></a></h6>NNTG: Native tree and node-based trees text insert timing test using <tt>insert</tt> - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+splay_tree_map-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+</li>
+<li>
+n_map-
+<tt>std::map</tt></li>
+<li>
+rb_tree_map-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NVTG_res_div">
+<div id="NVTG_gcc">
+<div id="NVTG_tree_text_insert_timing_test_vector_tree">
+<div id="NVTG_assoc">
+<div id="NVTG_Native_tree_and_vector-based_tree_text_insert_timing_test_using__tt_insert_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NVTG" id="NVTG"><img src="tree_text_insert_timing_test_vector_tree_gcc.png" alt="no image" /></a></h6>NVTG: Native tree and vector-based tree text insert timing test using <tt>insert</tt> - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+ov_tree_map-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+</li>
+<li>
+n_map-
+<tt>std::map</tt></li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NPTG_res_div">
+<div id="NPTG_gcc">
+<div id="NPTG_tree_text_insert_timing_test_pat_trie">
+<div id="NPTG_assoc">
+<div id="NPTG_Native_tree_and_PATRICIA_trie_text_insert_timing_test_using__tt_insert_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPTG" id="NPTG"><img src="tree_text_insert_timing_test_pat_trie_gcc.png" alt="no image" /></a></h6>NPTG: Native tree and PATRICIA trie text insert timing test using <tt>insert</tt> - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+n_map-
+<tt>std::map</tt></li>
+<li>
+pat_trie_map-
+<a href="trie.html"><tt>trie</tt></a>
+ with <tt>Tag</tt> = <a href="pat_trie_tag.html"><tt>pat_trie_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_trie_node_update.html"><tt>null_trie_node_update</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NNTM_res_div">
+<div id="NNTM_msvc">
+<div id="NNTM_tree_text_insert_timing_test_node_tree">
+<div id="NNTM_assoc">
+<div id="NNTM_Native_tree_and_node-based_trees_text_insert_timing_test_using__tt_insert_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NNTM" id="NNTM"><img src="tree_text_insert_timing_test_node_tree_msvc.png" alt="no image" /></a></h6>NNTM: Native tree and node-based trees text insert timing test using <tt>insert</tt> - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+splay_tree_map-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+</li>
+<li>
+n_map-
+<tt>std::map</tt></li>
+<li>
+rb_tree_map-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NVTM_res_div">
+<div id="NVTM_msvc">
+<div id="NVTM_tree_text_insert_timing_test_vector_tree">
+<div id="NVTM_assoc">
+<div id="NVTM_Native_tree_and_vector-based_tree_text_insert_timing_test_using__tt_insert_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NVTM" id="NVTM"><img src="tree_text_insert_timing_test_vector_tree_msvc.png" alt="no image" /></a></h6>NVTM: Native tree and vector-based tree text insert timing test using <tt>insert</tt> - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+ov_tree_map-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+</li>
+<li>
+n_map-
+<tt>std::map</tt></li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NPTM_res_div">
+<div id="NPTM_msvc">
+<div id="NPTM_tree_text_insert_timing_test_pat_trie">
+<div id="NPTM_assoc">
+<div id="NPTM_Native_tree_and_PATRICIA_trie_text_insert_timing_test_using__tt_insert_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPTM" id="NPTM"><img src="tree_text_insert_timing_test_pat_trie_msvc.png" alt="no image" /></a></h6>NPTM: Native tree and PATRICIA trie text insert timing test using <tt>insert</tt> - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+pat_trie_map-
+<a href="trie.html"><tt>trie</tt></a>
+ with <tt>Tag</tt> = <a href="pat_trie_tag.html"><tt>pat_trie_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_trie_node_update.html"><tt>null_trie_node_update</tt></a>
+</li>
+<li>
+n_map-
+<tt>std::map</tt></li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NNTL_res_div">
+<div id="NNTL_local">
+<div id="NNTL_tree_text_insert_timing_test_node_tree">
+<div id="NNTL_assoc">
+<div id="NNTL_Native_tree_and_node-based_trees_text_insert_timing_test_using__tt_insert_455tt_"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NNTL" id= "NNTL"><img src="tree_text_insert_timing_test_node_tree_local.png" alt="no image" /></a></h6>NNTL: Native tree and node-based trees text insert timing test using <tt>insert</tt> - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NVTL_res_div">
+<div id="NVTL_local">
+<div id="NVTL_tree_text_insert_timing_test_vector_tree">
+<div id="NVTL_assoc">
+<div id="NVTL_Native_tree_and_vector-based_tree_text_insert_timing_test_using__tt_insert_455tt_"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NVTL" id= "NVTL"><img src="tree_text_insert_timing_test_vector_tree_local.png" alt="no image" /></a></h6>NVTL: Native tree and vector-based tree text insert timing test using <tt>insert</tt> - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NPTL_res_div">
+<div id="NPTL_local">
+<div id="NPTL_tree_text_insert_timing_test_pat_trie">
+<div id="NPTL_assoc">
+<div id="NPTL_Native_tree_and_PATRICIA_trie_text_insert_timing_test_using__tt_insert_455tt_"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPTL" id= "NPTL"><img src="tree_text_insert_timing_test_pat_trie_local.png" alt="no image" /></a></h6>NPTL: Native tree and PATRICIA trie text insert timing test using <tt>insert</tt> - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<h2><a name="observations" id="observations">Observations</a></h2>
+<p>Observing Figure <a href="#NNTG">NNTG</a> , for this
+ setting, a splay tree, ( <a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag =</tt> <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a> ) does
+ not do well. This was covered in <a href="tree_text_find_find_timing_test.html">Tree-Based and
+ Trie-Based Text <tt>find</tt> Find Timing Test</a> . The two
+ red-black trees perform better.</p>
+<p>Observing Figure <a href="#NVTG">NVTG</a>, an ordered-vector
+ tree ( <a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag =</tt> <a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a>) performs
+ abysmally. Inserting into this type of tree has linear
+ complexity [ <a href="references.html#austern00noset">austern00noset</a>].</p>
+<p>Observing Figure <a href="#NPTG">NPTG</a> , A PATRICIA trie
+ ( <a href="trie.html"><tt>trie</tt></a>
+ with <tt>Tag =</tt> <a href="pat_trie_tag.html"><tt>pat_trie_tag</tt></a> ) has
+ abysmal performance, as well. This is not that surprising,
+ since a large-fan-out PATRICIA trie works like a hash table with
+ collisions resolved by a sub-trie. Each time a collision is
+ encountered, a new "hash-table" is built A large fan-out
+ PATRICIA trie, however, doe does well in look-ups (see <a href="tree_text_find_find_timing_test.html">Tree-Based and
+ Trie-Based Text <tt>find</tt> Find Timing Test</a> ). It is
+ possibly beneficial to semi-static settings, therefore.</p>
+<p><a href="assoc_performance_tests.html#tree_like_based_types">Observations::Tree-Like-Based
+ Container Types</a> summarizes some observations on tree-based
+ and trie-based containers.</p>
+</div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_node_tree_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_node_tree_gcc.png
new file mode 100644
index 000000000..22d8f6fc2
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_node_tree_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_node_tree_local.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_node_tree_local.png
new file mode 100644
index 000000000..bb100084b
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_node_tree_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_node_tree_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_node_tree_msvc.png
new file mode 100644
index 000000000..18b219851
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_node_tree_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_pat_trie_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_pat_trie_gcc.png
new file mode 100644
index 000000000..5fe063e63
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_pat_trie_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_pat_trie_local.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_pat_trie_local.png
new file mode 100644
index 000000000..228de1442
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_pat_trie_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_pat_trie_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_pat_trie_msvc.png
new file mode 100644
index 000000000..9f13db0c0
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_pat_trie_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_vector_tree_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_vector_tree_gcc.png
new file mode 100644
index 000000000..dd85dcd7c
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_vector_tree_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_vector_tree_local.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_vector_tree_local.png
new file mode 100644
index 000000000..cecb8a107
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_vector_tree_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_vector_tree_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_vector_tree_msvc.png
new file mode 100644
index 000000000..8c0731391
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_vector_tree_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_find_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_find_timing_test.html
new file mode 100644
index 000000000..c577a56db
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_find_timing_test.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+<title>Tree Text Locality of Reference Find Timing Test</title>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+</head>
+<body>
+<div id="page">
+<h1>Tree-Based Locality-of-Reference Text <tt>find</tt> Find
+ Timing Test</h1>
+<h2><a name="description" id="description">Description</a></h2>
+<p>This test inserts a number of values with keys from an
+ arbitrary text ([ <a href="references.html#wickland96thirty">wickland96thirty</a> ]) into
+ a container, then performs a series of finds using
+ <tt>find</tt> . It is different than <a href="tree_text_find_find_timing_test.html">Tree-Based and
+ Trie-Based Text <tt>find</tt> Find Timing Test</a> in the
+ sequence of finds it performs: this test performs multiple
+ <tt>find</tt> s on the same key before moving on to the next
+ key. It measures the average time for <tt>find</tt> as a
+ function of the number of values inserted.</p>
+<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/tree_text_lor_find_timing.cc"><tt>tree_text_lor_find_timing_test</tt></a>
+ thirty_years_among_the_dead_preproc.txt 200 200 2100)</p>
+<h2><a name="purpose" id="purpose">Purpose</a></h2>
+<p>The test checks the effect of different underlying
+ data structures in a locality-of-reference setting.</p>
+<h2><a name="results" id="results">Results</a></h2>
+<p>Figures <a href="#NTG">NTG</a>, <a href="#NTM">NTM</a>, and
+ <a href="#NTL">NTL</a> show the results for the native and
+ <tt>pb_ds</tt> tree-based types in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a> and
+ <a href="assoc_performance_tests.html#local"><u>local</u></a>,
+ respectively.</p>
+<div id="NTG_res_div">
+<div id="NTG_gcc">
+<div id="NTG_tree_text_lor_find_timing_test">
+<div id="NTG_assoc">
+<div id="NTG_Native_and_tree-based_locality-of-reference_text_find_timing_test_using__tt_find_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTG" id="NTG"><img src="tree_text_lor_find_timing_test_gcc.png" alt="no image" /></a></h6>NTG: Native and tree-based locality-of-reference text find timing test using <tt>find</tt> - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+ov_tree_map-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+</li>
+<li>
+rb_tree_map-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+</li>
+<li>
+n_map-
+<tt>std::map</tt></li>
+<li>
+splay_tree_map-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NTM_res_div">
+<div id="NTM_msvc">
+<div id="NTM_tree_text_lor_find_timing_test">
+<div id="NTM_assoc">
+<div id="NTM_Native_and_tree-based_locality-of-reference_text_find_timing_test_using__tt_find_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTM" id="NTM"><img src="tree_text_lor_find_timing_test_msvc.png" alt="no image" /></a></h6>NTM: Native and tree-based locality-of-reference text find timing test using <tt>find</tt> - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p>
+<ol>
+<li>
+ov_tree_map-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+</li>
+<li>
+rb_tree_map-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+</li>
+<li>
+n_map-
+<tt>std::map</tt></li>
+<li>
+splay_tree_map-
+<a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag</tt> = <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a>
+, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a>
+</li>
+</ol>
+</div><div style="width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<div id="NTL_res_div">
+<div id="NTL_local">
+<div id="NTL_tree_text_lor_find_timing_test">
+<div id="NTL_assoc">
+<div id="NTL_Native_and_tree-based_locality-of-reference_text_find_timing_test_using__tt_find_455tt_"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTL" id= "NTL"><img src="tree_text_lor_find_timing_test_local.png" alt="no image" /></a></h6>NTL: Native and tree-based locality-of-reference text find timing test using <tt>find</tt> - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div>
+</div>
+</div>
+</div>
+</div>
+<h2><a name="observations" id="observations">Observations</a></h2>
+<p>For this setting, an ordered-vector tree ( <a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag =</tt> <a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a> ), a
+ red-black tree ( <a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag =</tt> <a href="splay_tree_tag.html"><tt>rb_tree_tag</tt></a> ), and the
+ native red-black tree all share approximately the same
+ performance.</p>
+<p>A splay tree ( <a href="tree.html"><tt>tree</tt></a>
+ with <tt>Tag =</tt> <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a> ) does
+ much better, since each (successful) find "bubbles" the
+ corresponding node to the root of the tree.</p>
+<p><a href="assoc_performance_tests.html#tree_like_based_types">Observations::Tree-Like-Based
+ Container Types</a> summarizes some observations on tree-based
+ and trie-based containers.</p>
+</div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_timing_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_timing_test_gcc.png
new file mode 100644
index 000000000..cf5174d99
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_timing_test_gcc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_timing_test_local.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_timing_test_local.png
new file mode 100644
index 000000000..26f71510f
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_timing_test_local.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_timing_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_timing_test_msvc.png
new file mode 100644
index 000000000..583a027f3
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_timing_test_msvc.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/trie.html b/libstdc++-v3/doc/html/ext/pb_ds/trie.html
new file mode 100644
index 000000000..32a2ab1b5
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/trie.html
@@ -0,0 +1,489 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>trie Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>trie</tt> Interface</h1>
+
+ <p>A concrete basic trie-based associative container.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/assoc_container.hpp"><tt>assoc_container.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Template Parameters</a></h2>
+
+ <table class="c1" width="100%" border="1" summary=
+ "Template Parameters">
+ <tr>
+ <td width="20%" align="left"><b>Parameter</b></td>
+
+ <td width="50%" align="left"><b>Description</b></td>
+
+ <td width="30%" align="left"><b>Default Value</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Key2501" id="Key2501"><b>typename</b> Key</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Key type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Mapped318655" id="Mapped318655"><b>typename</b> Mapped</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Mapped type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="E_Access_Traits686553840" id=
+"E_Access_Traits686553840"><b>class</b> E_Access_Traits </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Element-access traits.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Tag278938" id="Tag278938"><b>class</b> Tag </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Data-structure tag.</p>
+ </td>
+
+ <td><a href="pat_trie_tag.html"><span class=
+ "c2"><tt>pat_trie_tag</tt></span></a></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Node_Update841554648" id=
+"Node_Update841554648"><b>template</b>&lt;
+ <b>typename</b> Const_Node_Iterator,
+ <b>typename</b> Node_Iterator,
+ <b>class</b> E_Access_Traits_,
+ <b>typename</b> Allocator_&gt;
+<b>class</b> Node_Update </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Node updater type.</p>
+
+ <p><a href=
+ "tree_based_containers.html#invariants">Design::Tree-Based
+ Containers::Node Invariants</a> explains this
+ concept.</p>
+ </td>
+
+ <td><a href="null_trie_node_update.html"><span class=
+ "c2"><tt>null_trie_node_update</tt></span></a></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Allocator35940069" id=
+"Allocator35940069"><b>class</b> Allocator </a>
+</pre>
+ </td>
+
+ <td>
+ <p>Allocator type.</p>
+ </td>
+
+ <td>
+ <pre>
+std::allocator&lt;<b>char</b>&gt;
+</pre>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link2" id="link2">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link3" id="link3">Policy Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="e_access_traits1948190928" id=
+"e_access_traits1948190928">e_access_traits</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#E_Access_Traits686553840"><tt>E_Access_Traits</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Element access traits type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link4" id="link4">Iterator Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_node_iterator4205924553" id=
+"const_node_iterator4205924553">const_node_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href=
+"trie_const_node_iterator.html"><span class=
+"c2"><tt>const_node_iterator</tt></span></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Const node iterator.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="node_iterator3431975247" id=
+"node_iterator3431975247">node_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="trie_node_iterator.html"><span class=
+"c2"><tt>node_iterator</tt></span></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Node iterator.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link5" id="link5">Public Methods</a></h2>
+
+ <h3><a name="link6" id="link6">Constructors, Destructor, and
+ Related</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ trie
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Default constructor.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ trie
+ (<b>const</b> <a href=
+"#E_Access_Traits686553840"><tt>E_Access_Traits</tt></a> &amp;r_e_access_traits)
+</pre>
+ </td>
+
+ <td>
+ <p>Constructor taking some policy objects. <span class=
+ "c1"><tt>r_e_access_traits</tt></span> will be copied by
+ the <a href=
+ "#E_Access_Traits686553840"><tt>E_Access_Traits</tt></a>
+ object of the container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>template</b>&lt;
+ <b>class</b> It&gt;
+ trie
+ (It first_it,
+ It last_it)
+</pre>
+ </td>
+
+ <td>
+ <p>Constructor taking iterators to a range of
+ value_types. The value_types between <span class=
+ "c1"><tt>first_it</tt></span> and <span class=
+ "c1"><tt>last_it</tt></span> will be inserted into the
+ container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>template</b>&lt;
+ <b>class</b> It&gt;
+ trie
+ (It first_it,
+ It last_it,
+ <b>const</b> <a href=
+"#E_Access_Traits686553840"><tt>E_Access_Traits</tt></a> &amp;r_e_access_traits)
+</pre>
+ </td>
+
+ <td>
+ <p>Constructor taking iterators to a range of value_types
+ and some policy objects. The value_types between
+ <span class="c1"><tt>first_it</tt></span> and
+ <span class="c1"><tt>last_it</tt></span> will be inserted
+ into the container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+ trie
+ (<b>const</b> <span class=
+"c2"><tt>trie</tt></span> &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Copy constructor.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b>
+ ~trie
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Destructor.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<span class="c2"><tt>trie</tt></span> &amp;
+ <b>operator</b>=
+ (<b>const</b> <span class=
+"c2"><tt>trie</tt></span> &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Assignment operator.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>void</b>
+ swap
+ (<span class=
+"c2"><tt>trie</tt></span> &amp;other)
+</pre>
+ </td>
+
+ <td>
+ <p>Swaps content.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link7" id="link7">Policy Access Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href=
+"#e_access_traits1948190928"><tt>e_access_traits</tt></a> &amp;
+ get_e_access_traits
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Access to the comb_hash_fn object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href=
+"#e_access_traits1948190928"><tt>e_access_traits</tt></a> &amp;
+ get_e_access_traits
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Const access to the comb_hash_fn object.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link8" id="link8">Node-Iteration Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#node_iterator3431975247"><tt>node_iterator</tt></a>
+ node_begin
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Returns a <a href=
+ "#node_iterator3431975247"><tt>node_iterator</tt></a>
+ corresponding to the node at the root of the trie.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href=
+"#const_node_iterator4205924553"><tt>const_node_iterator</tt></a>
+ node_begin
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns a <a href=
+ "#const_node_iterator4205924553"><tt>const_node_iterator</tt></a>
+ corresponding to the node at the root of the trie.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="#node_iterator3431975247"><tt>node_iterator</tt></a>
+ node_end
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Returns a <a href=
+ "#node_iterator3431975247"><tt>node_iterator</tt></a>
+ corresponding to a node just after a leaf of the
+ trie.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href=
+"#const_node_iterator4205924553"><tt>const_node_iterator</tt></a>
+ node_end
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns a <a href=
+ "#const_node_iterator4205924553"><tt>const_node_iterator</tt></a>
+ corresponding to a node just after a leaf of the
+ trie.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/trie_based_containers.html b/libstdc++-v3/doc/html/ext/pb_ds/trie_based_containers.html
new file mode 100644
index 000000000..72bdd0697
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/trie_based_containers.html
@@ -0,0 +1,241 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>Trie-Based Containers</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1>Trie Design</h1>
+
+ <h2><a name="overview" id="overview">Overview</a></h2>
+
+ <p>The trie-based container has the following declaration:</p>
+ <pre>
+<b>template</b>&lt;
+ <b>typename</b> Key,
+ <b>typename</b> Mapped,
+ <b>typename</b> Cmp_Fn = std::less&lt;Key&gt;,
+ <b>typename</b> Tag = <a href="pat_trie_tag.html">pat_trie_tag</a>,
+ <b>template</b>&lt;
+ <b>typename</b> Const_Node_Iterator,
+ <b>typename</b> Node_Iterator,
+ <b>typename</b> E_Access_Traits_,
+ <b>typename</b> Allocator_&gt;
+ <b>class</b> Node_Update = <a href=
+"null_trie_node_update.html">null_trie_node_update</a>,
+ <b>typename</b> Allocator = std::allocator&lt;<b>char</b>&gt; &gt;
+<b>class</b> <a href=
+"trie.html">trie</a>;
+</pre>
+
+ <p>The parameters have the following meaning:</p>
+
+ <ol>
+ <li><tt>Key</tt> is the key type.</li>
+
+ <li><tt>Mapped</tt> is the mapped-policy, and is explained in
+ <a href="tutorial.html#assoc_ms">Tutorial::Associative
+ Containers::Associative Containers Others than Maps</a>.</li>
+
+ <li><tt>E_Access_Traits</tt> is described in <a href=
+ "#e_access_traits">Element-Access Traits</a>.</li>
+
+ <li><tt>Tag</tt> specifies which underlying data structure
+ to use, and is described shortly.</li>
+
+ <li><tt>Node_Update</tt> is a policy for updating node
+ invariants. This is described in <a href="#invariants">Node
+ Invariants</a>.</li>
+
+ <li><tt>Allocator</tt> is an allocator
+ type.</li>
+ </ol>
+
+ <p>The <tt>Tag</tt> parameter specifies which underlying
+ data structure to use. Instantiating it by <a href=
+ "pat_trie_tag.html">pat_trie_tag</a>, specifies an
+ underlying PATRICIA trie (explained shortly); any other tag is
+ currently illegal.</p>
+ <hr />
+
+ <p>Following is a description of a (PATRICIA) trie
+ (<tt>pb_ds</tt> follows specifically [<a href=
+ "references.html#okasaki98mereable">okasaki98mereable</a>] and
+ [<a href=
+ "references.html#filliatre2000ptset">filliatre2000ptset</a>]).</p>
+
+ <p>A (PATRICIA) trie is similar to a tree, but with the
+ following differences:</p>
+
+ <ol>
+ <li>It explicitly views keys as a sequence of elements.
+ <i>E.g.</i>, a trie can view a string as a sequence of
+ characters; a trie can view a number as a sequence of
+ bits.</li>
+
+ <li>It is not (necessarily) binary. Each node has fan-out <i>n
+ + 1</i>, where <i>n</i> is the number of distinct
+ elements.</li>
+
+ <li>It stores values only at leaf nodes.</li>
+
+ <li>Internal nodes have the properties that A) each has at
+ least two children, and B) each shares the same prefix with
+ any of its descendant.</li>
+ </ol>
+
+ <p><a href="#e_access_traits">Element-Access Traits</a> shows
+ an example of such a trie.</p>
+
+ <p>A (PATRICIA) trie has some useful properties:</p>
+
+ <ol>
+ <li>It can be configured to use large node fan-out, giving it
+ very efficient find performance (albeit at insertion
+ complexity and size).</li>
+
+ <li>It works well for common-prefix keys.</li>
+
+ <li>It can support efficiently queries such as which keys
+ match a certain prefix. This is sometimes useful in
+ file systems and routers.</li>
+ </ol>
+
+ <p>(We would like to thank Matt Austern for the suggestion to
+ include tries.)</p>
+
+ <h2><a name="e_access_traits" id=
+ "e_access_traits">Element-Access Traits</a></h2>
+
+ <p>A trie inherently views its keys as sequences of elements.
+ For example, a trie can view a string as a sequence of
+ characters. A trie needs to map each of <i>n</i> elements to a
+ number in <i>{0, n - 1}</i>. For example, a trie can map a
+ character <tt>c</tt> to
+ <tt>static_cast&lt;size_t&gt;(c)</tt>.</p>
+
+ <p>Seemingly, then, a trie can assume that its keys support
+ (const) iterators, and that the <tt>value_type</tt> of this
+ iterator can be cast to a <tt>size_t</tt>. There are several
+ reasons, though, to decouple the mechanism by which the trie
+ accesses its keys' elements from the trie:</p>
+
+ <ol>
+ <li>In some cases, the numerical value of an element is
+ inappropriate. Consider a trie storing DNA strings. It is
+ logical to use a trie with a fan-out of <i>5 = 1 + |{'A', 'C',
+ 'G', 'T'}|</i>. This requires mapping 'T' to 3, though.</li>
+
+ <li>In some cases the keys' iterators are different than what
+ is needed. For example, a trie can be used to search for
+ common <u>suffixes</u>, by using strings'
+ <tt>reverse_iterator</tt>. As another example, a trie mapping
+ UNICODE strings would have a huge fan-out if each node would
+ branch on a UNICODE character; instead, one can define an
+ iterator iterating over 8-bit (or less) groups.</li>
+ </ol>
+
+ <p><a href=
+ "trie.html">trie</a> is,
+ consequently, parametrized by <tt>E_Access_Traits</tt> -
+ traits which instruct how to access sequences' elements.
+ <a href=
+ "string_trie_e_access_traits.html"><tt>string_trie_e_access_traits</tt></a>
+ is a traits class for strings. Each such traits define some
+ types, <i>e.g.</i>,</p>
+ <pre>
+<b>typename</b> E_Access_Traits::const_iterator
+</pre>
+
+ <p>is a const iterator iterating over a key's elements. The
+ traits class must also define methods for obtaining an iterator
+ to the first and last element of a key.</p>
+
+ <p>Figure <a href="#pat_trie">A PATRICIA trie</a> shows a
+ (PATRICIA) trie resulting from inserting the words: "I wish
+ that I could ever see a poem lovely as a trie" (which,
+ unfortunately, does not rhyme).</p>
+
+ <p>The leaf nodes contain values; each internal node contains
+ two <tt><b>typename</b> E_Access_Traits::const_iterator</tt>
+ objects, indicating the maximal common prefix of all keys in
+ the sub-tree. For example, the shaded internal node roots a
+ sub-tree with leafs "a" and "as". The maximal common prefix is
+ "a". The internal node contains, consequently, to const
+ iterators, one pointing to <tt>'a'</tt>, and the other to
+ <tt>'s'</tt>.</p>
+
+ <h6 class="c1"><a name="pat_trie" id="pat_trie"><img src=
+ "pat_trie.png" alt="no image" /></a></h6>
+
+ <h6 class="c1">A PATRICIA trie.</h6>
+
+ <h2><a name="invariants" id="invariants">Node
+ Invariants</a></h2>
+
+ <p>Trie-based containers support node invariants, as do
+ tree-based containers (see <a href=
+ "tree_based_containers.html#invariants">Tree-Based
+ Containers::Node Invariants</a>). There are two minor
+ differences, though, which, unfortunately, thwart sharing them
+ sharing the same node-updating policies:</p>
+
+ <ol>
+ <li>A trie's <tt>Node_Update</tt> template-template
+ parameter is parametrized by <tt>E_Access_Traits</tt>, while
+ a tree's <tt>Node_Update</tt> template-template parameter is
+ parametrized by <tt>Cmp_Fn</tt>.</li>
+
+ <li>Tree-based containers store values in all nodes, while
+ trie-based containers (at least in this implementation) store
+ values in leafs.</li>
+ </ol>
+
+ <p>Figure <a href="#trie_node_update_cd">A trie and its update
+ policy</a> shows the scheme, as well as some predefined
+ policies (which are explained below).</p>
+
+ <h6 class="c1"><a name="trie_node_update_cd" id=
+ "trie_node_update_cd"><img src=
+ "trie_node_update_policy_cd.png" alt="no image" /></a></h6>
+
+ <h6 class="c1">A trie and its update policy.</h6>
+
+ <p><tt>pb_ds</tt> offers the following pre-defined trie node
+ updating policies:</p>
+
+ <ol>
+ <li><a href=
+ "trie_order_statistics_node_update.html"><tt>trie_order_statistics_node_update</tt></a>
+ supports order statistics.</li>
+
+ <li><a href=
+ "trie_prefix_search_node_update.html"><tt>trie_prefix_search_node_update</tt></a>
+ supports searching for ranges that match a given prefix. See
+ <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/trie_prefix_search.cc"><tt>trie_prefix_search.cc</tt></a>.</li>
+
+ <li><a href=
+ "null_trie_node_update.html"><tt>null_trie_node_update</tt></a>
+ is the null node updater.</li>
+ </ol>
+
+ <h2><a name="add_methods" id="add_methods">Additional
+ Methods</a></h2>
+
+ <p>Trie-based containers support split and join methods; the
+ rationale is equal to that of tree-based containers supporting
+ these methods (see <a href=
+ "tree_based_containers.html#add_methods">Tree-Based
+ Containers::Additional Methods</a>).</p>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/trie_const_node_iterator.html b/libstdc++-v3/doc/html/ext/pb_ds/trie_const_node_iterator.html
new file mode 100644
index 000000000..0869a7c2f
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/trie_const_node_iterator.html
@@ -0,0 +1,478 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>trie::const_node_iterator
+ Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt><span class=
+ "c2"><tt>trie</tt></span>::const_node_iterator</tt>
+ Interface</h1>
+
+ <p>Const node iterator.</p>
+
+ <p>This is an "iterator to an iterator" - it iterates over
+ nodes, and de-referencing it returns one of the tree's const
+ iterators</p>
+
+ <h2><a name="link1" id="link1">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link2" id="link2">General Container
+ Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="size_type55424436" id="size_type55424436">size_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="container_base.html#size_type55424436"><span class=
+"c2"><tt>container_base</tt></span>::size_type</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link3" id="link3">Iterator Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="iterator_category2821876439" id=
+"iterator_category2821876439">iterator_category</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+trivial_iterator_tag
+</pre>
+ </td>
+
+ <td>
+ <p>Category.</p>
+
+ <p>This tag identifies that the iterator has none of the
+ STL's iterators' movement abilities.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="difference_type868028452" id=
+"difference_type868028452">difference_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre class="c2">
+void
+</pre>
+ </td>
+
+ <td>
+ <p>Difference type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link4" id="link4">Value-Type Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="value_type279018186" id=
+"value_type279018186">value_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href=
+"container_base.html#const_iterator98626788"><span class="c2"><tt>container_base</tt></span>::const_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Iterator's value type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="reference54418471" id="reference54418471">reference</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#value_type279018186"><tt>value_type</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Iterator's reference type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_reference495461441" id=
+"const_reference495461441">const_reference</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#value_type279018186"><tt>value_type</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Iterator's const <a href=
+ "#reference54418471"><tt>reference</tt></a> type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="e_access_traits1948190928" id=
+"e_access_traits1948190928">e_access_traits</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href=
+"trie.html#e_access_traits1948190928"><span class="c2"><tt>trie</tt></span>::e_access_traits</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Element access traits.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_e_iterator2450008044" id=
+"const_e_iterator2450008044">const_e_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#e_access_traits1948190928"><tt>e_access_traits</tt></a>::const_iterator
+</pre>
+ </td>
+
+ <td>
+ <p>A key's element const iterator.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link5" id="link5">Metadata Definitions</a></h3>
+
+ <p>These are only defined if <a href=
+ "basic_tree.html#Node_Update841554648"><span class="c2">
+ <tt>basic_tree</tt></span>::Node_Update</a>
+ is not <a href="null_trie_node_update.html"><span class=
+ "c2"><tt>null_trie_node_update</tt></span></a></p>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="metadata_type2849297114" id=
+"metadata_type2849297114">metadata_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<tt><b>typename</b></tt> <a href=
+"basic_tree.html#Node_Update841554648"><span class="c2"><tt>basic_tree</tt></span>::Node_Update</a><tt>::metadata_type</tt>
+</pre>
+ </td>
+
+ <td>
+ <p>Metadata type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_metadata_reference1108857465" id=
+"const_metadata_reference1108857465">const_metadata_reference</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> Allocator::<b>template</b> rebind&lt;
+ <a href=
+"#metadata_type2849297114"><tt>metadata_type</tt></a>&gt;::other::<a href="#const_reference495461441"><tt>const_reference</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Const metadata <a href=
+ "#reference54418471"><tt>reference</tt></a> type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link6" id="link6">Public Methods</a></h2>
+
+ <h3><a name="link7" id="link7">Constructors, Destructor, and
+ Related</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b>
+ const_node_iterator
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Default constructor.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link8" id="link8">Access Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> std::pair&lt;
+ <a href=
+"#const_e_iterator2450008044"><tt>const_e_iterator</tt></a>,
+ <a href=
+"#const_e_iterator2450008044"><tt>const_e_iterator</tt></a>&gt;
+ valid_prefix
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Subtree valid prefix.</p>
+
+ <p>Returns the common prefix range of all nodes in this
+ node's subtree.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href=
+"#const_reference495461441"><tt>const_reference</tt></a>
+ <b>operator</b>*
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Const access; returns the const iterator associated
+ with the current leaf.</p>
+
+ <p>Should be called only for leaf nodes.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link9" id="link9">Metadata Access Methods</a></h3>
+
+ <p>These are only defined if <a href=
+ "basic_tree.html#Node_Update841554648"><span class="c2">
+ <tt>basic_tree</tt></span>::Node_Update</a>
+ is not <a href="null_trie_node_update.html"><span class=
+ "c2"><tt>null_trie_node_update</tt></span></a></p>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href=
+"#const_metadata_reference1108857465"><tt>const_metadata_reference</tt></a>
+ get_metadata
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Metadata access.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link10" id="link10">Movement Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a>
+ num_children
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the number of children in the corresponding
+ node.</p>
+
+ <p>If the number of children is 0, then the corresponding
+ node is a leaf; otherwise, it is not a leaf.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<span class="c2"><tt>const_node_iterator</tt></span>
+ get_child
+ (<a href=
+"#size_type55424436"><tt>size_type</tt></a> i) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns a const node iterator to the corresponding
+ node's <span class="c1"><tt>i</tt></span>-th child.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link11" id="link11">Comparison Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>bool</b>
+ <b>operator</b>==
+ (<b>const</b> <span class=
+"c2"><tt>const_node_iterator</tt></span> &amp;other) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Compares content to a different iterator object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>bool</b>
+ <b>operator</b>!=
+ (<b>const</b> <span class=
+"c2"><tt>const_node_iterator</tt></span> &amp;other) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Compares content (negatively) to a different iterator
+ object.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/trie_node_iterator.html b/libstdc++-v3/doc/html/ext/pb_ds/trie_node_iterator.html
new file mode 100644
index 000000000..55029c4cb
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/trie_node_iterator.html
@@ -0,0 +1,235 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>trie::node_iterator Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt><span class=
+ "c2"><tt>trie</tt></span>::node_iterator</tt>
+ Interface</h1>
+
+ <p>Node iterator.</p>
+
+ <p>This is an "iterator to an iterator" - it iterates over
+ nodes, and de-referencing it returns one of the tree's
+ iterators</p>
+
+ <h2><a name="link1" id="link1">Base Classes</a></h2>
+
+ <table class="c1" width="100%" border="1" summary="Bases">
+ <tr>
+ <td width="80%" align="left"><b>Class</b></td>
+
+ <td width="20%" align="left"><b>Derivation Type</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href=
+"trie.html#const_node_iterator4205924553"><span class="c2"><tt>trie</tt></span>::const_node_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link2" id="link2">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link3" id="link3">General Container
+ Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="size_type55424436" id="size_type55424436">size_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"trie.html#const_node_iterator4205924553"><span class="c2"><tt>trie</tt></span>::const_node_iterator</a>::size_type
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link4" id="link4">Value-Type Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="value_type279018186" id=
+"value_type279018186">value_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="container_base.html#iterator10418194"><span class=
+"c2"><tt>container_base</tt></span>::iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Iterator's value type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="reference54418471" id="reference54418471">reference</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#value_type279018186"><tt>value_type</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Iterator's reference type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_reference495461441" id=
+"const_reference495461441">const_reference</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#value_type279018186"><tt>value_type</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Iterator's const <a href=
+ "#reference54418471"><tt>reference</tt></a> type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link5" id="link5">Public Methods</a></h2>
+
+ <h3><a name="link6" id="link6">Constructors, Destructor, and
+ Related</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b>
+ pat_trie_node_it_
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Default constructor.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link7" id="link7">Access Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href="#reference54418471"><tt>reference</tt></a>
+ <b>operator</b>*
+ () <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Access; returns the iterator associated with the
+ current leaf.</p>
+
+ <p>Should be called only for leaf nodes.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link8" id="link8">Movement Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<span class="c2"><tt>node_iterator</tt></span>
+ get_child
+ (<a href=
+"#size_type55424436"><tt>size_type</tt></a> i) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns a node iterator to the corresponding node's
+ <span class="c1"><tt>i</tt></span>-th child.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/trie_node_updator_policy_cd.png b/libstdc++-v3/doc/html/ext/pb_ds/trie_node_updator_policy_cd.png
new file mode 100644
index 000000000..4376929ec
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/trie_node_updator_policy_cd.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/trie_order_statistics_node_update.html b/libstdc++-v3/doc/html/ext/pb_ds/trie_order_statistics_node_update.html
new file mode 100644
index 000000000..66aab26d7
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/trie_order_statistics_node_update.html
@@ -0,0 +1,770 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>trie_order_statistics_node_update Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>trie_order_statistics_node_update</tt> Interface</h1>
+
+ <p>Functor updating ranks of entrees.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/trie_policy.hpp"><tt>trie_policy.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Template Parameters</a></h2>
+
+ <table class="c1" width="100%" border="1" summary=
+ "Template Parameters">
+ <tr>
+ <td width="20%" align="left"><b>Parameter</b></td>
+
+ <td width="50%" align="left"><b>Description</b></td>
+
+ <td width="30%" align="left"><b>Default Value</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Const_Node_Iterator1933878761" id=
+"Const_Node_Iterator1933878761"><b>class</b> Const_Node_Iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Const node iterator type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Node_Iterator4206909839" id=
+"Node_Iterator4206909839"><b>class</b> Node_Iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Node iterator type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="E_Access_Traits686553840" id=
+"E_Access_Traits686553840"><b>class</b> E_Access_Traits</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Comparison functor.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Allocator35940069" id=
+"Allocator35940069"><b>class</b> Allocator</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Allocator type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+ </table>
+
+ <h2><a name="link2" id="link2">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link3" id="link3">Policy Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="e_access_traits1948190928" id=
+"e_access_traits1948190928">e_access_traits</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#E_Access_Traits686553840"><tt>E_Access_Traits</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Element access traits.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_e_iterator2450008044" id=
+"const_e_iterator2450008044">const_e_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#e_access_traits1948190928"><tt>e_access_traits</tt></a>::const_iterator
+</pre>
+ </td>
+
+ <td>
+ <p>Const element iterator.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="allocator48440069" id="allocator48440069">allocator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Allocator35940069"><tt>Allocator</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p><a href="#Allocator35940069"><tt>Allocator</tt></a>
+ type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link4" id="link4">General Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="size_type55424436" id="size_type55424436">size_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#allocator48440069"><tt>allocator</tt></a>::size_type
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link5" id="link5">Key-Type Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="key_type10393186" id="key_type10393186">key_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+The instantiating container's key type.
+</pre>
+ </td>
+
+ <td>
+ <p>Key type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_key_reference3185471705" id=
+"const_key_reference3185471705">const_key_reference</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+The instantiating container's const key reference type.
+</pre>
+ </td>
+
+ <td>
+ <p>Const key reference.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link6" id="link6">Metadata-Type
+ Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="metadata_type2849297114" id=
+"metadata_type2849297114">metadata_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#size_type55424436"><tt>size_type</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Metadata type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link7" id="link7">Iterator Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_node_iterator4205924553" id=
+"const_node_iterator4205924553">const_node_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href=
+"#Const_Node_Iterator1933878761"><tt>Const_Node_Iterator</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Const node iterator type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="node_iterator3431975247" id=
+"node_iterator3431975247">node_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Node_Iterator4206909839"><tt>Node_Iterator</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Node iterator type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_iterator98626788" id=
+"const_iterator98626788">const_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#const_node_iterator4205924553"><tt>const_node_iterator</tt></a>::value_type
+</pre>
+ </td>
+
+ <td>
+ <p>Const iterator type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="iterator10418194" id="iterator10418194">iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#node_iterator3431975247"><tt>node_iterator</tt></a>::value_type
+</pre>
+ </td>
+
+ <td>
+ <p>Iterator type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link8" id="link8">Public Methods</a></h2>
+
+ <h3><a name="link9" id="link9">Find-Type Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href=
+"#const_iterator98626788"><tt>const_iterator</tt></a>
+ find_by_order
+ (<a href=
+"#size_type55424436"><tt>size_type</tt></a> order) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Finds an entry by order. Returns a <a href=
+ "#const_iterator98626788"><tt>const_iterator</tt></a> to
+ the entry with the order <span class=
+ "c1"><tt>order</tt></span>, or a <a href=
+ "#const_iterator98626788"><tt>const_iterator</tt></a> to
+ the container object's end if <span class=
+ "c1"><tt>order</tt></span> is at least the size of the
+ container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href="#iterator10418194"><tt>iterator</tt></a>
+ find_by_order
+ (<a href="#size_type55424436"><tt>size_type</tt></a> order)
+</pre>
+ </td>
+
+ <td>
+ <p>Finds an entry by order. Returns an <a href=
+ "#iterator10418194"><tt>iterator</tt></a> to the entry
+ with the order <span class="c1"><tt>order</tt></span>, or
+ an <a href="#iterator10418194"><tt>iterator</tt></a> to
+ the container object's end if <span class=
+ "c1"><tt>order</tt></span> is at least the size of the
+ container object.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a>
+ order_of_key
+ (<a href=
+"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the order of a key within a sequence. For
+ example, if <span class="c1"><tt>r_key</tt></span> is the
+ smallest key, this method will return 0; if <span class=
+ "c1"><tt>r_key</tt></span> is a key between the smallest
+ and next key, this method will return 1; if <span class=
+ "c1"><tt>r_key</tt></span> is a key larger than the
+ largest key, this method will return the size of r_c.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a>
+ order_of_prefix
+ (<a href=
+"#const_e_iterator2450008044"><tt>const_e_iterator</tt></a> b,
+ <a href=
+"#const_e_iterator2450008044"><tt>const_e_iterator</tt></a> e) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the order of a prefix within a sequence. For
+ <span class="c1"><tt>e</tt></span>example, if [b,
+ <span class="c1"><tt>e</tt></span>] is the smallest
+ prefix, this method will return 0; if r_key is a key
+ <span class="c1"><tt>b</tt></span>between the smallest and
+ next key, this method will return 1; if r_key is a key
+ larger than the largest key, this method will return the
+ size of r_c.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link10" id="link10">Protected Types and
+ Constants</a></h2>
+
+ <h3><a name="link11" id="link11">Value-Type
+ Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_reference495461441" id=
+"const_reference495461441">const_reference</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+The instantiating container's const reference type.
+</pre>
+ </td>
+
+ <td>
+ <p>Const reference to the container's value-type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_pointer878814947" id=
+"const_pointer878814947">const_pointer</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+The instantiating container's const pointer type.
+</pre>
+ </td>
+
+ <td>
+ <p>Const pointer to the container's value-type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_metadata_reference1108857465" id=
+"const_metadata_reference1108857465">const_metadata_reference</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#Allocator35940069"><tt>Allocator</tt></a>::<b>template</b> rebind&lt;
+ <a href=
+"#metadata_type2849297114"><tt>metadata_type</tt></a>&gt;::other::<a href="#const_reference495461441"><tt>const_reference</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Const metadata reference.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="metadata_reference583863863" id=
+"metadata_reference583863863">metadata_reference</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#Allocator35940069"><tt>Allocator</tt></a>::<b>template</b> rebind&lt;
+ <a href=
+"#metadata_type2849297114"><tt>metadata_type</tt></a>&gt;::other::reference
+</pre>
+ </td>
+
+ <td>
+ <p>Metadata reference.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link12" id="link12">Protected Methods</a></h2>
+
+ <h3><a name="link13" id="link13">Operators</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ <b>operator</b>()
+ (<a href=
+"#node_iterator3431975247"><tt>node_iterator</tt></a> node_it,
+ <a href=
+"#const_node_iterator4205924553"><tt>const_node_iterator</tt></a> end_nd_it) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Updates the rank of a node through a <a href=
+ "#node_iterator3431975247"><tt>node_iterator</tt></a>
+ <span class="c1"><tt>node_it</tt></span>; <span class=
+ "c1"><tt>end_nd_it</tt></span> is the end node <a href=
+ "#iterator10418194"><tt>iterator</tt></a>.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link14" id="link14">Constructors, destructor, and
+ related</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b>
+ ~trie_order_statistics_node_update
+ ()
+</pre>
+ </td>
+
+ <td>
+ <p>Destructor.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link15" id="link15">Private Methods</a></h2>
+
+ <h3><a name="link16" id="link16">Overrides</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b> <b>bool</b>
+ empty
+ () <b>const</b> = 0
+</pre>
+ </td>
+
+ <td>
+ <p>Returns <tt><b>true</b></tt> if the container is
+ empty.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b> <a href="#iterator10418194"><tt>iterator</tt></a>
+ begin
+ () = 0
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the <a href=
+ "#iterator10418194"><tt>iterator</tt></a> associated with
+ the trie's first element.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b> <a href="#iterator10418194"><tt>iterator</tt></a>
+ end
+ () = 0
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the <a href=
+ "#iterator10418194"><tt>iterator</tt></a> associated with
+ the trie's just-after-last element.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b> <a href=
+"#const_node_iterator4205924553"><tt>const_node_iterator</tt></a>
+ node_begin
+ () <b>const</b> = 0
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the <a href=
+ "#const_node_iterator4205924553"><tt>const_node_iterator</tt></a>
+ associated with the trie's root node.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b> <a href=
+"#node_iterator3431975247"><tt>node_iterator</tt></a>
+ node_begin
+ () = 0
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the <a href=
+ "#node_iterator3431975247"><tt>node_iterator</tt></a>
+ associated with the trie's root node.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b> <a href=
+"#const_node_iterator4205924553"><tt>const_node_iterator</tt></a>
+ node_end
+ () <b>const</b> = 0
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the <a href=
+ "#const_node_iterator4205924553"><tt>const_node_iterator</tt></a>
+ associated with a just-after leaf node.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b> <a href=
+"#node_iterator3431975247"><tt>node_iterator</tt></a>
+ node_end
+ () = 0
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the <a href=
+ "#node_iterator3431975247"><tt>node_iterator</tt></a>
+ associated with a just-after leaf node.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b> <a href=
+"#e_access_traits1948190928"><tt>e_access_traits</tt></a> &amp;
+ get_e_access_traits
+ () = 0
+</pre>
+ </td>
+
+ <td>
+ <p>Access to the cmp_fn object.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/trie_prefix_search_node_update.html b/libstdc++-v3/doc/html/ext/pb_ds/trie_prefix_search_node_update.html
new file mode 100644
index 000000000..e136495c5
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/trie_prefix_search_node_update.html
@@ -0,0 +1,628 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>trie_prefix_search_node_update Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>trie_prefix_search_node_update</tt> Interface</h1>
+
+ <p>A node updater that allows tries to be searched for the
+ range of values that match a certain prefix.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/trie_policy.hpp"><tt>trie_policy.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Template Parameters</a></h2>
+
+ <table class="c1" width="100%" border="1" summary=
+ "Template Parameters">
+ <tr>
+ <td width="20%" align="left"><b>Parameter</b></td>
+
+ <td width="50%" align="left"><b>Description</b></td>
+
+ <td width="30%" align="left"><b>Default Value</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Const_Node_Iterator1933878761" id=
+"Const_Node_Iterator1933878761"><b>class</b> Const_Node_Iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Const node iterator type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Node_Iterator4206909839" id=
+"Node_Iterator4206909839"><b>class</b> Node_Iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Node iterator type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="E_Access_Traits686553840" id=
+"E_Access_Traits686553840"><b>class</b> E_Access_Traits</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Comparison functor.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="Allocator35940069" id=
+"Allocator35940069"><b>class</b> Allocator</a>
+</pre>
+ </td>
+
+ <td>
+ <p>Allocator type.</p>
+ </td>
+
+ <td>-</td>
+ </tr>
+ </table>
+
+ <h2><a name="link2" id="link2">Public Types and
+ Constants</a></h2>
+
+ <h3><a name="link3" id="link3">Key-Type Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="key_type10393186" id="key_type10393186">key_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+The instantiating container's key type.
+</pre>
+ </td>
+
+ <td>
+ <p>Key type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_key_reference3185471705" id=
+"const_key_reference3185471705">const_key_reference</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+The instantiating container's const key reference type.
+</pre>
+ </td>
+
+ <td>
+ <p>Const key reference.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link4" id="link4">Policy Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="e_access_traits1948190928" id=
+"e_access_traits1948190928">e_access_traits</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#E_Access_Traits686553840"><tt>E_Access_Traits</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Element access traits.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_e_iterator2450008044" id=
+"const_e_iterator2450008044">const_e_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#e_access_traits1948190928"><tt>e_access_traits</tt></a>::const_iterator
+</pre>
+ </td>
+
+ <td>
+ <p>Const element iterator.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="allocator48440069" id="allocator48440069">allocator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Allocator35940069"><tt>Allocator</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p><a href="#Allocator35940069"><tt>Allocator</tt></a>
+ type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link5" id="link5">General Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="size_type55424436" id="size_type55424436">size_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#allocator48440069"><tt>allocator</tt></a>::size_type
+</pre>
+ </td>
+
+ <td>
+ <p>Size type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link6" id="link6">Metadata-Type
+ Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="metadata_type2849297114" id=
+"metadata_type2849297114">metadata_type</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+__gnu_pbds::detail::null_node_metadata
+</pre>
+ </td>
+
+ <td>
+ <p>Metadata type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h3><a name="link7" id="link7">Iterator Definitions</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Types">
+ <tr>
+ <td width="30%" align="left"><b>Type</b></td>
+
+ <td width="55%" align="left"><b>Definition</b></td>
+
+ <td width="15%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_node_iterator4205924553" id=
+"const_node_iterator4205924553">const_node_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href=
+"#Const_Node_Iterator1933878761"><tt>Const_Node_Iterator</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Const node iterator type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="node_iterator3431975247" id=
+"node_iterator3431975247">node_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<a href="#Node_Iterator4206909839"><tt>Node_Iterator</tt></a>
+</pre>
+ </td>
+
+ <td>
+ <p>Node iterator type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="const_iterator98626788" id=
+"const_iterator98626788">const_iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#const_node_iterator4205924553"><tt>const_node_iterator</tt></a>::value_type
+</pre>
+ </td>
+
+ <td>
+ <p>Const iterator type.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a name="iterator10418194" id="iterator10418194">iterator</a>
+</pre>
+ </td>
+
+ <td>
+ <pre>
+<b>typename</b> <a href=
+"#node_iterator3431975247"><tt>node_iterator</tt></a>::value_type
+</pre>
+ </td>
+
+ <td>
+ <p>Iterator type.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link8" id="link8">Public Methods</a></h2>
+
+ <h3><a name="link9" id="link9">Find Methods</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+std::pair&lt;
+ <a href="#const_iterator98626788"><tt>const_iterator</tt></a>,
+ <a href=
+"#const_iterator98626788"><tt>const_iterator</tt></a>&gt;
+ prefix_range
+ (<a href=
+"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Finds the <tt><b>const</b></tt> <a href=
+ "#iterator10418194"><tt>iterator</tt></a> range
+ corresponding to all values whose prefixes match
+ <span class="c1"><tt>r_key</tt></span>.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+std::pair&lt;
+ <a href="#iterator10418194"><tt>iterator</tt></a>,
+ <a href="#iterator10418194"><tt>iterator</tt></a>&gt;
+ prefix_range
+ (<a href=
+"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key)
+</pre>
+ </td>
+
+ <td>
+ <p>Finds the <a href=
+ "#iterator10418194"><tt>iterator</tt></a> range
+ corresponding to all values whose prefixes match
+ <span class="c1"><tt>r_key</tt></span>.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+std::pair&lt;
+ <a href="#const_iterator98626788"><tt>const_iterator</tt></a>,
+ <a href=
+"#const_iterator98626788"><tt>const_iterator</tt></a>&gt;
+ prefix_range
+ (<a href=
+"#const_e_iterator2450008044"><tt>const_e_iterator</tt></a> b,
+ <a href=
+"#const_e_iterator2450008044"><tt>const_e_iterator</tt></a> e) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Finds the <tt><b>const</b></tt> <a href=
+ "#iterator10418194"><tt>iterator</tt></a> range
+ corresponding to all values whose prefixes match [b,
+ <span class="c1"><tt>e</tt></span>).</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+std::pair&lt;
+ <a href="#iterator10418194"><tt>iterator</tt></a>,
+ <a href="#iterator10418194"><tt>iterator</tt></a>&gt;
+ prefix_range
+ (<a href=
+"#const_e_iterator2450008044"><tt>const_e_iterator</tt></a> b,
+ <a href=
+"#const_e_iterator2450008044"><tt>const_e_iterator</tt></a> e)
+</pre>
+ </td>
+
+ <td>
+ <p>Finds the <a href=
+ "#iterator10418194"><tt>iterator</tt></a> range
+ corresponding to all values whose prefixes match [b,
+ <span class="c1"><tt>e</tt></span>).</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link10" id="link10">Protected Methods</a></h2>
+
+ <h3><a name="link11" id="link11">Operators</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>inline</b> <b>void</b>
+ <b>operator</b>()
+ (<a href=
+"#node_iterator3431975247"><tt>node_iterator</tt></a> node_it,
+ <a href=
+"#const_node_iterator4205924553"><tt>const_node_iterator</tt></a> end_nd_it) <b>const</b>
+</pre>
+ </td>
+
+ <td>
+ <p>Called to update a node's metadata.</p>
+ </td>
+ </tr>
+ </table>
+
+ <h2><a name="link12" id="link12">Private Methods</a></h2>
+
+ <h3><a name="link13" id="link13">Overrides</a></h3>
+
+ <table class="c1" width="100%" border="1" summary="Methods">
+ <tr>
+ <td width="45%" align="left"><b>Method</b></td>
+
+ <td width="55%" align="left"><b>Description</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b> <a href=
+"#const_iterator98626788"><tt>const_iterator</tt></a>
+ end
+ () <b>const</b> = 0
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the <tt><b>const</b></tt> <a href=
+ "#iterator10418194"><tt>iterator</tt></a> associated with
+ the just-after last element.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b> <a href="#iterator10418194"><tt>iterator</tt></a>
+ end
+ () = 0
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the <a href=
+ "#iterator10418194"><tt>iterator</tt></a> associated with
+ the just-after last element.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b> <a href=
+"#const_node_iterator4205924553"><tt>const_node_iterator</tt></a>
+ node_begin
+ () <b>const</b> = 0
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the <a href=
+ "#const_node_iterator4205924553"><tt>const_node_iterator</tt></a>
+ associated with the trie's root node.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b> <a href=
+"#node_iterator3431975247"><tt>node_iterator</tt></a>
+ node_begin
+ () = 0
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the <a href=
+ "#node_iterator3431975247"><tt>node_iterator</tt></a>
+ associated with the trie's root node.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b> <a href=
+"#const_node_iterator4205924553"><tt>const_node_iterator</tt></a>
+ node_end
+ () <b>const</b> = 0
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the <a href=
+ "#const_node_iterator4205924553"><tt>const_node_iterator</tt></a>
+ associated with a just-after leaf node.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b> <a href=
+"#node_iterator3431975247"><tt>node_iterator</tt></a>
+ node_end
+ () = 0
+</pre>
+ </td>
+
+ <td>
+ <p>Returns the <a href=
+ "#node_iterator3431975247"><tt>node_iterator</tt></a>
+ associated with a just-after leaf node.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<b>virtual</b> <b>const</b> <a href=
+"#e_access_traits1948190928"><tt>e_access_traits</tt></a> &amp;
+ get_e_access_traits
+ () <b>const</b> = 0
+</pre>
+ </td>
+
+ <td>
+ <p>Access to the cmp_fn object.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/trie_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/trie_tag.html
new file mode 100644
index 000000000..62bf12454
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/trie_tag.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>trie_tag Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>trie_tag</tt> Interface</h1>
+
+ <p>Basic trie data structure tag.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p>
+
+ <h2><a name="link1" id="link1">Base Classes</a></h2>
+
+ <table class="c1" width="100%" border="1" summary="Bases">
+ <tr>
+ <td width="80%" align="left"><b>Class</b></td>
+
+ <td width="20%" align="left"><b>Derivation Type</b></td>
+ </tr>
+
+ <tr>
+ <td>
+ <pre>
+<a href="basic_tree_tag.html"><span class=
+"c2"><tt>basic_tree_tag</tt></span></a>
+</pre>
+ </td>
+
+ <td>
+ <p>public</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/trivial_iterator_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/trivial_iterator_tag.html
new file mode 100644
index 000000000..1f59c5102
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/trivial_iterator_tag.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>trivial_iterator_tag Interface</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1><tt>trivial_iterator_tag</tt> Interface</h1>
+
+ <p>A \quot;trivial\quot; iterator tag. Signifies that the
+ iterators has none of the STL's movement abilities.</p>
+
+ <p>Defined in: <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tutorial.html b/libstdc++-v3/doc/html/ext/pb_ds/tutorial.html
new file mode 100644
index 000000000..152cd57b1
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/tutorial.html
@@ -0,0 +1,670 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" />
+
+ <title>Tutorial</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ </head>
+
+<body>
+ <div id="page">
+ <h1>Short Tutorial</h1>
+
+ <p>Following is a short tutorial illustrating the main points
+ of <tt>pb_ds</tt>. <a href="concepts.html">Concepts</a>
+ describes and summarizes some concepts.</p>
+
+ <h2><a name="assoc_main" id="assoc_main">Associative
+ Containers</a></h2>
+
+ <h3><a name="assoc_basic" id="assoc_basic">Basic Use</a></h3>
+
+ <p>For the most part, <tt>pb_ds</tt>'s containers have the same
+ interface as the STL's, except for the names used for the
+ container classes themselves. For example, this shows basic
+ operations on a collision-chaining hash-based container:</p>
+
+ <pre>
+<a href=
+"cc_hash_table.html">cc_hash_table</a>&lt;<b>int</b>, <b>char</b>&gt; c;
+
+c[2] = 'b';
+
+assert(c.find(1) == c.end());
+</pre>
+
+ <p>The container is called <a href=
+ "cc_hash_table.html"><tt>cc_hash_table</tt></a> as
+ opposed to <tt>unordered_map</tt>, since "unordered map" does
+ not necessarily mean a hash-based map (as the STL implicitly
+ implies). For example, list-based associative containers, which
+ are very useful for the construction of "multimaps" (see
+ <a href=
+ "assoc_performance_tests.html#msc">Associative-Container
+ Performance Tests::Observations::Mapping-Semantics
+ Considerations</a>), are also unordered. It is also not called
+ <tt>hash_map</tt> since there are more ways than one to
+ implement hash tables.</p>
+
+ <p>This snippet shows a red-black tree based container:</p>
+ <pre>
+<a href=
+"tree.html">tree</a>&lt;<b>int</b>, <b>char</b>&gt; c;
+
+c[2] = 'b';
+
+assert(c.find(2) != c.end());
+</pre>
+
+ <p>The container is called <a href=
+ "tree.html"><tt>tree</tt></a>
+ as opposed to <tt>map</tt>, since "map" doesn't say that
+ much.</p>
+
+ <p>Most of the STL's familiar methods are unchanged.
+ <i>E.g.</i>, <tt>being</tt>, <tt>end</tt>, <tt>size</tt>,
+ <tt>empty</tt>, and <tt>clear</tt>, do just the same as is
+ customary. <a href=
+ "assoc_examples.html#basic_usage">Associative-Container
+ Examples::Basic use</a>, and especially <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/basic_map.cc"><tt>basic_map.cc</tt></a>,
+ show examples of this.</p>
+
+<p>This isn't to say that things are exactly as one would expect,
+given the container requirments and interfaces in the C++
+standard.</p>
+
+
+ <p>The names of containers' policies and policy accessors are
+ different than those of the STL. For example, if <tt>C</tt> is
+ some type of hash-based container, then</p>
+ <pre>
+C::hash_fn
+</pre>gives the type of its hash functor, and if <tt>c</tt> is some
+hash-based container object, then
+ <pre>
+c.get_hash_fn()
+</pre>
+
+ <p>will return a reference to its hash-functor object.</p>
+
+ <p>Similarly, if <tt>C</tt> is some type of tree-based
+ container, then</p>
+ <pre>
+C::cmp_fn
+</pre>gives the type of its comparison functor, and if <tt>c</tt>
+is some tree-based container object, then
+ <pre>
+c.get_cmp_fn()
+</pre>
+
+ <p>will return a reference to its comparison-functor
+ object.</p>
+
+ <p>It would be nice to give names consistent with those in the
+ existing C++ standard (inclusive of TR1). Unfortunately, these
+ standard containers don't consistently name types and
+ methods. For example, <tt>std::tr1::unordered_map</tt> uses
+ <tt>hasher</tt> for the hash functor, but <tt>std::map</tt> uses
+ <tt>key_compare</tt> for the comparison functor. Also, we could
+ not find an accessor for <tt>std::tr1::unordered_map</tt>'s hash
+ functor, but <tt>std::map</tt> uses <tt>compare</tt> for accessing
+ the comparison functor.</p>
+
+<p>Instead, <tt>pb_ds</tt> attempts to be internally consistent, and
+uses standard-derived terminology if possible.
+</p>
+
+ <p>Another source of difference is in scope: <tt>pb_ds</tt>
+ contains more types of associative containers than the STL, and
+ more opportunities to configure these new containers, since
+ different types of associative containers are useful in different
+ settings (see <a href=
+ "assoc_performance_tests.html#dss_family_choice">Associative-Container
+ Performance Tests::Observations::Underlying Data-Structure
+ Families</a>).</p>
+
+ <p><tt>pb_ds</tt> contains different classes for hash-based containers,
+ tree-based containers, trie-based containers, and list-based
+ containers. <a href=
+ "interface.html#containers_assoc">Inteface::Containers::Associative
+ Containers</a> lists the containers. <a href=
+ "hash_based_containers.html">Design::Associative
+ Containers::Hash-Based Containers</a>, <a href=
+ "tree_based_containers.html">Design::Associative
+ Containers::Tree-Based Containers</a>, <a href=
+ "trie_based_containers.html">Design::Associative
+ Containers::Trie-Based Containers</a>, and <a href=
+ "lu_based_containers.html">Design::Associative
+ Containers::List-Based Containers</a>, explain some more about
+ these types of containers, respectively.</p>
+
+ <p>Since associative containers share parts of their interface,
+ they are organized as a class hierarchy; it is shown in Figure
+ <a href="#cd">Class hierarchy</a>.</p>
+
+ <h6 class="c1"><a name="cd" id="cd"><img src="container_cd.png" alt=
+ "no image" /></a></h6>
+
+ <h6 class="c1">Class hierarchy.</h6>
+
+ <p>Each type or method is defined in the most-common ancestor
+ in which it makes sense:
+ <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/basic_map.cc"><tt>basic_map.cc</tt></a>
+ shows an example of most of the associative-container
+ types.</p>
+
+
+ <p>For example, all associative containers support iteration.
+ Consequently, <a href=
+ "container_base.html"><tt>container_base</tt></a> has the
+ interface:</p>
+ <pre>
+<b>template</b>&lt;...&gt;
+<b>class</b> <a href="container_base.html">container_base</a>
+{
+ ...
+
+<b>public</b>:
+ ...
+
+ const_iterator
+ begin() <b>const</b>;
+
+ iterator
+ begin();
+
+ const_iterator
+ end() <b>const</b>;
+
+ iterator
+ end();
+
+ ...
+};
+</pre>
+
+ <p>and so all associative containers inherent this method.
+ Conversely, both collision-chaining and (general) probing
+ hash-based associative containers have a hash functor, so
+ <a href=
+ "basic_hash_table.html"><tt>basic_hash_table</tt></a>
+ has the interface:</p>
+ <pre>
+<b>template</b>&lt;...&gt;
+<b>class</b> <a href="basic_hash_table.html">basic_hash_table</a> : <b>public</b> <a href="container_base.html">container_base</a>
+{
+ ...
+
+<b>public</b>:
+ ...
+
+ const hash_fn&amp;
+ get_hash_fn() const;
+
+ hash_fn&amp;
+ get_hash_fn();
+ ...
+};
+</pre>
+
+ <p>and so all hash-based associative containers inherit the
+ same hash-functor accessor methods.</p>
+
+ <p>This is discussed further in <a href=
+ "ds_gen.html">Design::Associative Containers::Data-Structure
+ Genericity</a>.</p>
+
+ <h3><a name="assoc_policies" id="assoc_policies">Configuring
+ Associative Containers</a></h3>
+
+ <p>In general, each of <tt>pb_ds</tt>'s containers is
+ parametrized by more policies than those of the STL's. For
+ example, the STL's hash-based container is parametrized as
+ follows:</p>
+ <pre>
+<b>template</b>&lt;
+ <b>typename</b> Key,
+ <b>typename</b> Mapped,
+ <b>typename</b> Hash,
+ <b>typename</b> Pred,
+ <b>typename</b> Allocator,
+ <b>bool</b> Cache_Hashe_Code&gt;
+<b>class</b> unordered_map;
+</pre>
+
+ <p>and so can be configured by key type, mapped type, a functor
+ that translates keys to unsigned integral types, an equivalence
+ predicate, an allocator, and an indicator whether to store hash
+ values with each entry. <tt>pb_ds</tt>'s collision-chaining
+ hash-based container is parametrized as</p>
+ <pre>
+<b>template</b>&lt;
+ <b>typename</b> Key,
+ <b>typename</b> Mapped,
+ <b>typename</b> Hash_Fn,
+ <b>typename</b> Eq_Fn,
+ <b>typename</b> Comb_Hash_Fn,
+ <b>typename</b> Resize_Policy
+ <b>bool</b> Store_Hash
+ <b>typename</b> Allocator&gt;
+<b>class</b> <a href=
+"cc_hash_table.html">cc_hash_table</a>;
+</pre>
+
+ <p>and so can be configured by the first four types of
+ <tt>std::tr1::unordered_map</tt>, then a policy for translating
+ the key-hash result into a position within the table, then a
+ policy by which the table resizes, an indicator whether to
+ store hash values with each entry, and an allocator (which is
+ typically the last template parameter in STL containers).</p>
+
+ <p>Nearly all policy parameters have default values, so this
+ need not be considered for casual use. It is important to note,
+ however, that hash-based containers' policies can dramatically
+ alter their performance in different settings, and that
+ tree-based containers' policies can make them useful for other
+ purposes than just look-up.</p>
+
+ <p><a href="hash_based_containers.html">Design::Associative
+ Containers::Hash-Based Containers</a>, <a href=
+ "tree_based_containers.html">Design::Associative
+ Containers::Tree-Based Containers</a>, <a href=
+ "trie_based_containers.html">Design::Associative
+ Containers::Trie-Based Containers</a>, and <a href=
+ "lu_based_containers.html">Design::Associative
+ Containers::List-Based Containers</a>, explain some more about
+ configuring hash based, tree based, trie based, and list base
+ containers, respectively. <a href=
+ "interface.html#ds_policy_classes">Interface::Container Policy
+ Classes</a> shows the different policy classes for configuring
+ associative containers. <a href=
+ "assoc_examples.html#hash_based">Examples::Hash-Based
+ Containers</a>, <a href=
+ "assoc_examples.html#tree_like_based">Examples::Tree-Like-Based
+ Containers</a>, and <a href=
+ "assoc_examples.html#trie_based">Examples::Trie-Based
+ Containers</a> show examples for this.</p>
+
+ <h3><a name="assoc_ds_gen" id="assoc_ds_gen">Determining
+ Containers' Attributes</a></h3>
+
+ <p>Associative-containers' underlying data structures obviously
+ affect their performance; Unfortunately, they can also affect
+ their interface. When manipulating generically associative
+ containers, it is often useful to be able to statically
+ determine what they can support and what the cannot. (This was
+ discussed in <a href=
+ "motivation.html#assoc_ds_genericity">Motivation::Associative
+ Containers::Data-Structure Genericity</a>.)</p>
+
+ <p>Happily, the STL provides a good solution to a similar
+ problem - that of the different behavior of iterators. If
+ <tt>It</tt> is an iterator, then</p>
+ <pre>
+<b>typename</b> std::iterator_traits&lt;It&gt;::iterator_category
+</pre>
+
+ <p>is one of a small number of pre-defined
+ <tt><b>struct</b></tt>s, and,</p>
+ <pre>
+<b>typename</b> std::iterator_traits&lt;It&gt;::value_type
+</pre>
+
+ <p>is the value type to which the iterator "points".</p>
+
+ <p>Similarly, in <tt>pb_ds</tt>, if <tt>C</tt> is an
+ associative container, then</p>
+ <pre>
+<b>typename</b> <a href=
+"assoc_container_traits.html"><tt>container_traits</tt></a>&lt;C&gt;::container_category
+</pre>is one of a small number of pre-defined
+<tt><b>struct</b></tt>s, each one corresponding to a class in
+Figure <a href="#cd">Class hierarchy</a>. These tags are listed in
+<a href="interface.html#ds_ts_assoc">Interface::Associative
+Containers::Data-Structure Tags and Traits::Data-Structure
+Tags::Associative-Containers</a>; <a href="ds_gen.html#container_traits">
+ Design::Associative Containers::Data-Structure Tags and
+ Traits</a> explains this further; <a href=
+ "ds_gen.html#tag_cd">Design::Associative
+ Containers::Data-Structure Tags and Traits::Data-structure tag
+ class hierarchy</a> shows a class diagram.
+
+ <p>In most cases, however, the exact underlying data structure
+ is not really important, but only one of its attributes:
+ whether it guarantees storing elements by key order, for
+ example. For this one can use</p>
+ <pre>
+<b>typename</b> <a href=
+"assoc_container_traits.html"><tt>container_traits</tt></a>&lt;C&gt;::order_preserving
+</pre>
+
+ <p>This is described further in <a href=
+ "ds_gen.html">Design::Data-Structure Genericity</a>; <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/assoc_container_traits.cc"><tt>assoc_container_traits.cc</tt></a>
+ shows an example of querying containers' attributes.</p>
+
+ <h3><a name="assoc_find_range" id="assoc_find_range">Point-Type
+ and Range-Type Methods and Iterators</a></h3>(This subsection
+ addresses points from <a href=
+ "motivation.html#assoc_diff_it">Motivation::Associative
+ Containers::Differentiating between Iterator Types</a>.)
+
+ <p><tt>pb_ds</tt> differentiates between two types of methods
+ and iterators: point-type, and range-type. For example,
+ <tt>find</tt> and <tt>insert</tt> are point-type methods, since
+ they each deal with a specific element; their returned
+ iterators are point-type iterators. <tt>begin</tt> and
+ <tt>end</tt> are range-type methods, since they are not used to
+ find a specific element, but rather to go over all elements in
+ a container object; their returned iterators are range-type
+ iterators.</p>
+
+ <p>Most containers store elements in an order that is
+ determined by their interface. Correspondingly, it is fine that
+ their point-type iterators are synonymous with their range-type
+ iterators. For example, in the following snippet</p>
+ <pre>
+std::for_each(c.find(1), c.find(5), foo);
+</pre>two point-type iterators (returned by <tt>find</tt>) are used
+for a range-type purpose - going over all elements whose key is
+between 1 and 5.
+
+ <p>Conversely, the above snippet makes no sense for
+ self-organizing containers - ones that order (and reorder)
+ their elements by implementation. It would be nice to have a
+ uniform iterator system that would allow the above snippet to
+ compile only if it made sense.</p>
+
+ <p>This could trivially be done by specializing
+ <tt>std::for_each</tt> for the case of iterators returned by
+ <tt>std::tr1::unordered_map</tt>, but this would only solve the
+ problem for one algorithm and one container. Fundamentally, the
+ problem is that one can loop using a self-organizing
+ container's point-type iterators.</p>
+
+ <p><tt>pb_ds</tt>'s containers define two families of
+ iterators: <tt>const_point_iterator</tt> and
+ <tt>point_iterator</tt> are the iterator types returned by
+ point-type methods; <tt>const_iterator</tt> and
+ <tt>iterator</tt> are the iterator types returned by range-type
+ methods.</p>
+ <pre>
+<b>class</b> <i>&lt;- some container -&gt;</i>
+{
+<b>public</b>:
+ ...
+
+ <b>typedef</b> <i>&lt;- something -&gt;</i> const_iterator;
+
+ <b>typedef</b> <i>&lt;- something -&gt;</i> iterator;
+
+ <b>typedef</b> <i>&lt;- something -&gt;</i> const_point_iterator;
+
+ <b>typedef</b> <i>&lt;- something -&gt;</i> point_iterator;
+
+ ...
+
+<b>public</b>:
+ ...
+
+ const_iterator begin () <b>const</b>;
+
+ iterator begin();
+
+ const_point_iterator find(...) <b>const</b>;
+
+ point_iterator find(...);
+};
+</pre>
+
+ <p><a href="ds_gen.html#find_range">Design::Associative
+ Containers::Data-Structure Genericity::Point-Type and
+ Range-Type Methods and Iterators</a> discusses the relationship
+ between point-type and range-type iterators in general; for
+ containers whose interface defines sequence order, however, it
+ is very simple: point-type and range-type iterators are exactly
+ the same, which means that the above snippet will compile if it
+ is used for an order-preserving associative container.</p>
+
+ <p>For self-organizing containers, however, (hash-based
+ containers as a special example), the preceding snippet will
+ not compile, because their point-type iterators do not support
+ <tt><b>operator</b>++</tt>.</p>
+
+ <p>In any case, both for order-preserving and self-organizing
+ containers, the following snippet will compile:</p>
+ <pre>
+<b>typename</b> Cntnr::point_iterator it = c.find(2);
+</pre>
+
+ <p>because a range-type iterator can always be converted to a
+ point-type iterator.</p>
+
+ <p><a href="ds_gen.html#find_range">Design::Associative
+ Containers::Data-Structure Genericity::Point-Type and
+ Range-Type Methods and Iterators</a> discusses this
+ further.</p>
+
+ <p><a href=
+ "motivation.html#assoc_diff_it">Motivation::Associative
+ Containers::Differentiating between Iterator Types</a> also
+ raised the point that a container's iterators might have
+ different invalidation rules concerning their de-referencing
+ abilities and movement abilities. This now corresponds exactly
+ to the question of whether point-type and range-type iterators
+ are valid. As explained in <a href="#assoc_ds_gen">Determining
+ Containers' Attributes</a>, <a href=
+ "assoc_container_traits.html"><tt>container_traits</tt></a> allows
+ querying a container for its data structure attributes. The
+ iterator-invalidation guarantees are certainly a property of
+ the underlying data structure, and so</p>
+ <pre>
+<a href=
+"assoc_container_traits.html">container_traits</a>&lt;C&gt;::invalidation_guarantee
+</pre>
+
+ <p>gives one of three pre-determined types that answer this
+ query. This is explained further in <a href=
+ "ds_gen.html#find_range">Design::Associative
+ Containers::Data-Structure Genericity::Point-Type and
+ Range-Type Methods and Iterators</a>.</p>
+
+ <h3><a name="assoc_ms" id="assoc_ms">Distinguishing between Maps and Sets</a></h3>
+
+ <p>Anyone familiar with the STL knows that there are four kinds
+ of associative containers: maps, sets, multimaps, and
+ multisets. <a href="#assoc_basic">Basic Use</a> discussed how
+ to use maps, <i>i.e.</i> containers that associate each key to
+ some data.</p>
+
+ <p>Sets are associative containers that simply store keys -
+ they do not map them to anything. In the STL, each map class
+ has a corresponding set class. <i>E.g.</i>,
+ <tt>std::map&lt;<b>int</b>, <b>char</b>&gt;</tt> maps each
+ <tt><b>int</b></tt> to a <tt><b>char</b></tt>, but
+ <tt>std::set&lt;<b>int</b>, <b>char</b>&gt;</tt> simply stores
+ <tt><b>int</b></tt>s. In <tt>pb_ds</tt>, however, there are no
+ distinct classes for maps and sets. Instead, an associative
+ container's <tt>Mapped</tt> template parameter is a policy: if
+ it is instantiated by <a href=
+ "null_mapped_type.html"><tt>null_mapped_type</tt></a>, then it
+ is a "set"; otherwise, it is a "map". <i>E.g.</i>,</p>
+ <pre>
+<a href="cc_hash_table.html">cc_hash_table</a>&lt;<b>int</b>, <b>char</b>&gt;
+</pre>is a "map" mapping each <tt><b>int</b></tt> value to a <tt>
+ <b>char</b></tt>, but
+ <pre>
+<a href="cc_hash_table.html">cc_hash_table</a>&lt;<b>int</b>, <a href="null_mapped_type.html">null_mapped_type</a>&gt;
+</pre>is a type that uniquely stores <tt><b>int</b></tt> values.
+
+ <p>Once the <tt>Mapped</tt> template parameter is instantiated
+ by <a href="null_mapped_type.html">null_mapped_type</a>, then
+ the "set" acts very similarly to the STL's sets - it does not
+ map each key to a distinct <a href=
+ "null_mapped_type.html">null_mapped_type</a> object. Also,
+ , the container's <tt>value_type</tt> is essentially
+ its <tt>key_type</tt> - just as with the STL's sets. For a simple example, see <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/basic_set.cc"><tt>basic_set.cc</tt></a>
+ .</p>
+
+ <p>The STL's multimaps and multisets allow, respectively,
+ non-uniquely mapping keys and non-uniquely storing keys. As
+ discussed in <a href=
+ "motivation.html#assoc_mapping_semantics">Motivation::Associative
+ Containers::Alternative to Multiple Equivalent Keys</a>, the
+ reasons why this might be necessary are 1) that a key might be
+ decomposed into a primary key and a secondary key, 2) that a
+ key might appear more than once, or 3) any arbitrary
+ combination of 1)s and 2)s. Correspondingly,
+ one should use 1) "maps" mapping primary keys to secondary
+ keys, 2) "maps" mapping keys to size types, or 3) any arbitrary
+ combination of 1)s and 2)s. Thus, for example, an
+ <tt>std::multiset&lt;<b>int</b>&gt;</tt> might be used to store
+ multiple instances of integers, but using <tt>pb_ds</tt>'s
+ containers, one might use</p>
+ <pre>
+<a href=
+"tree.html">tree</a>&lt;<b>int</b>, size_t&gt;
+</pre><i>i.e.</i>, a "map" of <tt><b>int</b></tt>s to
+<tt>size_t</tt>s.
+
+ <p><a href="assoc_examples.html#mmaps">Associative-Container
+ Examples::"Multimaps" and "Multisets"</a> shows some simple
+ examples.</p>
+
+ <p>These "multimaps" and "multisets" might be confusing to
+ anyone familiar with the STL's <tt>std::multimap</tt> and
+ <tt>std::multiset</tt>, because there is no clear
+ correspondence between the two. For example, in some cases
+ where one uses <tt>std::multiset</tt> in the STL, one might use
+ in <tt>pb_ds</tt> a "multimap" of "multisets" - <i>i.e.</i>, a
+ container that maps primary keys each to an associative
+ container that maps each secondary key to the number of times
+ it occurs.</p>
+
+ <p>When one uses a "multimap," one should choose with care the
+ type of container used for secondary keys. This is further
+ explained in <a href=
+ "assoc_performance_tests.html#msc">Associative-Container
+ Performance Tests::Observations::Mapping-Semantics
+ Considerations</a>.</p>
+
+<hr>
+ <h2><a name="pq" id="pq">Priority Queues</a></h2>
+
+ <h3><a name="pq_basic" id="pq_basic">Basic Use</a></h3>
+
+ <p><tt>pb_ds</tt>'s priority_queue container is
+ similar to the STL's in interface. For example:</p>
+ <pre>
+<a href=
+"priority_queue.html">priority_queue</a>&lt;<b>int</b>&gt; p;
+
+p.push(2);
+p.push(4);
+p.push(1);
+
+assert(p.top() == 4);
+
+p.pop();
+
+assert(p.top() == 2);
+
+assert(p.size() == 2);
+assert(!p.empty());
+</pre>
+
+ <h3><a name="pq_policies" id="pq_policies">Configuring Priority
+ Queues</a></h3>
+
+ <p>As opposed to associative containers, priority queues have
+ relatively few configuration options. The priority queue is
+ parametrized as follows:</p>
+ <pre>
+<b>template</b>&lt;
+ <b>typename</b> Value_Type,
+ <b>typename</b> Cmp_Fn,
+ <b>typename</b> Tag,
+ <b>typename</b> Allocator&gt;
+<b>class</b> <a href="priority_queue.html">priority_queue</a>;
+</pre>
+
+ <p>The <tt>Value_Type</tt>, <tt>Cmp_Fn</tt>, and
+ <tt>Allocator</tt> parameters are the container's value type,
+ comparison-functor type, and allocator type, respectively;
+ these are very similar to the STL's priority queue. The
+ <tt>Tag</tt> parameter is different: there are a number of
+ pre-defined tag types corresponding to binary heaps, binomial
+ heaps, <i>etc.</i>, and <tt>Tag</tt> should be instantiated
+ by one of them. <a href=
+ "interface.html#ds_ts_pq">Interface::Data-Structure Tags and
+ Traits::Data Structure Tags::Priority-Queues</a> lists the
+ possible types, <a href="pq_design.html">Priority-Queue
+ Design</a> explains this further, and <a href=
+ "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/basic_priority_queue.cc"><tt>basic_priority_queue.cc</tt></a>
+ shows an example.</p>
+
+ <p>Note that as opposed to the STL's priority queue, <a href=
+ "priority_queue.html"><tt>priority_queue</tt></a> is not a
+ sequence-adapter; it is a regular container.</p>
+
+ <h3><a name="pq_ds_more_ops" id="pq_ds_more_ops">Supporting
+ More Operations</a></h3>
+
+ <p><a href="priority_queue.html"><tt>priority_queue</tt></a>'s
+ <tt>push</tt> method returns a point-type iterator, which can
+ be used for modifying or erasing arbitrary values. For
+ example:</p>
+ <pre>
+<a href=
+"priority_queue.html">priority_queue</a>&lt;<b>int</b>&gt; p;
+
+<a href=
+"priority_queue.html">priority_queue</a>&lt;<b>int</b>&gt;::point_iterator it = p.push(3);
+
+p.modify(it, 4);
+</pre>
+
+ <p>These types of operations are necessary for making priority
+ queues useful for different applications, especially graph
+ applications. <a href="pq_examples.html#xref">Priority-Queue
+ Examples::Cross-Referencing</a> gives some examples.</p>
+
+ <h3><a name="pq_ds_gen" id="pq_ds_gen">Determining Container
+ Attributes</a></h3>
+
+ <p>Similarly to <a href=
+ "assoc_container_traits.html"><tt>container_traits</tt></a> (described
+ in <a href="#assoc_ds_gen">Associative Containers::Determining
+ Containers' Attributes</a>), <a href=
+ "pq_container_traits.html"><tt>container_traits</tt></a> can be used to
+ statically determine priority-queues' attributes:</p>
+ <pre>
+<a href=
+"pq_container_traits.html">container_traits</a>&lt;C&gt;::container_category
+</pre>is one of a small number of predefined tag structures that
+identifies the underlying data structure, and
+ <pre>
+<a href=
+"pq_container_traits.html">container_traits</a>&lt;C&gt;::invalidation_guarantee
+</pre>
+
+ <p>is its invalidation guarantee. Invalidation guarantees are
+ especially important regarding priority queues, since in
+ <tt>pb_ds</tt>'s design, iterators are practically the only way
+ to manipulate them.</p>
+
+ <p><a href="pq_design.html#pq_traits">Design::Priority
+ Queues::Traits</a> discusses this further. <a href=
+ "pq_examples.html#generics">Priority-Queue
+ Examples::Generics</a> shows an example.</p>
+ </div>
+</body>
+</html>
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/update_policy_cd.png b/libstdc++-v3/doc/html/ext/pb_ds/update_policy_cd.png
new file mode 100644
index 000000000..115a751c3
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/update_policy_cd.png
Binary files differ
diff --git a/libstdc++-v3/doc/html/ext/pb_ds/update_seq_diagram.png b/libstdc++-v3/doc/html/ext/pb_ds/update_seq_diagram.png
new file mode 100644
index 000000000..880a50edf
--- /dev/null
+++ b/libstdc++-v3/doc/html/ext/pb_ds/update_seq_diagram.png
Binary files differ