From ce1140e3f2f7cd0a2533998369e60a085f703c3f Mon Sep 17 00:00:00 2001 From: Benjamin Kosnik Date: Fri, 29 Jul 2011 22:31:30 +0000 Subject: [PATCH] Docbook conversion of existing ext/pb_ds documentation. 2011-07-29 Benjamin Kosnik Docbook conversion of existing ext/pb_ds documentation. * doc/Makefile.am (xml_sources_manual): Add policy_data_structures.xml and test_policy_data_structures.xml. (stamp-html-copy): Remove special-case for ext/pb_ds directory. (XSLTPROC_FLAGS): Split into XSLT_FLAGS and XSLT_PARAM, use. * doc/Makefile.in: Regenerate. * doc/xml/manual/policy_data_structures.xml: New, adapted from previous html-only instance in doc/html/ext/pb_ds. * doc/xml/manual/test_policy_data_structures.xml: New, same as above. * doc/xml/spine.xml: Update copyright. * doc/xml/manual/spine.xml: Same. * doc/xml/manual/extensions.xml: Adjust set, chapter, sections. * doc/xml/manual/bitmap_allocator.xml: Same. * doc/xml/manual/mt_allocator.xml: Same. Populate image directory. * doc/xml/images/(pbds_balls_and_bins.png, pbds_binary_priority_queue_random_int_push_timing_test_local.pdf, pbds_binary_priority_queue_random_int_push_timing_test_local.png, pbds_binary_priority_queue_random_int_push_timing_test_local.svg, pbds_cc_hash_random_int_find_timing_test_local.pdf, pbds_cc_hash_random_int_find_timing_test_local.png, pbds_cc_hash_random_int_find_timing_test_local.svg, pbds_cc_hash_random_int_subscript_timing_test_find_local.pdf, pbds_cc_hash_random_int_subscript_timing_test_find_local.png, pbds_cc_hash_random_int_subscript_timing_test_find_local.svg, pbds_cc_hash_random_int_subscript_timing_test_insert_local.pdf, pbds_cc_hash_random_int_subscript_timing_test_insert_local.png, pbds_cc_hash_random_int_subscript_timing_test_insert_local.svg, pbds_container_tag_hierarchy.pdf, pbds_container_tag_hierarchy.png, pbds_container_tag_hierarchy.svg, pbds_different_underlying_dss_1.png, pbds_different_underlying_dss_2.png, pbds_embedded_lists_1.png, pbds_embedded_lists_2.png, pbds_embedded_lists_3.png, pbds_exception_hierarchy.pdf, pbds_exception_hierarchy.png, pbds_exception_hierarchy.svg, pbds_gp_hash_random_int_find_timing_test_local.pdf, pbds_gp_hash_random_int_find_timing_test_local.png, pbds_gp_hash_random_int_find_timing_test_local.svg, pbds_gp_hash_random_int_subscript_timing_test_find_local.pdf, pbds_gp_hash_random_int_subscript_timing_test_find_local.png, pbds_gp_hash_random_int_subscript_timing_test_find_local.svg, pbds_gp_hash_random_int_subscript_timing_test_insert_local.pdf, pbds_gp_hash_random_int_subscript_timing_test_insert_local.png, pbds_gp_hash_random_int_subscript_timing_test_insert_local.svg, pbds_hash_policy_cd.png, pbds_hash_random_int_erase_mem_usage_test_local.pdf, pbds_hash_random_int_erase_mem_usage_test_local.png, pbds_hash_random_int_erase_mem_usage_test_local.svg, pbds_hash_ranged_hash_range_hashing_fns.png, pbds_hash_range_hashing_seq_diagram2.png, pbds_hash_range_hashing_seq_diagram.png, pbds_hash_zlob_random_int_find_timing_test_local.pdf, pbds_hash_zlob_random_int_find_timing_test_local.png, pbds_hash_zlob_random_int_find_timing_test_local.svg, pbds_insert_resize_sequence_diagram1.png, pbds_insert_resize_sequence_diagram2.png, pbds_insert_resize_sequence_diagram3.png, pbds_invalidation_guarantee_erase.png, pbds_invalidation_tag_hierarchy.pdf, pbds_invalidation_tag_hierarchy.png, pbds_invalidation_tag_hierarchy.svg, pbds_list_update.png, pbds_multimap_text_find_timing_test_large_s2p_hash_local.pdf, pbds_multimap_text_find_timing_test_large_s2p_hash_local.png, pbds_multimap_text_find_timing_test_large_s2p_hash_local.svg, pbds_multimap_text_find_timing_test_large_s2p_tree_local.pdf, pbds_multimap_text_find_timing_test_large_s2p_tree_local.png, pbds_multimap_text_find_timing_test_large_s2p_tree_local.svg, pbds_multimap_text_find_timing_test_small_s2p_hash_local.pdf, pbds_multimap_text_find_timing_test_small_s2p_hash_local.png, pbds_multimap_text_find_timing_test_small_s2p_hash_local.svg, pbds_multimap_text_find_timing_test_small_s2p_tree_local.pdf, pbds_multimap_text_find_timing_test_small_s2p_tree_local.png, pbds_multimap_text_find_timing_test_small_s2p_tree_local.svg, pbds_multimap_text_insert_mem_usage_test_large_s2p_hash_local.pdf, pbds_multimap_text_insert_mem_usage_test_large_s2p_hash_local.png, pbds_multimap_text_insert_mem_usage_test_large_s2p_hash_local.svg, pbds_multimap_text_insert_mem_usage_test_large_s2p_tree_local.pdf, pbds_multimap_text_insert_mem_usage_test_large_s2p_tree_local.png, pbds_multimap_text_insert_mem_usage_test_large_s2p_tree_local.svg, pbds_multimap_text_insert_mem_usage_test_small_s2p_hash_local.pdf, pbds_multimap_text_insert_mem_usage_test_small_s2p_hash_local.png, pbds_multimap_text_insert_mem_usage_test_small_s2p_hash_local.svg, pbds_multimap_text_insert_mem_usage_test_small_s2p_tree_local.pdf, pbds_multimap_text_insert_mem_usage_test_small_s2p_tree_local.png, pbds_multimap_text_insert_mem_usage_test_small_s2p_tree_local.svg, pbds_multimap_text_insert_timing_test_large_s2p_hash_local.pdf, pbds_multimap_text_insert_timing_test_large_s2p_hash_local.png, pbds_multimap_text_insert_timing_test_large_s2p_hash_local.svg, pbds_multimap_text_insert_timing_test_large_s2p_tree_local.pdf, pbds_multimap_text_insert_timing_test_large_s2p_tree_local.png, pbds_multimap_text_insert_timing_test_large_s2p_tree_local.svg, pbds_multimap_text_insert_timing_test_small_s2p_hash_local.pdf, pbds_multimap_text_insert_timing_test_small_s2p_hash_local.png, pbds_multimap_text_insert_timing_test_small_s2p_hash_local.svg, pbds_multimap_text_insert_timing_test_small_s2p_tree_local.pdf, pbds_multimap_text_insert_timing_test_small_s2p_tree_local.png, pbds_multimap_text_insert_timing_test_small_s2p_tree_local.svg, pbds_node_invariants.png, pbds_pairing_priority_queue_text_push_pop_timing_test_local.pdf, pbds_pairing_priority_queue_text_push_pop_timing_test_local.png, pbds_pairing_priority_queue_text_push_pop_timing_test_local.svg, pbds_pairing_priority_queue_text_push_timing_test_local.pdf, pbds_pairing_priority_queue_text_push_timing_test_local.png, pbds_pairing_priority_queue_text_push_timing_test_local.svg, pbds_pat_trie.png, pbds_point_iterator_hierarchy.png, pbds_point_iterators_range_ops_1.png, pbds_point_iterators_range_ops_2.png, pbds_priority_queue_different_underlying_dss.png, pbds_priority_queue_random_int_push_pop_timing_test_local.pdf, pbds_priority_queue_random_int_push_pop_timing_test_local.png, pbds_priority_queue_random_int_push_pop_timing_test_local.svg, pbds_priority_queue_random_int_push_timing_test_local.pdf, pbds_priority_queue_random_int_push_timing_test_local.png, pbds_priority_queue_random_int_push_timing_test_local.svg, pbds_priority_queue_tag_hierarchy.pdf, pbds_priority_queue_tag_hierarchy.png, pbds_priority_queue_tag_hierarchy.svg, pbds_priority_queue_text_join_timing_test_local.pdf, pbds_priority_queue_text_join_timing_test_local.png, pbds_priority_queue_text_join_timing_test_local.svg, pbds_priority_queue_text_modify_down_timing_test_local.pdf, pbds_priority_queue_text_modify_down_timing_test_local.png, pbds_priority_queue_text_modify_down_timing_test_local.svg, pbds_priority_queue_text_modify_down_timing_test_pairing_thin_local.pdf, pbds_priority_queue_text_modify_down_timing_test_pairing_thin_local.png, pbds_priority_queue_text_modify_down_timing_test_pairing_thin_local.svg, pbds_priority_queue_text_modify_up_timing_test_local.pdf, pbds_priority_queue_text_modify_up_timing_test_local.png, pbds_priority_queue_text_modify_up_timing_test_local.svg, pbds_priority_queue_text_modify_up_timing_test_pairing_thin_local.pdf, pbds_priority_queue_text_modify_up_timing_test_pairing_thin_local.png, pbds_priority_queue_text_modify_up_timing_test_pairing_thin_local.svg, pbds_priority_queue_text_pop_mem_usage_test_local.pdf, pbds_priority_queue_text_pop_mem_usage_test_local.png, pbds_priority_queue_text_pop_mem_usage_test_local.svg, pbds_priority_queue_text_push_pop_timing_test_local.pdf, pbds_priority_queue_text_push_pop_timing_test_local.png, pbds_priority_queue_text_push_pop_timing_test_local.svg, pbds_priority_queue_text_push_timing_test_local.pdf, pbds_priority_queue_text_push_timing_test_local.png, pbds_priority_queue_text_push_timing_test_local.svg, pbds_rationale_null_node_updator.png, pbds_resize_policy_cd.png, pbds_restoring_node_invariants.png, pbds_simple_list.png, pbds_text_find_timing_test_hash_local.pdf, pbds_text_find_timing_test_hash_local.png, pbds_text_find_timing_test_hash_local.svg, pbds_text_find_timing_test_tree_like_local.pdf, pbds_text_find_timing_test_tree_like_local.png, pbds_text_find_timing_test_tree_like_local.svg, pbds_tree_node_invalidations.png, pbds_tree_node_invariants.png, pbds_tree_node_updator_policy_cd.png, pbds_tree_order_statistics_timing_test_local.pdf, pbds_tree_order_statistics_timing_test_local.png, pbds_tree_order_statistics_timing_test_local.svg, pbds_tree_split_join_timing_test_local.pdf, pbds_tree_split_join_timing_test_local.png, pbds_tree_split_join_timing_test_local.svg, pbds_tree_text_insert_timing_test_node_tree_local.pdf, pbds_tree_text_insert_timing_test_node_tree_local.png, pbds_tree_text_insert_timing_test_node_tree_local.svg, pbds_tree_text_insert_timing_test_pat_trie_local.pdf, pbds_tree_text_insert_timing_test_pat_trie_local.png, pbds_tree_text_insert_timing_test_pat_trie_local.svg, pbds_tree_text_insert_timing_test_vector_tree_local.pdf, pbds_tree_text_insert_timing_test_vector_tree_local.png, pbds_tree_text_insert_timing_test_vector_tree_local.svg, pbds_tree_text_lor_find_timing_test_local.pdf, pbds_tree_text_lor_find_timing_test_local.png, pbds_tree_text_lor_find_timing_test_local.svg, pbds_trie_node_updator_policy_cd.png, pbds_update_seq_diagram.png): Add. * doc/html/ext/pb_ds: Remove. * doc/html/ext/pb_ds/(acks.html, assoc_container_tag_cd.png, assoc_container_tag_cd.svg, assoc_container_traits.html, assoc_design.html, assoc_examples.html, associative_container_tag.html, assoc_performance_tests.html, assoc_regression_tests.html, assoc_tests.html, balls_and_bins.png, basic_hash_table.html, basic_hash_tag.html, basic_invalidation_guarantee.html, basic_tree_assoc_container_const_node_iterator.html, basic_tree.html, basic_tree_tag.html, binary_heap_tag.html, binary_priority_queue_random_int_push_timing_test_gcc.png, binary_priority_queue_random_int_push_timing_test_local.png, binary_priority_queue_random_int_push_timing_test_msvc.png, binomial_heap_tag.html, ccgp_hash_random_int_subscript_timing_test_insert_gcc.png, ccgp_hash_random_int_subscript_timing_test_insert_local.png, ccgp_hash_random_int_subscript_timing_test_insert_msvc.png, cc_hash_max_collision_check_resize_trigger.html, cc_hash_random_int_find_timing_test_gcc.png, cc_hash_random_int_find_timing_test_local.png, cc_hash_random_int_find_timing_test_msvc.png, cc_hash_random_int_subscript_timing_test_find_gcc.png, cc_hash_random_int_subscript_timing_test_find_local.png, cc_hash_random_int_subscript_timing_test_find_msvc.png, cc_hash_random_int_subscript_timing_test_insert_gcc.png, cc_hash_random_int_subscript_timing_test_insert_local.png, cc_hash_random_int_subscript_timing_test_insert_msvc.png, cc_hash_table.html, cc_hash_tag.html, checked_by_tidy.gif concepts.html, contact.html, container_base.html, container_cd.png, container_cd.svg, container_tag.html, counter_lu_policy.html, design.html, different_underlying_dss.png, direct_mask_range_hashing.html, direct_mod_range_hashing.html, disclaimer.html, ds_gen.html, embedded_lists_1.png, embedded_lists_2.png, embedded_lists_3.png, examples.html, exceptions.html, gp_hash_random_int_find_timing_test_gcc.png, gp_hash_random_int_find_timing_test_local.png, gp_hash_random_int_find_timing_test_msvc.png, gp_hash_random_int_subscript_timing_test_find_gcc.png, gp_hash_random_int_subscript_timing_test_find_local.png, gp_hash_random_int_subscript_timing_test_find_msvc.png, gp_hash_random_int_subscript_timing_test_insert_gcc.png, gp_hash_random_int_subscript_timing_test_insert_local.png, gp_hash_random_int_subscript_timing_test_insert_msvc.png, gp_hash_table.html, gp_hash_tag.html, hash_based_containers.html, hash_exponential_size_policy.html, hash_load_check_resize_trigger.html, hash_policy_cd.png, hash_prime_size_policy.html, hash_random_int_erase_mem_usage_test_gcc.png, hash_random_int_erase_mem_usage_test.html, hash_random_int_erase_mem_usage_test_local.png, hash_random_int_erase_mem_usage_test_msvc.png, hash_random_int_find_find_timing_test.html, hash_random_int_subscript_find_timing_test.html, hash_random_int_subscript_insert_timing_test.html, hash_ranged_hash_range_hashing_fns.png, hash_range_hashing_seq_diagram2.png, hash_range_hashing_seq_diagram.png, hash_standard_resize_policy.html, hash_text_find_find_timing_test.html, hash_zlob_random_int_find_find_timing_test.html, hash_zlob_random_int_find_timing_test_gcc.png, hash_zlob_random_int_find_timing_test_local.png, hash_zlob_random_int_find_timing_test_msvc.png, index.html, insert_error.html, insert_resize_sequence_diagram1.png, insert_resize_sequence_diagram2.png, insert_resize_sequence_diagram3.png, interface.html, introduction.html, invalidation_guarantee_cd.png, invalidation_guarantee_erase.png, join_error.html, linear_probe_fn.html, list_update.html, list_update_tag.html, lu_based_containers.html, lu.png, misc.html, motivation.html, move_to_front_lu_policy.html, multimap_text_find_timing_test_large.html, multimap_text_find_timing_test_large_s2p_hash_gcc.png, multimap_text_find_timing_test_large_s2p_hash_local.png, multimap_text_find_timing_test_large_s2p_hash_msvc.png, multimap_text_find_timing_test_large_s2p_tree_gcc.png, multimap_text_find_timing_test_large_s2p_tree_local.png, multimap_text_find_timing_test_large_s2p_tree_msvc.png, multimap_text_find_timing_test_small.html, multimap_text_find_timing_test_small_s2p_hash_gcc.png, multimap_text_find_timing_test_small_s2p_hash_local.png, multimap_text_find_timing_test_small_s2p_hash_msvc.png, multimap_text_find_timing_test_small_s2p_tree_gcc.png, multimap_text_find_timing_test_small_s2p_tree_local.png, multimap_text_find_timing_test_small_s2p_tree_msvc.png, multimap_text_insert_mem_usage_test_large.html, multimap_text_insert_mem_usage_test_large_s2p_hash_gcc.png, multimap_text_insert_mem_usage_test_large_s2p_hash_local.png, multimap_text_insert_mem_usage_test_large_s2p_hash_msvc.png, multimap_text_insert_mem_usage_test_large_s2p_tree_gcc.png, multimap_text_insert_mem_usage_test_large_s2p_tree_local.png, multimap_text_insert_mem_usage_test_large_s2p_tree_msvc.png, multimap_text_insert_mem_usage_test_small.html, multimap_text_insert_mem_usage_test_small_s2p_hash_gcc.png, multimap_text_insert_mem_usage_test_small_s2p_hash_local.png, multimap_text_insert_mem_usage_test_small_s2p_hash_msvc.png, multimap_text_insert_mem_usage_test_small_s2p_tree_gcc.png, multimap_text_insert_mem_usage_test_small_s2p_tree_local.png, multimap_text_insert_mem_usage_test_small_s2p_tree_msvc.png, multimap_text_insert_timing_test_large.html, multimap_text_insert_timing_test_large_s2p_hash_gcc.png, multimap_text_insert_timing_test_large_s2p_hash_local.png, multimap_text_insert_timing_test_large_s2p_hash_msvc.png, multimap_text_insert_timing_test_large_s2p_tree_gcc.png, multimap_text_insert_timing_test_large_s2p_tree_local.png, multimap_text_insert_timing_test_large_s2p_tree_msvc.png, multimap_text_insert_timing_test_small.html, multimap_text_insert_timing_test_small_s2p_hash_gcc.png, multimap_text_insert_timing_test_small_s2p_hash_local.png, multimap_text_insert_timing_test_small_s2p_hash_msvc.png, multimap_text_insert_timing_test_small_s2p_tree_gcc.png, multimap_text_insert_timing_test_small_s2p_tree_local.png, multimap_text_insert_timing_test_small_s2p_tree_msvc.png, node_invariant_invalidations.png, node_invariants.png, null_hash_fn.html, null_lu_metadata.html, null_mapped_type.html, null_probe_fn.html, null_tree_node_update.html, null_trie_node_update.html, ov_tree_tag.html, pairing_heap_tag.html, pairing_priority_queue_text_push_pop_timing_test_gcc.png, pairing_priority_queue_text_push_pop_timing_test_local.png, pairing_priority_queue_text_push_pop_timing_test_msvc.png, pairing_priority_queue_text_push_timing_test_gcc.png, pairing_priority_queue_text_push_timing_test_local.png, pairing_priority_queue_text_push_timing_test_msvc.png, pat_trie.png, pat_trie_tag.html, point_invalidation_guarantee.html, point_iterators_cd.png, point_iterators_range_ops_1.png, point_iterators_range_ops_2.png, pq_container_traits.html, pq_design.html, pq_different_underlying_dss.png, pq_examples.html, pq_performance_tests.html, pq_regression_tests.html, pq_tests.html, prerequisites.html, priority_queue.html, priority_queue_random_int_push_pop_timing_test_gcc.png, priority_queue_random_int_push_pop_timing_test.html, priority_queue_random_int_push_pop_timing_test_local.png, priority_queue_random_int_push_pop_timing_test_msvc.png, priority_queue_random_int_push_timing_test_gcc.png, priority_queue_random_int_push_timing_test.html, priority_queue_random_int_push_timing_test_local.png, priority_queue_random_int_push_timing_test_msvc.png, priority_queue_tag_cd.png, priority_queue_tag_cd.svg, priority_queue_tag.html, priority_queue_text_join_timing_test_gcc.png, priority_queue_text_join_timing_test.html, priority_queue_text_join_timing_test_local.png, priority_queue_text_join_timing_test_msvc.png, priority_queue_text_modify_down_timing_test_gcc.png, priority_queue_text_modify_down_timing_test.html, priority_queue_text_modify_down_timing_test_local.png, priority_queue_text_modify_down_timing_test_msvc.png, priority_queue_text_modify_down_timing_test_pairing_thin_gcc.png, priority_queue_text_modify_down_timing_test_pairing_thin_local.png, priority_queue_text_modify_down_timing_test_pairing_thin_msvc.png, priority_queue_text_modify_up_timing_test_gcc.png, priority_queue_text_modify_up_timing_test.html, priority_queue_text_modify_up_timing_test_local.png, priority_queue_text_modify_up_timing_test_msvc.png, priority_queue_text_modify_up_timing_test_pairing_thin_gcc.png, priority_queue_text_modify_up_timing_test_pairing_thin_local.png, priority_queue_text_modify_up_timing_test_pairing_thin_msvc.png, priority_queue_text_pop_mem_usage_test_gcc.png, priority_queue_text_pop_mem_usage_test.html, priority_queue_text_pop_mem_usage_test_local.png, priority_queue_text_pop_mem_usage_test_msvc.png, priority_queue_text_push_pop_timing_test_gcc.png, priority_queue_text_push_pop_timing_test.html, priority_queue_text_push_pop_timing_test_local.png, priority_queue_text_push_pop_timing_test_msvc.png, priority_queue_text_push_timing_test_gcc.png, priority_queue_text_push_timing_test.html, priority_queue_text_push_timing_test_local.png, priority_queue_text_push_timing_test_msvc.png, PythonPoweredSmall.gif quadratic_probe_fn.html, random_int_find_find_timing_test_tree_gcc.png, random_int_find_find_timing_test_tree_local.png, random_int_find_find_timing_test_tree_msvc.png, range_invalidation_guarantee.html, rationale_null_node_updator.png, rb_tree_tag.html, rc_binomial_heap_tag.html, references.html, resize_error.html, resize_policy_cd.png, restoring_node_invariants.png, sample_probe_fn.html, sample_ranged_hash_fn.html, sample_ranged_probe_fn.html, sample_range_hashing.html, sample_resize_policy.html, sample_resize_trigger.html, sample_size_policy.html, sample_tree_node_update.html, sample_trie_access_traits.html, sample_trie_node_update.html, sample_update_policy.html, simple_list.png, splay_tree_tag.html, tests.html, text_find_timing_test_hash_gcc.png, text_find_timing_test_hash_local.png, text_find_timing_test_hash_msvc.png, text_find_timing_test_tree_like_gcc.png, text_find_timing_test_tree_like_local.png, text_find_timing_test_tree_like_msvc.png, thin_heap_tag.html, tree_based_containers.html, tree.html, tree_node_iterator.html, tree_node_updator_policy_cd.png, tree_order_statistics_node_update.html, tree_order_statistics_timing_test_gcc.png, tree_order_statistics_timing_test.html, tree_order_statistics_timing_test_local.png, tree_order_statistics_timing_test_msvc.png, tree_random_int_find_find_timing_test.html, tree_split_join_timing_test_gcc.png, tree_split_join_timing_test.html, tree_split_join_timing_test_local.png, tree_split_join_timing_test_msvc.png, tree_tag.html, tree_text_find_find_timing_test.html, tree_text_insert_timing_test.html, tree_text_insert_timing_test_node_tree_gcc.png, tree_text_insert_timing_test_node_tree_local.png, tree_text_insert_timing_test_node_tree_msvc.png, tree_text_insert_timing_test_pat_trie_gcc.png, tree_text_insert_timing_test_pat_trie_local.png, tree_text_insert_timing_test_pat_trie_msvc.png, tree_text_insert_timing_test_vector_tree_gcc.png, tree_text_insert_timing_test_vector_tree_local.png, tree_text_insert_timing_test_vector_tree_msvc.png, tree_text_lor_find_find_timing_test.html, tree_text_lor_find_timing_test_gcc.png, tree_text_lor_find_timing_test_local.png, tree_text_lor_find_timing_test_msvc.png, trie_based_containers.html, trie_const_node_iterator.html, trie.html, trie_node_iterator.html, trie_node_updator_policy_cd.png, trie_order_statistics_node_update.html, trie_prefix_search_node_update.html, trie_string_access_traits.html, trie_tag.html, trivial_iterator_tag.html, tutorial.html, update_policy_cd.png, update_seq_diagram.png): Remove. From-SVN: r176952 --- libstdc++-v3/ChangeLog | 410 + libstdc++-v3/doc/Makefile.am | 13 +- libstdc++-v3/doc/Makefile.in | 13 +- .../doc/html/ext/pb_ds/PythonPoweredSmall.gif | Bin 361 -> 0 bytes libstdc++-v3/doc/html/ext/pb_ds/acks.html | 65 - .../html/ext/pb_ds/assoc_container_tag_cd.png | Bin 21668 -> 0 bytes .../html/ext/pb_ds/assoc_container_tag_cd.svg | 491 - .../ext/pb_ds/assoc_container_traits.html | 170 - .../doc/html/ext/pb_ds/assoc_design.html | 46 - .../doc/html/ext/pb_ds/assoc_examples.html | 151 - .../ext/pb_ds/assoc_performance_tests.html | 345 - .../ext/pb_ds/assoc_regression_tests.html | 93 - .../doc/html/ext/pb_ds/assoc_tests.html | 24 - .../ext/pb_ds/associative_container_tag.html | 47 - .../doc/html/ext/pb_ds/basic_hash_table.html | 436 - .../doc/html/ext/pb_ds/basic_hash_tag.html | 47 - .../pb_ds/basic_invalidation_guarantee.html | 26 - .../doc/html/ext/pb_ds/basic_tree.html | 660 -- ...e_assoc_container_const_node_iterator.html | 383 - .../doc/html/ext/pb_ds/basic_tree_tag.html | 47 - .../doc/html/ext/pb_ds/binary_heap_tag.html | 47 - ..._queue_random_int_push_timing_test_gcc.png | Bin 5357 -> 0 bytes ...ueue_random_int_push_timing_test_local.png | Bin 23669 -> 0 bytes ...queue_random_int_push_timing_test_msvc.png | Bin 5373 -> 0 bytes .../doc/html/ext/pb_ds/binomial_heap_tag.html | 47 - ...sh_max_collision_check_resize_trigger.html | 532 - ...c_hash_random_int_find_timing_test_gcc.png | Bin 7074 -> 0 bytes ...hash_random_int_find_timing_test_local.png | Bin 48189 -> 0 bytes ..._hash_random_int_find_timing_test_msvc.png | Bin 7235 -> 0 bytes ...dom_int_subscript_timing_test_find_gcc.png | Bin 6811 -> 0 bytes ...m_int_subscript_timing_test_find_local.png | Bin 47325 -> 0 bytes ...om_int_subscript_timing_test_find_msvc.png | Bin 7230 -> 0 bytes ...m_int_subscript_timing_test_insert_gcc.png | Bin 7636 -> 0 bytes ...int_subscript_timing_test_insert_local.png | Bin 46842 -> 0 bytes ..._int_subscript_timing_test_insert_msvc.png | Bin 6840 -> 0 bytes .../doc/html/ext/pb_ds/cc_hash_table.html | 724 -- .../doc/html/ext/pb_ds/cc_hash_tag.html | 47 - ...m_int_subscript_timing_test_insert_gcc.png | Bin 7355 -> 0 bytes ...int_subscript_timing_test_insert_local.png | Bin 42763 -> 0 bytes ..._int_subscript_timing_test_insert_msvc.png | Bin 7572 -> 0 bytes .../doc/html/ext/pb_ds/checked_by_tidy.gif | Bin 1367 -> 0 bytes libstdc++-v3/doc/html/ext/pb_ds/concepts.html | 118 - libstdc++-v3/doc/html/ext/pb_ds/contact.html | 22 - .../doc/html/ext/pb_ds/container_base.html | 1063 -- .../doc/html/ext/pb_ds/container_cd.png | Bin 11884 -> 0 bytes .../doc/html/ext/pb_ds/container_cd.svg | 418 - .../doc/html/ext/pb_ds/container_tag.html | 24 - .../doc/html/ext/pb_ds/counter_lu_policy.html | 259 - libstdc++-v3/doc/html/ext/pb_ds/design.html | 96 - .../ext/pb_ds/direct_mask_range_hashing.html | 167 - .../ext/pb_ds/direct_mod_range_hashing.html | 144 - .../doc/html/ext/pb_ds/disclaimer.html | 34 - libstdc++-v3/doc/html/ext/pb_ds/ds_gen.html | 344 - libstdc++-v3/doc/html/ext/pb_ds/examples.html | 24 - .../doc/html/ext/pb_ds/exceptions.html | 46 - ...p_hash_random_int_find_timing_test_gcc.png | Bin 6194 -> 0 bytes ...hash_random_int_find_timing_test_local.png | Bin 33303 -> 0 bytes ..._hash_random_int_find_timing_test_msvc.png | Bin 6140 -> 0 bytes ...dom_int_subscript_timing_test_find_gcc.png | Bin 6110 -> 0 bytes ...m_int_subscript_timing_test_find_local.png | Bin 33148 -> 0 bytes ...om_int_subscript_timing_test_find_msvc.png | Bin 6314 -> 0 bytes ...m_int_subscript_timing_test_insert_gcc.png | Bin 6763 -> 0 bytes ...int_subscript_timing_test_insert_local.png | Bin 34794 -> 0 bytes ..._int_subscript_timing_test_insert_msvc.png | Bin 6721 -> 0 bytes .../doc/html/ext/pb_ds/gp_hash_table.html | 891 -- .../doc/html/ext/pb_ds/gp_hash_tag.html | 47 - .../html/ext/pb_ds/hash_based_containers.html | 835 -- .../pb_ds/hash_exponential_size_policy.html | 183 - .../pb_ds/hash_load_check_resize_trigger.html | 583 - .../ext/pb_ds/hash_prime_size_policy.html | 149 - .../hash_random_int_erase_mem_usage_test.html | 173 - ...sh_random_int_erase_mem_usage_test_gcc.png | Bin 6356 -> 0 bytes ..._random_int_erase_mem_usage_test_local.png | Bin 31203 -> 0 bytes ...h_random_int_erase_mem_usage_test_msvc.png | Bin 6401 -> 0 bytes ...hash_random_int_find_find_timing_test.html | 247 - ...random_int_subscript_find_timing_test.html | 220 - ...ndom_int_subscript_insert_timing_test.html | 365 - .../pb_ds/hash_standard_resize_policy.html | 795 -- .../hash_text_find_find_timing_test.html | 164 - ...zlob_random_int_find_find_timing_test.html | 163 - ...h_zlob_random_int_find_timing_test_gcc.png | Bin 6910 -> 0 bytes ...zlob_random_int_find_timing_test_local.png | Bin 38509 -> 0 bytes ..._zlob_random_int_find_timing_test_msvc.png | Bin 7204 -> 0 bytes libstdc++-v3/doc/html/ext/pb_ds/index.html | 146 - .../doc/html/ext/pb_ds/insert_error.html | 53 - .../doc/html/ext/pb_ds/interface.html | 446 - .../doc/html/ext/pb_ds/introduction.html | 120 - .../ext/pb_ds/invalidation_guarantee_cd.png | Bin 8331 -> 0 bytes .../doc/html/ext/pb_ds/join_error.html | 48 - .../doc/html/ext/pb_ds/linear_probe_fn.html | 140 - .../doc/html/ext/pb_ds/list_update.html | 316 - .../doc/html/ext/pb_ds/list_update_tag.html | 47 - .../html/ext/pb_ds/lu_based_containers.html | 229 - libstdc++-v3/doc/html/ext/pb_ds/misc.html | 26 - .../doc/html/ext/pb_ds/motivation.html | 993 -- .../ext/pb_ds/move_to_front_lu_policy.html | 194 - .../multimap_text_find_timing_test_large.html | 215 - ...xt_find_timing_test_large_s2p_hash_gcc.png | Bin 6323 -> 0 bytes ..._find_timing_test_large_s2p_hash_local.png | Bin 30126 -> 0 bytes ...t_find_timing_test_large_s2p_hash_msvc.png | Bin 6490 -> 0 bytes ...xt_find_timing_test_large_s2p_tree_gcc.png | Bin 6284 -> 0 bytes ..._find_timing_test_large_s2p_tree_local.png | Bin 26937 -> 0 bytes ...t_find_timing_test_large_s2p_tree_msvc.png | Bin 6204 -> 0 bytes .../multimap_text_find_timing_test_small.html | 215 - ...xt_find_timing_test_small_s2p_hash_gcc.png | Bin 6237 -> 0 bytes ..._find_timing_test_small_s2p_hash_local.png | Bin 29768 -> 0 bytes ...t_find_timing_test_small_s2p_hash_msvc.png | Bin 6268 -> 0 bytes ...xt_find_timing_test_small_s2p_tree_gcc.png | Bin 6064 -> 0 bytes ..._find_timing_test_small_s2p_tree_local.png | Bin 26702 -> 0 bytes ...t_find_timing_test_small_s2p_tree_msvc.png | Bin 6012 -> 0 bytes ...imap_text_insert_mem_usage_test_large.html | 210 - ...sert_mem_usage_test_large_s2p_hash_gcc.png | Bin 6835 -> 0 bytes ...rt_mem_usage_test_large_s2p_hash_local.png | Bin 32571 -> 0 bytes ...ert_mem_usage_test_large_s2p_hash_msvc.png | Bin 6588 -> 0 bytes ...sert_mem_usage_test_large_s2p_tree_gcc.png | Bin 6778 -> 0 bytes ...rt_mem_usage_test_large_s2p_tree_local.png | Bin 29526 -> 0 bytes ...ert_mem_usage_test_large_s2p_tree_msvc.png | Bin 6535 -> 0 bytes ...imap_text_insert_mem_usage_test_small.html | 212 - ...sert_mem_usage_test_small_s2p_hash_gcc.png | Bin 6449 -> 0 bytes ...rt_mem_usage_test_small_s2p_hash_local.png | Bin 31758 -> 0 bytes ...ert_mem_usage_test_small_s2p_hash_msvc.png | Bin 6570 -> 0 bytes ...sert_mem_usage_test_small_s2p_tree_gcc.png | Bin 6419 -> 0 bytes ...rt_mem_usage_test_small_s2p_tree_local.png | Bin 29258 -> 0 bytes ...ert_mem_usage_test_small_s2p_tree_msvc.png | Bin 6569 -> 0 bytes ...ultimap_text_insert_timing_test_large.html | 212 - ..._insert_timing_test_large_s2p_hash_gcc.png | Bin 6380 -> 0 bytes ...nsert_timing_test_large_s2p_hash_local.png | Bin 30954 -> 0 bytes ...insert_timing_test_large_s2p_hash_msvc.png | Bin 6460 -> 0 bytes ..._insert_timing_test_large_s2p_tree_gcc.png | Bin 6204 -> 0 bytes ...nsert_timing_test_large_s2p_tree_local.png | Bin 27038 -> 0 bytes ...insert_timing_test_large_s2p_tree_msvc.png | Bin 6357 -> 0 bytes ...ultimap_text_insert_timing_test_small.html | 217 - ..._insert_timing_test_small_s2p_hash_gcc.png | Bin 6456 -> 0 bytes ...nsert_timing_test_small_s2p_hash_local.png | Bin 31038 -> 0 bytes ...insert_timing_test_small_s2p_hash_msvc.png | Bin 6547 -> 0 bytes ..._insert_timing_test_small_s2p_tree_gcc.png | Bin 6111 -> 0 bytes ...nsert_timing_test_small_s2p_tree_local.png | Bin 26974 -> 0 bytes ...insert_timing_test_small_s2p_tree_msvc.png | Bin 6430 -> 0 bytes .../doc/html/ext/pb_ds/null_hash_fn.html | 32 - .../doc/html/ext/pb_ds/null_lu_metadata.html | 25 - .../doc/html/ext/pb_ds/null_mapped_type.html | 25 - .../doc/html/ext/pb_ds/null_probe_fn.html | 29 - .../html/ext/pb_ds/null_tree_node_update.html | 101 - .../html/ext/pb_ds/null_trie_node_update.html | 102 - .../doc/html/ext/pb_ds/ov_tree_tag.html | 47 - .../doc/html/ext/pb_ds/pairing_heap_tag.html | 47 - ...ty_queue_text_push_pop_timing_test_gcc.png | Bin 5395 -> 0 bytes ..._queue_text_push_pop_timing_test_local.png | Bin 26303 -> 0 bytes ...y_queue_text_push_pop_timing_test_msvc.png | Bin 5514 -> 0 bytes ...iority_queue_text_push_timing_test_gcc.png | Bin 5678 -> 0 bytes ...rity_queue_text_push_timing_test_local.png | Bin 25070 -> 0 bytes ...ority_queue_text_push_timing_test_msvc.png | Bin 5878 -> 0 bytes .../doc/html/ext/pb_ds/pat_trie_tag.html | 47 - .../pb_ds/point_invalidation_guarantee.html | 51 - .../html/ext/pb_ds/pq_container_traits.html | 132 - .../doc/html/ext/pb_ds/pq_design.html | 381 - .../doc/html/ext/pb_ds/pq_examples.html | 54 - .../html/ext/pb_ds/pq_performance_tests.html | 332 - .../html/ext/pb_ds/pq_regression_tests.html | 52 - libstdc++-v3/doc/html/ext/pb_ds/pq_tests.html | 24 - .../doc/html/ext/pb_ds/prerequisites.html | 46 - .../doc/html/ext/pb_ds/priority_queue.html | 995 -- ...queue_random_int_push_pop_timing_test.html | 161 - ...ue_random_int_push_pop_timing_test_gcc.png | Bin 7350 -> 0 bytes ..._random_int_push_pop_timing_test_local.png | Bin 46818 -> 0 bytes ...e_random_int_push_pop_timing_test_msvc.png | Bin 7065 -> 0 bytes ...ity_queue_random_int_push_timing_test.html | 200 - ..._queue_random_int_push_timing_test_gcc.png | Bin 7021 -> 0 bytes ...ueue_random_int_push_timing_test_local.png | Bin 41433 -> 0 bytes ...queue_random_int_push_timing_test_msvc.png | Bin 7100 -> 0 bytes .../html/ext/pb_ds/priority_queue_tag.html | 47 - .../html/ext/pb_ds/priority_queue_tag_cd.png | Bin 10845 -> 0 bytes .../html/ext/pb_ds/priority_queue_tag_cd.svg | 368 - .../priority_queue_text_join_timing_test.html | 141 - ...iority_queue_text_join_timing_test_gcc.png | Bin 6458 -> 0 bytes ...rity_queue_text_join_timing_test_local.png | Bin 38222 -> 0 bytes ...ority_queue_text_join_timing_test_msvc.png | Bin 6461 -> 0 bytes ...ty_queue_text_modify_down_timing_test.html | 204 - ...queue_text_modify_down_timing_test_gcc.png | Bin 6788 -> 0 bytes ...eue_text_modify_down_timing_test_local.png | Bin 37071 -> 0 bytes ...ueue_text_modify_down_timing_test_msvc.png | Bin 6956 -> 0 bytes ...dify_down_timing_test_pairing_thin_gcc.png | Bin 5007 -> 0 bytes ...fy_down_timing_test_pairing_thin_local.png | Bin 22019 -> 0 bytes ...ify_down_timing_test_pairing_thin_msvc.png | Bin 4996 -> 0 bytes ...rity_queue_text_modify_up_timing_test.html | 222 - ...y_queue_text_modify_up_timing_test_gcc.png | Bin 6950 -> 0 bytes ...queue_text_modify_up_timing_test_local.png | Bin 36882 -> 0 bytes ..._queue_text_modify_up_timing_test_msvc.png | Bin 6983 -> 0 bytes ...modify_up_timing_test_pairing_thin_gcc.png | Bin 4867 -> 0 bytes ...dify_up_timing_test_pairing_thin_local.png | Bin 22214 -> 0 bytes ...odify_up_timing_test_pairing_thin_msvc.png | Bin 5216 -> 0 bytes ...riority_queue_text_pop_mem_usage_test.html | 143 - ...rity_queue_text_pop_mem_usage_test_gcc.png | Bin 6582 -> 0 bytes ...ty_queue_text_pop_mem_usage_test_local.png | Bin 31248 -> 0 bytes ...ity_queue_text_pop_mem_usage_test_msvc.png | Bin 6849 -> 0 bytes ...ority_queue_text_push_pop_timing_test.html | 209 - ...ty_queue_text_push_pop_timing_test_gcc.png | Bin 7072 -> 0 bytes ..._queue_text_push_pop_timing_test_local.png | Bin 46440 -> 0 bytes ...y_queue_text_push_pop_timing_test_msvc.png | Bin 7289 -> 0 bytes .../priority_queue_text_push_timing_test.html | 219 - ...iority_queue_text_push_timing_test_gcc.png | Bin 6832 -> 0 bytes ...rity_queue_text_push_timing_test_local.png | Bin 43334 -> 0 bytes ...ority_queue_text_push_timing_test_msvc.png | Bin 7266 -> 0 bytes .../html/ext/pb_ds/quadratic_probe_fn.html | 141 - ...dom_int_find_find_timing_test_tree_gcc.png | Bin 5960 -> 0 bytes ...m_int_find_find_timing_test_tree_local.png | Bin 30133 -> 0 bytes ...om_int_find_find_timing_test_tree_msvc.png | Bin 5636 -> 0 bytes .../pb_ds/range_invalidation_guarantee.html | 52 - .../doc/html/ext/pb_ds/rb_tree_tag.html | 47 - .../html/ext/pb_ds/rc_binomial_heap_tag.html | 47 - .../doc/html/ext/pb_ds/references.html | 258 - .../doc/html/ext/pb_ds/resize_error.html | 50 - .../doc/html/ext/pb_ds/sample_probe_fn.html | 152 - .../html/ext/pb_ds/sample_range_hashing.html | 172 - .../html/ext/pb_ds/sample_ranged_hash_fn.html | 171 - .../ext/pb_ds/sample_ranged_probe_fn.html | 178 - .../html/ext/pb_ds/sample_resize_policy.html | 413 - .../html/ext/pb_ds/sample_resize_trigger.html | 462 - .../html/ext/pb_ds/sample_size_policy.html | 163 - .../ext/pb_ds/sample_tree_node_update.html | 193 - .../ext/pb_ds/sample_trie_access_traits.html | 231 - .../ext/pb_ds/sample_trie_node_update.html | 194 - .../html/ext/pb_ds/sample_update_policy.html | 178 - .../doc/html/ext/pb_ds/splay_tree_tag.html | 47 - libstdc++-v3/doc/html/ext/pb_ds/tests.html | 24 - .../pb_ds/text_find_timing_test_hash_gcc.png | Bin 7013 -> 0 bytes .../text_find_timing_test_hash_local.png | Bin 39495 -> 0 bytes .../pb_ds/text_find_timing_test_hash_msvc.png | Bin 6932 -> 0 bytes .../text_find_timing_test_tree_like_gcc.png | Bin 6207 -> 0 bytes .../text_find_timing_test_tree_like_local.png | Bin 34994 -> 0 bytes .../text_find_timing_test_tree_like_msvc.png | Bin 6059 -> 0 bytes .../doc/html/ext/pb_ds/thin_heap_tag.html | 47 - libstdc++-v3/doc/html/ext/pb_ds/tree.html | 516 - .../html/ext/pb_ds/tree_based_containers.html | 358 - .../html/ext/pb_ds/tree_node_iterator.html | 143 - .../tree_order_statistics_node_update.html | 678 -- .../tree_order_statistics_timing_test.html | 118 - .../tree_order_statistics_timing_test_gcc.png | Bin 5698 -> 0 bytes ...ree_order_statistics_timing_test_local.png | Bin 29805 -> 0 bytes ...tree_order_statistics_timing_test_msvc.png | Bin 5684 -> 0 bytes ...tree_random_int_find_find_timing_test.html | 160 - .../pb_ds/tree_split_join_timing_test.html | 143 - .../pb_ds/tree_split_join_timing_test_gcc.png | Bin 5649 -> 0 bytes .../tree_split_join_timing_test_local.png | Bin 30904 -> 0 bytes .../tree_split_join_timing_test_msvc.png | Bin 5675 -> 0 bytes libstdc++-v3/doc/html/ext/pb_ds/tree_tag.html | 47 - .../tree_text_find_find_timing_test.html | 162 - .../pb_ds/tree_text_insert_timing_test.html | 226 - ..._text_insert_timing_test_node_tree_gcc.png | Bin 5373 -> 0 bytes ...ext_insert_timing_test_node_tree_local.png | Bin 28340 -> 0 bytes ...text_insert_timing_test_node_tree_msvc.png | Bin 5212 -> 0 bytes ...e_text_insert_timing_test_pat_trie_gcc.png | Bin 4895 -> 0 bytes ...text_insert_timing_test_pat_trie_local.png | Bin 22337 -> 0 bytes ..._text_insert_timing_test_pat_trie_msvc.png | Bin 4881 -> 0 bytes ...ext_insert_timing_test_vector_tree_gcc.png | Bin 5140 -> 0 bytes ...t_insert_timing_test_vector_tree_local.png | Bin 22889 -> 0 bytes ...xt_insert_timing_test_vector_tree_msvc.png | Bin 5131 -> 0 bytes .../tree_text_lor_find_find_timing_test.html | 126 - .../tree_text_lor_find_timing_test_gcc.png | Bin 6162 -> 0 bytes .../tree_text_lor_find_timing_test_local.png | Bin 28354 -> 0 bytes .../tree_text_lor_find_timing_test_msvc.png | Bin 5831 -> 0 bytes libstdc++-v3/doc/html/ext/pb_ds/trie.html | 489 - .../html/ext/pb_ds/trie_based_containers.html | 241 - .../ext/pb_ds/trie_const_node_iterator.html | 478 - .../html/ext/pb_ds/trie_node_iterator.html | 235 - .../trie_order_statistics_node_update.html | 770 -- .../pb_ds/trie_prefix_search_node_update.html | 628 -- .../ext/pb_ds/trie_string_access_traits.html | 400 - libstdc++-v3/doc/html/ext/pb_ds/trie_tag.html | 47 - .../html/ext/pb_ds/trivial_iterator_tag.html | 25 - libstdc++-v3/doc/html/ext/pb_ds/tutorial.html | 670 -- .../doc/html/ext/pb_ds/update_policy_cd.png | Bin 8570 -> 0 bytes .../images/pbds_balls_and_bins.png} | Bin ...ueue_random_int_push_timing_test_local.pdf | Bin 0 -> 31082 bytes ...ueue_random_int_push_timing_test_local.png | Bin 0 -> 27614 bytes ...ueue_random_int_push_timing_test_local.svg | 446 + ...hash_random_int_find_timing_test_local.pdf | Bin 0 -> 39761 bytes ...hash_random_int_find_timing_test_local.png | Bin 0 -> 51837 bytes ...hash_random_int_find_timing_test_local.svg | 597 + ...m_int_subscript_timing_test_find_local.pdf | Bin 0 -> 39732 bytes ...m_int_subscript_timing_test_find_local.png | Bin 0 -> 51821 bytes ...m_int_subscript_timing_test_find_local.svg | 597 + ...int_subscript_timing_test_insert_local.pdf | Bin 0 -> 39821 bytes ...int_subscript_timing_test_insert_local.png | Bin 0 -> 50828 bytes ...int_subscript_timing_test_insert_local.svg | 598 + .../images/pbds_container_tag_hierarchy.pdf | Bin 0 -> 9605 bytes .../images/pbds_container_tag_hierarchy.png | Bin 0 -> 85192 bytes .../images/pbds_container_tag_hierarchy.svg | 256 + .../pbds_different_underlying_dss_1.png} | Bin .../pbds_different_underlying_dss_2.png} | Bin .../images/pbds_embedded_lists_1.png} | Bin .../images/pbds_embedded_lists_2.png} | Bin .../images/pbds_embedded_lists_3.png} | Bin .../xml/images/pbds_exception_hierarchy.pdf | Bin 0 -> 7520 bytes .../xml/images/pbds_exception_hierarchy.png | Bin 0 -> 18245 bytes .../xml/images/pbds_exception_hierarchy.svg | 76 + ...hash_random_int_find_timing_test_local.pdf | Bin 0 -> 25639 bytes ...hash_random_int_find_timing_test_local.png | Bin 0 -> 36653 bytes ...hash_random_int_find_timing_test_local.svg | 369 + ...m_int_subscript_timing_test_find_local.pdf | Bin 0 -> 25687 bytes ...m_int_subscript_timing_test_find_local.png | Bin 0 -> 36441 bytes ...m_int_subscript_timing_test_find_local.svg | 369 + ...int_subscript_timing_test_insert_local.pdf | Bin 0 -> 25731 bytes ...int_subscript_timing_test_insert_local.png | Bin 0 -> 40307 bytes ...int_subscript_timing_test_insert_local.svg | 369 + .../images/pbds_hash_policy_cd.png} | Bin ..._random_int_erase_mem_usage_test_local.pdf | Bin 0 -> 26818 bytes ..._random_int_erase_mem_usage_test_local.png | Bin 0 -> 36361 bytes ..._random_int_erase_mem_usage_test_local.svg | 416 + .../pbds_hash_range_hashing_seq_diagram.png} | Bin .../pbds_hash_range_hashing_seq_diagram2.png} | Bin ...ds_hash_ranged_hash_range_hashing_fns.png} | Bin ...zlob_random_int_find_timing_test_local.pdf | Bin 0 -> 38457 bytes ...zlob_random_int_find_timing_test_local.png | Bin 0 -> 41600 bytes ...zlob_random_int_find_timing_test_local.svg | 560 + .../pbds_insert_resize_sequence_diagram1.png} | Bin .../pbds_insert_resize_sequence_diagram2.png} | Bin .../pbds_insert_resize_sequence_diagram3.png} | Bin .../pbds_invalidation_guarantee_erase.png} | Bin .../pbds_invalidation_tag_hierarchy.pdf | Bin 0 -> 6903 bytes .../pbds_invalidation_tag_hierarchy.png | Bin 0 -> 14178 bytes .../pbds_invalidation_tag_hierarchy.svg | 40 + .../images/pbds_list_update.png} | Bin ..._find_timing_test_large_s2p_hash_local.pdf | Bin 0 -> 16644 bytes ..._find_timing_test_large_s2p_hash_local.png | Bin 0 -> 32998 bytes ..._find_timing_test_large_s2p_hash_local.svg | 239 + ..._find_timing_test_large_s2p_tree_local.pdf | Bin 0 -> 19832 bytes ..._find_timing_test_large_s2p_tree_local.png | Bin 0 -> 30311 bytes ..._find_timing_test_large_s2p_tree_local.svg | 281 + ..._find_timing_test_small_s2p_hash_local.pdf | Bin 0 -> 16636 bytes ..._find_timing_test_small_s2p_hash_local.png | Bin 0 -> 32098 bytes ..._find_timing_test_small_s2p_hash_local.svg | 239 + ..._find_timing_test_small_s2p_tree_local.pdf | Bin 0 -> 19903 bytes ..._find_timing_test_small_s2p_tree_local.png | Bin 0 -> 29151 bytes ..._find_timing_test_small_s2p_tree_local.svg | 281 + ...rt_mem_usage_test_large_s2p_hash_local.pdf | Bin 0 -> 16669 bytes ...rt_mem_usage_test_large_s2p_hash_local.png | Bin 0 -> 36856 bytes ...rt_mem_usage_test_large_s2p_hash_local.svg | 244 + ...rt_mem_usage_test_large_s2p_tree_local.pdf | Bin 0 -> 19749 bytes ...rt_mem_usage_test_large_s2p_tree_local.png | Bin 0 -> 34656 bytes ...rt_mem_usage_test_large_s2p_tree_local.svg | 286 + ...rt_mem_usage_test_small_s2p_hash_local.pdf | Bin 0 -> 16686 bytes ...rt_mem_usage_test_small_s2p_hash_local.png | Bin 0 -> 35454 bytes ...rt_mem_usage_test_small_s2p_hash_local.svg | 253 + ...rt_mem_usage_test_small_s2p_tree_local.pdf | Bin 0 -> 19893 bytes ...rt_mem_usage_test_small_s2p_tree_local.png | Bin 0 -> 33210 bytes ...rt_mem_usage_test_small_s2p_tree_local.svg | 295 + ...nsert_timing_test_large_s2p_hash_local.pdf | Bin 0 -> 16554 bytes ...nsert_timing_test_large_s2p_hash_local.png | Bin 0 -> 33644 bytes ...nsert_timing_test_large_s2p_hash_local.svg | 239 + ...nsert_timing_test_large_s2p_tree_local.pdf | Bin 0 -> 19817 bytes ...nsert_timing_test_large_s2p_tree_local.png | Bin 0 -> 29953 bytes ...nsert_timing_test_large_s2p_tree_local.svg | 281 + ...nsert_timing_test_small_s2p_hash_local.pdf | Bin 0 -> 16651 bytes ...nsert_timing_test_small_s2p_hash_local.png | Bin 0 -> 34008 bytes ...nsert_timing_test_small_s2p_hash_local.svg | 239 + ...nsert_timing_test_small_s2p_tree_local.pdf | Bin 0 -> 19813 bytes ...nsert_timing_test_small_s2p_tree_local.png | Bin 0 -> 30480 bytes ...nsert_timing_test_small_s2p_tree_local.svg | 281 + .../images/pbds_node_invariants.png} | Bin ..._queue_text_push_pop_timing_test_local.pdf | Bin 0 -> 25649 bytes ..._queue_text_push_pop_timing_test_local.png | Bin 0 -> 29097 bytes ..._queue_text_push_pop_timing_test_local.svg | 369 + ...rity_queue_text_push_timing_test_local.pdf | Bin 0 -> 33861 bytes ...rity_queue_text_push_timing_test_local.png | Bin 0 -> 31084 bytes ...rity_queue_text_push_timing_test_local.svg | 483 + .../images/pbds_pat_trie.png} | Bin .../images/pbds_point_iterator_hierarchy.png} | Bin .../pbds_point_iterators_range_ops_1.png} | Bin .../pbds_point_iterators_range_ops_2.png} | Bin ...riority_queue_different_underlying_dss.png | Bin 0 -> 15660 bytes ..._random_int_push_pop_timing_test_local.pdf | Bin 0 -> 55035 bytes ..._random_int_push_pop_timing_test_local.png | Bin 0 -> 37501 bytes ..._random_int_push_pop_timing_test_local.svg | 825 ++ ...ueue_random_int_push_timing_test_local.pdf | Bin 0 -> 54729 bytes ...ueue_random_int_push_timing_test_local.png | Bin 0 -> 36023 bytes ...ueue_random_int_push_timing_test_local.svg | 825 ++ .../pbds_priority_queue_tag_hierarchy.pdf | Bin 0 -> 7842 bytes .../pbds_priority_queue_tag_hierarchy.png | Bin 0 -> 29346 bytes .../pbds_priority_queue_tag_hierarchy.svg | 88 + ...rity_queue_text_join_timing_test_local.pdf | Bin 0 -> 54761 bytes ...rity_queue_text_join_timing_test_local.png | Bin 0 -> 41658 bytes ...rity_queue_text_join_timing_test_local.svg | 825 ++ ...eue_text_modify_down_timing_test_local.pdf | Bin 0 -> 54820 bytes ...eue_text_modify_down_timing_test_local.png | Bin 0 -> 37178 bytes ...eue_text_modify_down_timing_test_local.svg | 793 ++ ...fy_down_timing_test_pairing_thin_local.pdf | Bin 0 -> 18308 bytes ...fy_down_timing_test_pairing_thin_local.png | Bin 0 -> 23171 bytes ...fy_down_timing_test_pairing_thin_local.svg | 223 + ...queue_text_modify_up_timing_test_local.pdf | Bin 0 -> 54587 bytes ...queue_text_modify_up_timing_test_local.png | Bin 0 -> 37140 bytes ...queue_text_modify_up_timing_test_local.svg | 793 ++ ...dify_up_timing_test_pairing_thin_local.pdf | Bin 0 -> 18288 bytes ...dify_up_timing_test_pairing_thin_local.png | Bin 0 -> 22472 bytes ...dify_up_timing_test_pairing_thin_local.svg | 224 + ...ty_queue_text_pop_mem_usage_test_local.pdf | Bin 0 -> 54012 bytes ...ty_queue_text_pop_mem_usage_test_local.png | Bin 0 -> 36500 bytes ...ty_queue_text_pop_mem_usage_test_local.svg | 835 ++ ..._queue_text_push_pop_timing_test_local.pdf | Bin 0 -> 54892 bytes ..._queue_text_push_pop_timing_test_local.png | Bin 0 -> 36208 bytes ..._queue_text_push_pop_timing_test_local.svg | 825 ++ ...rity_queue_text_push_timing_test_local.pdf | Bin 0 -> 54253 bytes ...rity_queue_text_push_timing_test_local.png | Bin 0 -> 36629 bytes ...rity_queue_text_push_timing_test_local.svg | 825 ++ .../pbds_rationale_null_node_updator.png} | Bin .../images/pbds_resize_policy_cd.png} | Bin .../pbds_restoring_node_invariants.png} | Bin .../images/pbds_simple_list.png} | Bin .../pbds_text_find_timing_test_hash_local.pdf | Bin 0 -> 31897 bytes .../pbds_text_find_timing_test_hash_local.png | Bin 0 -> 41835 bytes .../pbds_text_find_timing_test_hash_local.svg | 483 + ..._text_find_timing_test_tree_like_local.pdf | Bin 0 -> 33986 bytes ..._text_find_timing_test_tree_like_local.png | Bin 0 -> 37806 bytes ..._text_find_timing_test_tree_like_local.svg | 542 + .../images/pbds_tree_node_invalidations.png} | Bin .../xml/images/pbds_tree_node_invariants.png | Bin 0 -> 16553 bytes .../pbds_tree_node_updator_policy_cd.png} | Bin ...ree_order_statistics_timing_test_local.pdf | Bin 0 -> 30831 bytes ...ree_order_statistics_timing_test_local.png | Bin 0 -> 32950 bytes ...ree_order_statistics_timing_test_local.svg | 446 + ...pbds_tree_split_join_timing_test_local.pdf | Bin 0 -> 32608 bytes ...pbds_tree_split_join_timing_test_local.png | Bin 0 -> 34337 bytes ...pbds_tree_split_join_timing_test_local.svg | 505 + ...ext_insert_timing_test_node_tree_local.pdf | Bin 0 -> 30918 bytes ...ext_insert_timing_test_node_tree_local.png | Bin 0 -> 31892 bytes ...ext_insert_timing_test_node_tree_local.svg | 446 + ...text_insert_timing_test_pat_trie_local.pdf | Bin 0 -> 18375 bytes ...text_insert_timing_test_pat_trie_local.png | Bin 0 -> 25976 bytes ...text_insert_timing_test_pat_trie_local.svg | 255 + ...t_insert_timing_test_vector_tree_local.pdf | Bin 0 -> 18663 bytes ...t_insert_timing_test_vector_tree_local.png | Bin 0 -> 26412 bytes ...t_insert_timing_test_vector_tree_local.svg | 277 + ...s_tree_text_lor_find_timing_test_local.pdf | Bin 0 -> 32567 bytes ...s_tree_text_lor_find_timing_test_local.png | Bin 0 -> 36553 bytes ...s_tree_text_lor_find_timing_test_local.svg | 505 + .../pbds_trie_node_updator_policy_cd.png} | Bin .../images/pbds_update_seq_diagram.png} | Bin .../doc/xml/manual/bitmap_allocator.xml | 6 +- libstdc++-v3/doc/xml/manual/extensions.xml | 117 +- libstdc++-v3/doc/xml/manual/mt_allocator.xml | 6 +- .../doc/xml/manual/policy_data_structures.xml | 6584 +++++++++++ libstdc++-v3/doc/xml/manual/spine.xml | 1 + .../manual/test_policy_data_structures.xml | 9774 +++++++++++++++++ libstdc++-v3/doc/xml/spine.xml | 1 + 444 files changed, 36092 insertions(+), 30433 deletions(-) delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/PythonPoweredSmall.gif delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/acks.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/assoc_container_tag_cd.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/assoc_container_tag_cd.svg delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/assoc_container_traits.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/assoc_design.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/assoc_examples.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/assoc_performance_tests.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/assoc_regression_tests.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/assoc_tests.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/associative_container_tag.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/basic_hash_table.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/basic_hash_tag.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/basic_invalidation_guarantee.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/basic_tree.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/basic_tree_assoc_container_const_node_iterator.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/basic_tree_tag.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/binary_heap_tag.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/binary_priority_queue_random_int_push_timing_test_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/binary_priority_queue_random_int_push_timing_test_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/binary_priority_queue_random_int_push_timing_test_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/binomial_heap_tag.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/cc_hash_max_collision_check_resize_trigger.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_find_timing_test_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_find_timing_test_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_find_timing_test_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_find_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_find_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_find_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_insert_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_insert_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_insert_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/cc_hash_table.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/cc_hash_tag.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/ccgp_hash_random_int_subscript_timing_test_insert_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/ccgp_hash_random_int_subscript_timing_test_insert_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/ccgp_hash_random_int_subscript_timing_test_insert_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/checked_by_tidy.gif delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/concepts.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/contact.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/container_base.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/container_cd.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/container_cd.svg delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/container_tag.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/counter_lu_policy.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/design.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/direct_mask_range_hashing.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/direct_mod_range_hashing.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/disclaimer.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/ds_gen.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/examples.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/exceptions.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_find_timing_test_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_find_timing_test_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_find_timing_test_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_find_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_find_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_find_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_insert_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_insert_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_insert_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/gp_hash_table.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/gp_hash_tag.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/hash_based_containers.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/hash_exponential_size_policy.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/hash_load_check_resize_trigger.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/hash_prime_size_policy.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_find_find_timing_test.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_subscript_find_timing_test.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_subscript_insert_timing_test.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/hash_standard_resize_policy.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/hash_text_find_find_timing_test.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/hash_zlob_random_int_find_find_timing_test.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/hash_zlob_random_int_find_timing_test_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/hash_zlob_random_int_find_timing_test_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/hash_zlob_random_int_find_timing_test_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/index.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/insert_error.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/interface.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/introduction.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/invalidation_guarantee_cd.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/join_error.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/linear_probe_fn.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/list_update.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/list_update_tag.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/lu_based_containers.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/misc.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/motivation.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/move_to_front_lu_policy.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_hash_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_hash_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_hash_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_tree_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_tree_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_tree_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_hash_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_hash_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_hash_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_tree_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_tree_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_tree_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_hash_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_hash_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_hash_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_tree_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_tree_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_tree_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_hash_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_hash_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_hash_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_tree_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_tree_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_tree_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_hash_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_hash_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_hash_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_tree_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_tree_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_tree_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_hash_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_hash_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_hash_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_tree_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_tree_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_tree_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/null_hash_fn.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/null_lu_metadata.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/null_mapped_type.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/null_probe_fn.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/null_tree_node_update.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/null_trie_node_update.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/ov_tree_tag.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/pairing_heap_tag.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_pop_timing_test_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_pop_timing_test_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_pop_timing_test_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_timing_test_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_timing_test_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_timing_test_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/pat_trie_tag.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/point_invalidation_guarantee.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/pq_container_traits.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/pq_design.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/pq_examples.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/pq_performance_tests.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/pq_regression_tests.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/pq_tests.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/prerequisites.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_tag.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_tag_cd.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_tag_cd.svg delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_pairing_thin_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_pairing_thin_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_pairing_thin_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_pairing_thin_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_pairing_thin_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_pairing_thin_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/quadratic_probe_fn.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/random_int_find_find_timing_test_tree_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/random_int_find_find_timing_test_tree_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/random_int_find_find_timing_test_tree_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/range_invalidation_guarantee.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/rb_tree_tag.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/rc_binomial_heap_tag.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/references.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/resize_error.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/sample_probe_fn.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/sample_range_hashing.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/sample_ranged_hash_fn.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/sample_ranged_probe_fn.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/sample_resize_policy.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/sample_resize_trigger.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/sample_size_policy.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/sample_tree_node_update.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/sample_trie_access_traits.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/sample_trie_node_update.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/sample_update_policy.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/splay_tree_tag.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/tests.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_hash_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_hash_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_hash_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_tree_like_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_tree_like_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_tree_like_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/thin_heap_tag.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/tree.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/tree_based_containers.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/tree_node_iterator.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_node_update.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/tree_random_int_find_find_timing_test.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/tree_tag.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/tree_text_find_find_timing_test.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_node_tree_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_node_tree_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_node_tree_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_pat_trie_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_pat_trie_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_pat_trie_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_vector_tree_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_vector_tree_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_vector_tree_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_find_timing_test.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_timing_test_gcc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_timing_test_local.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_timing_test_msvc.png delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/trie.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/trie_based_containers.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/trie_const_node_iterator.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/trie_node_iterator.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/trie_order_statistics_node_update.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/trie_prefix_search_node_update.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/trie_string_access_traits.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/trie_tag.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/trivial_iterator_tag.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/tutorial.html delete mode 100644 libstdc++-v3/doc/html/ext/pb_ds/update_policy_cd.png rename libstdc++-v3/doc/{html/ext/pb_ds/balls_and_bins.png => xml/images/pbds_balls_and_bins.png} (100%) create mode 100644 libstdc++-v3/doc/xml/images/pbds_binary_priority_queue_random_int_push_timing_test_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_binary_priority_queue_random_int_push_timing_test_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_binary_priority_queue_random_int_push_timing_test_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_find_timing_test_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_find_timing_test_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_find_timing_test_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_subscript_timing_test_find_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_subscript_timing_test_find_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_subscript_timing_test_find_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_subscript_timing_test_insert_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_subscript_timing_test_insert_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_subscript_timing_test_insert_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_container_tag_hierarchy.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_container_tag_hierarchy.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_container_tag_hierarchy.svg rename libstdc++-v3/doc/{html/ext/pb_ds/different_underlying_dss.png => xml/images/pbds_different_underlying_dss_1.png} (100%) rename libstdc++-v3/doc/{html/ext/pb_ds/pq_different_underlying_dss.png => xml/images/pbds_different_underlying_dss_2.png} (100%) rename libstdc++-v3/doc/{html/ext/pb_ds/embedded_lists_1.png => xml/images/pbds_embedded_lists_1.png} (100%) rename libstdc++-v3/doc/{html/ext/pb_ds/embedded_lists_2.png => xml/images/pbds_embedded_lists_2.png} (100%) rename libstdc++-v3/doc/{html/ext/pb_ds/embedded_lists_3.png => xml/images/pbds_embedded_lists_3.png} (100%) create mode 100644 libstdc++-v3/doc/xml/images/pbds_exception_hierarchy.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_exception_hierarchy.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_exception_hierarchy.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_find_timing_test_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_find_timing_test_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_find_timing_test_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_subscript_timing_test_find_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_subscript_timing_test_find_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_subscript_timing_test_find_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_subscript_timing_test_insert_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_subscript_timing_test_insert_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_subscript_timing_test_insert_local.svg rename libstdc++-v3/doc/{html/ext/pb_ds/hash_policy_cd.png => xml/images/pbds_hash_policy_cd.png} (100%) create mode 100644 libstdc++-v3/doc/xml/images/pbds_hash_random_int_erase_mem_usage_test_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_hash_random_int_erase_mem_usage_test_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_hash_random_int_erase_mem_usage_test_local.svg rename libstdc++-v3/doc/{html/ext/pb_ds/hash_range_hashing_seq_diagram.png => xml/images/pbds_hash_range_hashing_seq_diagram.png} (100%) rename libstdc++-v3/doc/{html/ext/pb_ds/hash_range_hashing_seq_diagram2.png => xml/images/pbds_hash_range_hashing_seq_diagram2.png} (100%) rename libstdc++-v3/doc/{html/ext/pb_ds/hash_ranged_hash_range_hashing_fns.png => xml/images/pbds_hash_ranged_hash_range_hashing_fns.png} (100%) create mode 100644 libstdc++-v3/doc/xml/images/pbds_hash_zlob_random_int_find_timing_test_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_hash_zlob_random_int_find_timing_test_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_hash_zlob_random_int_find_timing_test_local.svg rename libstdc++-v3/doc/{html/ext/pb_ds/insert_resize_sequence_diagram1.png => xml/images/pbds_insert_resize_sequence_diagram1.png} (100%) rename libstdc++-v3/doc/{html/ext/pb_ds/insert_resize_sequence_diagram2.png => xml/images/pbds_insert_resize_sequence_diagram2.png} (100%) rename libstdc++-v3/doc/{html/ext/pb_ds/insert_resize_sequence_diagram3.png => xml/images/pbds_insert_resize_sequence_diagram3.png} (100%) rename libstdc++-v3/doc/{html/ext/pb_ds/invalidation_guarantee_erase.png => xml/images/pbds_invalidation_guarantee_erase.png} (100%) create mode 100644 libstdc++-v3/doc/xml/images/pbds_invalidation_tag_hierarchy.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_invalidation_tag_hierarchy.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_invalidation_tag_hierarchy.svg rename libstdc++-v3/doc/{html/ext/pb_ds/lu.png => xml/images/pbds_list_update.png} (100%) create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_large_s2p_hash_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_large_s2p_hash_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_large_s2p_hash_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_large_s2p_tree_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_large_s2p_tree_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_large_s2p_tree_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_small_s2p_hash_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_small_s2p_hash_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_small_s2p_hash_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_small_s2p_tree_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_small_s2p_tree_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_small_s2p_tree_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_large_s2p_hash_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_large_s2p_hash_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_large_s2p_hash_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_large_s2p_tree_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_large_s2p_tree_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_large_s2p_tree_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_small_s2p_hash_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_small_s2p_hash_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_small_s2p_hash_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_small_s2p_tree_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_small_s2p_tree_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_small_s2p_tree_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_large_s2p_hash_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_large_s2p_hash_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_large_s2p_hash_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_large_s2p_tree_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_large_s2p_tree_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_large_s2p_tree_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_small_s2p_hash_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_small_s2p_hash_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_small_s2p_hash_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_small_s2p_tree_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_small_s2p_tree_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_small_s2p_tree_local.svg rename libstdc++-v3/doc/{html/ext/pb_ds/node_invariants.png => xml/images/pbds_node_invariants.png} (100%) create mode 100644 libstdc++-v3/doc/xml/images/pbds_pairing_priority_queue_text_push_pop_timing_test_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_pairing_priority_queue_text_push_pop_timing_test_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_pairing_priority_queue_text_push_pop_timing_test_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_pairing_priority_queue_text_push_timing_test_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_pairing_priority_queue_text_push_timing_test_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_pairing_priority_queue_text_push_timing_test_local.svg rename libstdc++-v3/doc/{html/ext/pb_ds/pat_trie.png => xml/images/pbds_pat_trie.png} (100%) rename libstdc++-v3/doc/{html/ext/pb_ds/point_iterators_cd.png => xml/images/pbds_point_iterator_hierarchy.png} (100%) rename libstdc++-v3/doc/{html/ext/pb_ds/point_iterators_range_ops_1.png => xml/images/pbds_point_iterators_range_ops_1.png} (100%) rename libstdc++-v3/doc/{html/ext/pb_ds/point_iterators_range_ops_2.png => xml/images/pbds_point_iterators_range_ops_2.png} (100%) create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_different_underlying_dss.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_random_int_push_pop_timing_test_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_random_int_push_pop_timing_test_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_random_int_push_pop_timing_test_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_random_int_push_timing_test_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_random_int_push_timing_test_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_random_int_push_timing_test_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_tag_hierarchy.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_tag_hierarchy.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_tag_hierarchy.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_text_join_timing_test_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_text_join_timing_test_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_text_join_timing_test_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_down_timing_test_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_down_timing_test_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_down_timing_test_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_down_timing_test_pairing_thin_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_down_timing_test_pairing_thin_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_down_timing_test_pairing_thin_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_up_timing_test_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_up_timing_test_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_up_timing_test_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_up_timing_test_pairing_thin_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_up_timing_test_pairing_thin_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_up_timing_test_pairing_thin_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_text_pop_mem_usage_test_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_text_pop_mem_usage_test_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_text_pop_mem_usage_test_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_text_push_pop_timing_test_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_text_push_pop_timing_test_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_text_push_pop_timing_test_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_text_push_timing_test_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_text_push_timing_test_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_priority_queue_text_push_timing_test_local.svg rename libstdc++-v3/doc/{html/ext/pb_ds/rationale_null_node_updator.png => xml/images/pbds_rationale_null_node_updator.png} (100%) rename libstdc++-v3/doc/{html/ext/pb_ds/resize_policy_cd.png => xml/images/pbds_resize_policy_cd.png} (100%) rename libstdc++-v3/doc/{html/ext/pb_ds/restoring_node_invariants.png => xml/images/pbds_restoring_node_invariants.png} (100%) rename libstdc++-v3/doc/{html/ext/pb_ds/simple_list.png => xml/images/pbds_simple_list.png} (100%) create mode 100644 libstdc++-v3/doc/xml/images/pbds_text_find_timing_test_hash_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_text_find_timing_test_hash_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_text_find_timing_test_hash_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_text_find_timing_test_tree_like_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_text_find_timing_test_tree_like_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_text_find_timing_test_tree_like_local.svg rename libstdc++-v3/doc/{html/ext/pb_ds/node_invariant_invalidations.png => xml/images/pbds_tree_node_invalidations.png} (100%) create mode 100644 libstdc++-v3/doc/xml/images/pbds_tree_node_invariants.png rename libstdc++-v3/doc/{html/ext/pb_ds/tree_node_updator_policy_cd.png => xml/images/pbds_tree_node_updator_policy_cd.png} (100%) create mode 100644 libstdc++-v3/doc/xml/images/pbds_tree_order_statistics_timing_test_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_tree_order_statistics_timing_test_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_tree_order_statistics_timing_test_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_tree_split_join_timing_test_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_tree_split_join_timing_test_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_tree_split_join_timing_test_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_node_tree_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_node_tree_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_node_tree_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_pat_trie_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_pat_trie_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_pat_trie_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_vector_tree_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_vector_tree_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_vector_tree_local.svg create mode 100644 libstdc++-v3/doc/xml/images/pbds_tree_text_lor_find_timing_test_local.pdf create mode 100644 libstdc++-v3/doc/xml/images/pbds_tree_text_lor_find_timing_test_local.png create mode 100644 libstdc++-v3/doc/xml/images/pbds_tree_text_lor_find_timing_test_local.svg rename libstdc++-v3/doc/{html/ext/pb_ds/trie_node_updator_policy_cd.png => xml/images/pbds_trie_node_updator_policy_cd.png} (100%) rename libstdc++-v3/doc/{html/ext/pb_ds/update_seq_diagram.png => xml/images/pbds_update_seq_diagram.png} (100%) create mode 100644 libstdc++-v3/doc/xml/manual/policy_data_structures.xml create mode 100644 libstdc++-v3/doc/xml/manual/test_policy_data_structures.xml diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 32f895d2254..3a24ca4bc6f 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,413 @@ +2011-07-29 Benjamin Kosnik + + Docbook conversion of existing ext/pb_ds documentation. + * doc/Makefile.am (xml_sources_manual): Add + policy_data_structures.xml and + test_policy_data_structures.xml. + (stamp-html-copy): Remove special-case for ext/pb_ds directory. + (XSLTPROC_FLAGS): Split into XSLT_FLAGS and XSLT_PARAM, use. + * doc/Makefile.in: Regenerate. + * doc/xml/manual/policy_data_structures.xml: New, adapted from + previous html-only instance in doc/html/ext/pb_ds. + * doc/xml/manual/test_policy_data_structures.xml: New, same as above. + + * doc/xml/spine.xml: Update copyright. + * doc/xml/manual/spine.xml: Same. + * doc/xml/manual/extensions.xml: Adjust set, chapter, sections. + * doc/xml/manual/bitmap_allocator.xml: Same. + * doc/xml/manual/mt_allocator.xml: Same. + + Populate image directory. + * doc/xml/images/(pbds_balls_and_bins.png, + pbds_binary_priority_queue_random_int_push_timing_test_local.pdf, + pbds_binary_priority_queue_random_int_push_timing_test_local.png, + pbds_binary_priority_queue_random_int_push_timing_test_local.svg, + pbds_cc_hash_random_int_find_timing_test_local.pdf, + pbds_cc_hash_random_int_find_timing_test_local.png, + pbds_cc_hash_random_int_find_timing_test_local.svg, + pbds_cc_hash_random_int_subscript_timing_test_find_local.pdf, + pbds_cc_hash_random_int_subscript_timing_test_find_local.png, + pbds_cc_hash_random_int_subscript_timing_test_find_local.svg, + pbds_cc_hash_random_int_subscript_timing_test_insert_local.pdf, + pbds_cc_hash_random_int_subscript_timing_test_insert_local.png, + pbds_cc_hash_random_int_subscript_timing_test_insert_local.svg, + pbds_container_tag_hierarchy.pdf, + pbds_container_tag_hierarchy.png, + pbds_container_tag_hierarchy.svg, + pbds_different_underlying_dss_1.png, + pbds_different_underlying_dss_2.png, + pbds_embedded_lists_1.png, pbds_embedded_lists_2.png, + pbds_embedded_lists_3.png, pbds_exception_hierarchy.pdf, + pbds_exception_hierarchy.png, pbds_exception_hierarchy.svg, + pbds_gp_hash_random_int_find_timing_test_local.pdf, + pbds_gp_hash_random_int_find_timing_test_local.png, + pbds_gp_hash_random_int_find_timing_test_local.svg, + pbds_gp_hash_random_int_subscript_timing_test_find_local.pdf, + pbds_gp_hash_random_int_subscript_timing_test_find_local.png, + pbds_gp_hash_random_int_subscript_timing_test_find_local.svg, + pbds_gp_hash_random_int_subscript_timing_test_insert_local.pdf, + pbds_gp_hash_random_int_subscript_timing_test_insert_local.png, + pbds_gp_hash_random_int_subscript_timing_test_insert_local.svg, + pbds_hash_policy_cd.png, + pbds_hash_random_int_erase_mem_usage_test_local.pdf, + pbds_hash_random_int_erase_mem_usage_test_local.png, + pbds_hash_random_int_erase_mem_usage_test_local.svg, + pbds_hash_ranged_hash_range_hashing_fns.png, + pbds_hash_range_hashing_seq_diagram2.png, + pbds_hash_range_hashing_seq_diagram.png, + pbds_hash_zlob_random_int_find_timing_test_local.pdf, + pbds_hash_zlob_random_int_find_timing_test_local.png, + pbds_hash_zlob_random_int_find_timing_test_local.svg, + pbds_insert_resize_sequence_diagram1.png, + pbds_insert_resize_sequence_diagram2.png, + pbds_insert_resize_sequence_diagram3.png, + pbds_invalidation_guarantee_erase.png, + pbds_invalidation_tag_hierarchy.pdf, + pbds_invalidation_tag_hierarchy.png, + pbds_invalidation_tag_hierarchy.svg, pbds_list_update.png, + pbds_multimap_text_find_timing_test_large_s2p_hash_local.pdf, + pbds_multimap_text_find_timing_test_large_s2p_hash_local.png, + pbds_multimap_text_find_timing_test_large_s2p_hash_local.svg, + pbds_multimap_text_find_timing_test_large_s2p_tree_local.pdf, + pbds_multimap_text_find_timing_test_large_s2p_tree_local.png, + pbds_multimap_text_find_timing_test_large_s2p_tree_local.svg, + pbds_multimap_text_find_timing_test_small_s2p_hash_local.pdf, + pbds_multimap_text_find_timing_test_small_s2p_hash_local.png, + pbds_multimap_text_find_timing_test_small_s2p_hash_local.svg, + pbds_multimap_text_find_timing_test_small_s2p_tree_local.pdf, + pbds_multimap_text_find_timing_test_small_s2p_tree_local.png, + pbds_multimap_text_find_timing_test_small_s2p_tree_local.svg, + pbds_multimap_text_insert_mem_usage_test_large_s2p_hash_local.pdf, + pbds_multimap_text_insert_mem_usage_test_large_s2p_hash_local.png, + pbds_multimap_text_insert_mem_usage_test_large_s2p_hash_local.svg, + pbds_multimap_text_insert_mem_usage_test_large_s2p_tree_local.pdf, + pbds_multimap_text_insert_mem_usage_test_large_s2p_tree_local.png, + pbds_multimap_text_insert_mem_usage_test_large_s2p_tree_local.svg, + pbds_multimap_text_insert_mem_usage_test_small_s2p_hash_local.pdf, + pbds_multimap_text_insert_mem_usage_test_small_s2p_hash_local.png, + pbds_multimap_text_insert_mem_usage_test_small_s2p_hash_local.svg, + pbds_multimap_text_insert_mem_usage_test_small_s2p_tree_local.pdf, + pbds_multimap_text_insert_mem_usage_test_small_s2p_tree_local.png, + pbds_multimap_text_insert_mem_usage_test_small_s2p_tree_local.svg, + pbds_multimap_text_insert_timing_test_large_s2p_hash_local.pdf, + pbds_multimap_text_insert_timing_test_large_s2p_hash_local.png, + pbds_multimap_text_insert_timing_test_large_s2p_hash_local.svg, + pbds_multimap_text_insert_timing_test_large_s2p_tree_local.pdf, + pbds_multimap_text_insert_timing_test_large_s2p_tree_local.png, + pbds_multimap_text_insert_timing_test_large_s2p_tree_local.svg, + pbds_multimap_text_insert_timing_test_small_s2p_hash_local.pdf, + pbds_multimap_text_insert_timing_test_small_s2p_hash_local.png, + pbds_multimap_text_insert_timing_test_small_s2p_hash_local.svg, + pbds_multimap_text_insert_timing_test_small_s2p_tree_local.pdf, + pbds_multimap_text_insert_timing_test_small_s2p_tree_local.png, + pbds_multimap_text_insert_timing_test_small_s2p_tree_local.svg, + pbds_node_invariants.png, + pbds_pairing_priority_queue_text_push_pop_timing_test_local.pdf, + pbds_pairing_priority_queue_text_push_pop_timing_test_local.png, + pbds_pairing_priority_queue_text_push_pop_timing_test_local.svg, + pbds_pairing_priority_queue_text_push_timing_test_local.pdf, + pbds_pairing_priority_queue_text_push_timing_test_local.png, + pbds_pairing_priority_queue_text_push_timing_test_local.svg, + pbds_pat_trie.png, pbds_point_iterator_hierarchy.png, + pbds_point_iterators_range_ops_1.png, + pbds_point_iterators_range_ops_2.png, + pbds_priority_queue_different_underlying_dss.png, + pbds_priority_queue_random_int_push_pop_timing_test_local.pdf, + pbds_priority_queue_random_int_push_pop_timing_test_local.png, + pbds_priority_queue_random_int_push_pop_timing_test_local.svg, + pbds_priority_queue_random_int_push_timing_test_local.pdf, + pbds_priority_queue_random_int_push_timing_test_local.png, + pbds_priority_queue_random_int_push_timing_test_local.svg, + pbds_priority_queue_tag_hierarchy.pdf, + pbds_priority_queue_tag_hierarchy.png, + pbds_priority_queue_tag_hierarchy.svg, + pbds_priority_queue_text_join_timing_test_local.pdf, + pbds_priority_queue_text_join_timing_test_local.png, + pbds_priority_queue_text_join_timing_test_local.svg, + pbds_priority_queue_text_modify_down_timing_test_local.pdf, + pbds_priority_queue_text_modify_down_timing_test_local.png, + pbds_priority_queue_text_modify_down_timing_test_local.svg, + pbds_priority_queue_text_modify_down_timing_test_pairing_thin_local.pdf, + pbds_priority_queue_text_modify_down_timing_test_pairing_thin_local.png, + pbds_priority_queue_text_modify_down_timing_test_pairing_thin_local.svg, + pbds_priority_queue_text_modify_up_timing_test_local.pdf, + pbds_priority_queue_text_modify_up_timing_test_local.png, + pbds_priority_queue_text_modify_up_timing_test_local.svg, + pbds_priority_queue_text_modify_up_timing_test_pairing_thin_local.pdf, + pbds_priority_queue_text_modify_up_timing_test_pairing_thin_local.png, + pbds_priority_queue_text_modify_up_timing_test_pairing_thin_local.svg, + pbds_priority_queue_text_pop_mem_usage_test_local.pdf, + pbds_priority_queue_text_pop_mem_usage_test_local.png, + pbds_priority_queue_text_pop_mem_usage_test_local.svg, + pbds_priority_queue_text_push_pop_timing_test_local.pdf, + pbds_priority_queue_text_push_pop_timing_test_local.png, + pbds_priority_queue_text_push_pop_timing_test_local.svg, + pbds_priority_queue_text_push_timing_test_local.pdf, + pbds_priority_queue_text_push_timing_test_local.png, + pbds_priority_queue_text_push_timing_test_local.svg, + pbds_rationale_null_node_updator.png, + pbds_resize_policy_cd.png, pbds_restoring_node_invariants.png, + pbds_simple_list.png, + pbds_text_find_timing_test_hash_local.pdf, + pbds_text_find_timing_test_hash_local.png, + pbds_text_find_timing_test_hash_local.svg, + pbds_text_find_timing_test_tree_like_local.pdf, + pbds_text_find_timing_test_tree_like_local.png, + pbds_text_find_timing_test_tree_like_local.svg, + pbds_tree_node_invalidations.png, + pbds_tree_node_invariants.png, + pbds_tree_node_updator_policy_cd.png, + pbds_tree_order_statistics_timing_test_local.pdf, + pbds_tree_order_statistics_timing_test_local.png, + pbds_tree_order_statistics_timing_test_local.svg, + pbds_tree_split_join_timing_test_local.pdf, + pbds_tree_split_join_timing_test_local.png, + pbds_tree_split_join_timing_test_local.svg, + pbds_tree_text_insert_timing_test_node_tree_local.pdf, + pbds_tree_text_insert_timing_test_node_tree_local.png, + pbds_tree_text_insert_timing_test_node_tree_local.svg, + pbds_tree_text_insert_timing_test_pat_trie_local.pdf, + pbds_tree_text_insert_timing_test_pat_trie_local.png, + pbds_tree_text_insert_timing_test_pat_trie_local.svg, + pbds_tree_text_insert_timing_test_vector_tree_local.pdf, + pbds_tree_text_insert_timing_test_vector_tree_local.png, + pbds_tree_text_insert_timing_test_vector_tree_local.svg, + pbds_tree_text_lor_find_timing_test_local.pdf, + pbds_tree_text_lor_find_timing_test_local.png, + pbds_tree_text_lor_find_timing_test_local.svg, + pbds_trie_node_updator_policy_cd.png, + pbds_update_seq_diagram.png): Add. + + * doc/html/ext/pb_ds: Remove. + * doc/html/ext/pb_ds/(acks.html, assoc_container_tag_cd.png, + assoc_container_tag_cd.svg, assoc_container_traits.html, + assoc_design.html, assoc_examples.html, + associative_container_tag.html, assoc_performance_tests.html, + assoc_regression_tests.html, assoc_tests.html, + balls_and_bins.png, basic_hash_table.html, + basic_hash_tag.html, basic_invalidation_guarantee.html, + basic_tree_assoc_container_const_node_iterator.html, + basic_tree.html, basic_tree_tag.html, binary_heap_tag.html, + binary_priority_queue_random_int_push_timing_test_gcc.png, + binary_priority_queue_random_int_push_timing_test_local.png, + binary_priority_queue_random_int_push_timing_test_msvc.png, + binomial_heap_tag.html, + ccgp_hash_random_int_subscript_timing_test_insert_gcc.png, + ccgp_hash_random_int_subscript_timing_test_insert_local.png, + ccgp_hash_random_int_subscript_timing_test_insert_msvc.png, + cc_hash_max_collision_check_resize_trigger.html, + cc_hash_random_int_find_timing_test_gcc.png, + cc_hash_random_int_find_timing_test_local.png, + cc_hash_random_int_find_timing_test_msvc.png, + cc_hash_random_int_subscript_timing_test_find_gcc.png, + cc_hash_random_int_subscript_timing_test_find_local.png, + cc_hash_random_int_subscript_timing_test_find_msvc.png, + cc_hash_random_int_subscript_timing_test_insert_gcc.png, + cc_hash_random_int_subscript_timing_test_insert_local.png, + cc_hash_random_int_subscript_timing_test_insert_msvc.png, + cc_hash_table.html, cc_hash_tag.html, checked_by_tidy.gif + concepts.html, contact.html, container_base.html, + container_cd.png, container_cd.svg, container_tag.html, + counter_lu_policy.html, design.html, + different_underlying_dss.png, direct_mask_range_hashing.html, + direct_mod_range_hashing.html, disclaimer.html, ds_gen.html, + embedded_lists_1.png, embedded_lists_2.png, + embedded_lists_3.png, examples.html, exceptions.html, + gp_hash_random_int_find_timing_test_gcc.png, + gp_hash_random_int_find_timing_test_local.png, + gp_hash_random_int_find_timing_test_msvc.png, + gp_hash_random_int_subscript_timing_test_find_gcc.png, + gp_hash_random_int_subscript_timing_test_find_local.png, + gp_hash_random_int_subscript_timing_test_find_msvc.png, + gp_hash_random_int_subscript_timing_test_insert_gcc.png, + gp_hash_random_int_subscript_timing_test_insert_local.png, + gp_hash_random_int_subscript_timing_test_insert_msvc.png, + gp_hash_table.html, gp_hash_tag.html, + hash_based_containers.html, hash_exponential_size_policy.html, + hash_load_check_resize_trigger.html, hash_policy_cd.png, + hash_prime_size_policy.html, + hash_random_int_erase_mem_usage_test_gcc.png, + hash_random_int_erase_mem_usage_test.html, + hash_random_int_erase_mem_usage_test_local.png, + hash_random_int_erase_mem_usage_test_msvc.png, + hash_random_int_find_find_timing_test.html, + hash_random_int_subscript_find_timing_test.html, + hash_random_int_subscript_insert_timing_test.html, + hash_ranged_hash_range_hashing_fns.png, + hash_range_hashing_seq_diagram2.png, + hash_range_hashing_seq_diagram.png, + hash_standard_resize_policy.html, + hash_text_find_find_timing_test.html, + hash_zlob_random_int_find_find_timing_test.html, + hash_zlob_random_int_find_timing_test_gcc.png, + hash_zlob_random_int_find_timing_test_local.png, + hash_zlob_random_int_find_timing_test_msvc.png, index.html, + insert_error.html, insert_resize_sequence_diagram1.png, + insert_resize_sequence_diagram2.png, + insert_resize_sequence_diagram3.png, interface.html, + introduction.html, invalidation_guarantee_cd.png, + invalidation_guarantee_erase.png, join_error.html, + linear_probe_fn.html, list_update.html, list_update_tag.html, + lu_based_containers.html, lu.png, misc.html, motivation.html, + move_to_front_lu_policy.html, + multimap_text_find_timing_test_large.html, + multimap_text_find_timing_test_large_s2p_hash_gcc.png, + multimap_text_find_timing_test_large_s2p_hash_local.png, + multimap_text_find_timing_test_large_s2p_hash_msvc.png, + multimap_text_find_timing_test_large_s2p_tree_gcc.png, + multimap_text_find_timing_test_large_s2p_tree_local.png, + multimap_text_find_timing_test_large_s2p_tree_msvc.png, + multimap_text_find_timing_test_small.html, + multimap_text_find_timing_test_small_s2p_hash_gcc.png, + multimap_text_find_timing_test_small_s2p_hash_local.png, + multimap_text_find_timing_test_small_s2p_hash_msvc.png, + multimap_text_find_timing_test_small_s2p_tree_gcc.png, + multimap_text_find_timing_test_small_s2p_tree_local.png, + multimap_text_find_timing_test_small_s2p_tree_msvc.png, + multimap_text_insert_mem_usage_test_large.html, + multimap_text_insert_mem_usage_test_large_s2p_hash_gcc.png, + multimap_text_insert_mem_usage_test_large_s2p_hash_local.png, + multimap_text_insert_mem_usage_test_large_s2p_hash_msvc.png, + multimap_text_insert_mem_usage_test_large_s2p_tree_gcc.png, + multimap_text_insert_mem_usage_test_large_s2p_tree_local.png, + multimap_text_insert_mem_usage_test_large_s2p_tree_msvc.png, + multimap_text_insert_mem_usage_test_small.html, + multimap_text_insert_mem_usage_test_small_s2p_hash_gcc.png, + multimap_text_insert_mem_usage_test_small_s2p_hash_local.png, + multimap_text_insert_mem_usage_test_small_s2p_hash_msvc.png, + multimap_text_insert_mem_usage_test_small_s2p_tree_gcc.png, + multimap_text_insert_mem_usage_test_small_s2p_tree_local.png, + multimap_text_insert_mem_usage_test_small_s2p_tree_msvc.png, + multimap_text_insert_timing_test_large.html, + multimap_text_insert_timing_test_large_s2p_hash_gcc.png, + multimap_text_insert_timing_test_large_s2p_hash_local.png, + multimap_text_insert_timing_test_large_s2p_hash_msvc.png, + multimap_text_insert_timing_test_large_s2p_tree_gcc.png, + multimap_text_insert_timing_test_large_s2p_tree_local.png, + multimap_text_insert_timing_test_large_s2p_tree_msvc.png, + multimap_text_insert_timing_test_small.html, + multimap_text_insert_timing_test_small_s2p_hash_gcc.png, + multimap_text_insert_timing_test_small_s2p_hash_local.png, + multimap_text_insert_timing_test_small_s2p_hash_msvc.png, + multimap_text_insert_timing_test_small_s2p_tree_gcc.png, + multimap_text_insert_timing_test_small_s2p_tree_local.png, + multimap_text_insert_timing_test_small_s2p_tree_msvc.png, + node_invariant_invalidations.png, node_invariants.png, + null_hash_fn.html, null_lu_metadata.html, + null_mapped_type.html, null_probe_fn.html, + null_tree_node_update.html, null_trie_node_update.html, + ov_tree_tag.html, pairing_heap_tag.html, + pairing_priority_queue_text_push_pop_timing_test_gcc.png, + pairing_priority_queue_text_push_pop_timing_test_local.png, + pairing_priority_queue_text_push_pop_timing_test_msvc.png, + pairing_priority_queue_text_push_timing_test_gcc.png, + pairing_priority_queue_text_push_timing_test_local.png, + pairing_priority_queue_text_push_timing_test_msvc.png, + pat_trie.png, pat_trie_tag.html, + point_invalidation_guarantee.html, point_iterators_cd.png, + point_iterators_range_ops_1.png, + point_iterators_range_ops_2.png, pq_container_traits.html, + pq_design.html, pq_different_underlying_dss.png, + pq_examples.html, pq_performance_tests.html, + pq_regression_tests.html, pq_tests.html, prerequisites.html, + priority_queue.html, + priority_queue_random_int_push_pop_timing_test_gcc.png, + priority_queue_random_int_push_pop_timing_test.html, + priority_queue_random_int_push_pop_timing_test_local.png, + priority_queue_random_int_push_pop_timing_test_msvc.png, + priority_queue_random_int_push_timing_test_gcc.png, + priority_queue_random_int_push_timing_test.html, + priority_queue_random_int_push_timing_test_local.png, + priority_queue_random_int_push_timing_test_msvc.png, + priority_queue_tag_cd.png, priority_queue_tag_cd.svg, + priority_queue_tag.html, + priority_queue_text_join_timing_test_gcc.png, + priority_queue_text_join_timing_test.html, + priority_queue_text_join_timing_test_local.png, + priority_queue_text_join_timing_test_msvc.png, + priority_queue_text_modify_down_timing_test_gcc.png, + priority_queue_text_modify_down_timing_test.html, + priority_queue_text_modify_down_timing_test_local.png, + priority_queue_text_modify_down_timing_test_msvc.png, + priority_queue_text_modify_down_timing_test_pairing_thin_gcc.png, + priority_queue_text_modify_down_timing_test_pairing_thin_local.png, + priority_queue_text_modify_down_timing_test_pairing_thin_msvc.png, + priority_queue_text_modify_up_timing_test_gcc.png, + priority_queue_text_modify_up_timing_test.html, + priority_queue_text_modify_up_timing_test_local.png, + priority_queue_text_modify_up_timing_test_msvc.png, + priority_queue_text_modify_up_timing_test_pairing_thin_gcc.png, + priority_queue_text_modify_up_timing_test_pairing_thin_local.png, + priority_queue_text_modify_up_timing_test_pairing_thin_msvc.png, + priority_queue_text_pop_mem_usage_test_gcc.png, + priority_queue_text_pop_mem_usage_test.html, + priority_queue_text_pop_mem_usage_test_local.png, + priority_queue_text_pop_mem_usage_test_msvc.png, + priority_queue_text_push_pop_timing_test_gcc.png, + priority_queue_text_push_pop_timing_test.html, + priority_queue_text_push_pop_timing_test_local.png, + priority_queue_text_push_pop_timing_test_msvc.png, + priority_queue_text_push_timing_test_gcc.png, + priority_queue_text_push_timing_test.html, + priority_queue_text_push_timing_test_local.png, + priority_queue_text_push_timing_test_msvc.png, + PythonPoweredSmall.gif quadratic_probe_fn.html, + random_int_find_find_timing_test_tree_gcc.png, + random_int_find_find_timing_test_tree_local.png, + random_int_find_find_timing_test_tree_msvc.png, + range_invalidation_guarantee.html, + rationale_null_node_updator.png, rb_tree_tag.html, + rc_binomial_heap_tag.html, references.html, resize_error.html, + resize_policy_cd.png, restoring_node_invariants.png, + sample_probe_fn.html, sample_ranged_hash_fn.html, + sample_ranged_probe_fn.html, sample_range_hashing.html, + sample_resize_policy.html, sample_resize_trigger.html, + sample_size_policy.html, sample_tree_node_update.html, + sample_trie_access_traits.html, sample_trie_node_update.html, + sample_update_policy.html, simple_list.png, + splay_tree_tag.html, tests.html, + text_find_timing_test_hash_gcc.png, + text_find_timing_test_hash_local.png, + text_find_timing_test_hash_msvc.png, + text_find_timing_test_tree_like_gcc.png, + text_find_timing_test_tree_like_local.png, + text_find_timing_test_tree_like_msvc.png, thin_heap_tag.html, + tree_based_containers.html, tree.html, + tree_node_iterator.html, tree_node_updator_policy_cd.png, + tree_order_statistics_node_update.html, + tree_order_statistics_timing_test_gcc.png, + tree_order_statistics_timing_test.html, + tree_order_statistics_timing_test_local.png, + tree_order_statistics_timing_test_msvc.png, + tree_random_int_find_find_timing_test.html, + tree_split_join_timing_test_gcc.png, + tree_split_join_timing_test.html, + tree_split_join_timing_test_local.png, + tree_split_join_timing_test_msvc.png, tree_tag.html, + tree_text_find_find_timing_test.html, + tree_text_insert_timing_test.html, + tree_text_insert_timing_test_node_tree_gcc.png, + tree_text_insert_timing_test_node_tree_local.png, + tree_text_insert_timing_test_node_tree_msvc.png, + tree_text_insert_timing_test_pat_trie_gcc.png, + tree_text_insert_timing_test_pat_trie_local.png, + tree_text_insert_timing_test_pat_trie_msvc.png, + tree_text_insert_timing_test_vector_tree_gcc.png, + tree_text_insert_timing_test_vector_tree_local.png, + tree_text_insert_timing_test_vector_tree_msvc.png, + tree_text_lor_find_find_timing_test.html, + tree_text_lor_find_timing_test_gcc.png, + tree_text_lor_find_timing_test_local.png, + tree_text_lor_find_timing_test_msvc.png, + trie_based_containers.html, trie_const_node_iterator.html, + trie.html, trie_node_iterator.html, + trie_node_updator_policy_cd.png, + trie_order_statistics_node_update.html, + trie_prefix_search_node_update.html, + trie_string_access_traits.html, trie_tag.html, + trivial_iterator_tag.html, tutorial.html, + update_policy_cd.png, update_seq_diagram.png): Remove. + 2011-07-27 Paolo Carlini PR c++/49813 diff --git a/libstdc++-v3/doc/Makefile.am b/libstdc++-v3/doc/Makefile.am index 7e75cc71d21..e9df2459683 100644 --- a/libstdc++-v3/doc/Makefile.am +++ b/libstdc++-v3/doc/Makefile.am @@ -144,7 +144,6 @@ stamp-html-copy: stamp-html-docbook cp -r ${top_srcdir}/doc/html/ext ${docbook_outdir}/html/manual/ext cd ${docbook_outdir}/html/manual/ext rm -rf ${docbook_outdir}/html/manual/ext/.svn - rm -rf ${docbook_outdir}/html/manual/ext/pb_ds/.svn $(STAMP) stamp-html-copy doc-html: stamp-html @@ -339,6 +338,7 @@ xml_sources_manual = \ ${xml_dir}/manual/mt_allocator.xml \ ${xml_dir}/manual/numerics.xml \ ${xml_dir}/manual/parallel_mode.xml \ + ${xml_dir}/manual/policy_data_structures.xml \ ${xml_dir}/manual/prerequisites.xml \ ${xml_dir}/manual/profile_mode.xml \ ${xml_dir}/manual/shared_ptr.xml \ @@ -350,6 +350,7 @@ xml_sources_manual = \ ${xml_dir}/manual/strings.xml \ ${xml_dir}/manual/support.xml \ ${xml_dir}/manual/test.xml \ + ${xml_dir}/manual/test_policy_data_structures.xml \ ${xml_dir}/manual/using.xml \ ${xml_dir}/manual/using_exceptions.xml \ ${xml_dir}/manual/utilities.xml \ @@ -375,7 +376,8 @@ xml_noinst = \ ${xml_dir}/images/confdeps.pdf XSLTPROC = xsltproc -XSLTPROC_FLAGS = --nonet --xinclude +XSLT_FLAGS = --nonet --xinclude +XSLT_PARAM = --param toc.section.depth 4 #XSL_STYLE_DIR = /usr/share/xml/docbook/stylesheet/docbook-xsl-ns #XSL_STYLE_DIR = /usr/share/sgml/docbook/xsl-ns-stylesheets XSL_FO_STYLE = $(XSL_STYLE_DIR)/fo/docbook.xsl @@ -433,7 +435,7 @@ doc-xml-single-docbook: stamp-xml-single-docbook # HTML, index plus chapters stamp-html-docbook: $(xml_sources) ${docbook_outdir}/html @echo "Generating html files..." - $(XSLTPROC) $(XSLTPROC_FLAGS) -o ${docbook_outdir}/html/ \ + $(XSLTPROC) $(XSLT_PARAM) $(XSLT_FLAGS) -o ${docbook_outdir}/html/ \ $(XSL_HTML_STYLE) ${top_srcdir}/doc/xml/spine.xml $(STAMP) stamp-html-docbook @@ -443,7 +445,7 @@ doc-html-docbook: stamp-html-docbook manual_html = ${docbook_outdir}/html/libstdc++-manual-single.html stamp-html-single-docbook: $(xml_sources) ${docbook_outdir}/html @echo "Generating html single file..." - $(XSLTPROC) $(XSLTPROC_FLAGS) -o ${manual_html} \ + $(XSLTPROC) $(XSLT_PARAM) $(XSLT_FLAGS) -o ${manual_html} \ $(XSL_HTML_SINGLE_STYLE) ${top_srcdir}/doc/xml/spine.xml $(STAMP) stamp-html-single-docbook @@ -452,7 +454,7 @@ doc-html-single-docbook: stamp-html-single-docbook # FO stamp-fo-docbook: $(xml_sources) ${docbook_outdir}/fo @echo "Generating FO files..." - $(XSLTPROC) $(XSLTPROC_FLAGS) -o ${docbook_outdir}/fo/spine.fo \ + $(XSLTPROC) $(XSLT_FLAGS) -o ${docbook_outdir}/fo/spine.fo \ $(XSL_FO_STYLE) ${top_srcdir}/doc/xml/spine.xml $(STAMP) stamp-fo-docbook @@ -506,6 +508,7 @@ doc-epub-docbook: stamp-epub-docbook # Performance doc and graph configuration. # Assumes pychart, beautiful soup installed. # Generates the plots and graphs for performance testing. +# XXX this needs to be re-worked to create only the SVG charts doc_performance_script=${top_srcdir}/scripts/make_graphs.py doc-html-performance: -@(chmod + ${doc_performance_script}; \ diff --git a/libstdc++-v3/doc/Makefile.in b/libstdc++-v3/doc/Makefile.in index 40f00994249..503a304dfa2 100644 --- a/libstdc++-v3/doc/Makefile.in +++ b/libstdc++-v3/doc/Makefile.in @@ -385,6 +385,7 @@ xml_sources_manual = \ ${xml_dir}/manual/mt_allocator.xml \ ${xml_dir}/manual/numerics.xml \ ${xml_dir}/manual/parallel_mode.xml \ + ${xml_dir}/manual/policy_data_structures.xml \ ${xml_dir}/manual/prerequisites.xml \ ${xml_dir}/manual/profile_mode.xml \ ${xml_dir}/manual/shared_ptr.xml \ @@ -396,6 +397,7 @@ xml_sources_manual = \ ${xml_dir}/manual/strings.xml \ ${xml_dir}/manual/support.xml \ ${xml_dir}/manual/test.xml \ + ${xml_dir}/manual/test_policy_data_structures.xml \ ${xml_dir}/manual/using.xml \ ${xml_dir}/manual/using_exceptions.xml \ ${xml_dir}/manual/utilities.xml \ @@ -420,7 +422,8 @@ xml_noinst = \ ${xml_dir}/images/confdeps.png \ ${xml_dir}/images/confdeps.pdf -XSLTPROC_FLAGS = --nonet --xinclude +XSLT_FLAGS = --nonet --xinclude +XSLT_PARAM = --param toc.section.depth 4 #XSL_STYLE_DIR = /usr/share/xml/docbook/stylesheet/docbook-xsl-ns #XSL_STYLE_DIR = /usr/share/sgml/docbook/xsl-ns-stylesheets XSL_FO_STYLE = $(XSL_STYLE_DIR)/fo/docbook.xsl @@ -463,6 +466,7 @@ manual_epub = ${docbook_outdir}/epub/libstdc++-manual.epub # Performance doc and graph configuration. # Assumes pychart, beautiful soup installed. # Generates the plots and graphs for performance testing. +# XXX this needs to be re-worked to create only the SVG charts doc_performance_script = ${top_srcdir}/scripts/make_graphs.py # By adding these files here, automake will remove them for 'make clean' @@ -657,7 +661,6 @@ stamp-html-copy: stamp-html-docbook cp -r ${top_srcdir}/doc/html/ext ${docbook_outdir}/html/manual/ext cd ${docbook_outdir}/html/manual/ext rm -rf ${docbook_outdir}/html/manual/ext/.svn - rm -rf ${docbook_outdir}/html/manual/ext/pb_ds/.svn $(STAMP) stamp-html-copy doc-html: stamp-html @@ -818,14 +821,14 @@ doc-xml-single-docbook: stamp-xml-single-docbook # HTML, index plus chapters stamp-html-docbook: $(xml_sources) ${docbook_outdir}/html @echo "Generating html files..." - $(XSLTPROC) $(XSLTPROC_FLAGS) -o ${docbook_outdir}/html/ \ + $(XSLTPROC) $(XSLT_PARAM) $(XSLT_FLAGS) -o ${docbook_outdir}/html/ \ $(XSL_HTML_STYLE) ${top_srcdir}/doc/xml/spine.xml $(STAMP) stamp-html-docbook doc-html-docbook: stamp-html-docbook stamp-html-single-docbook: $(xml_sources) ${docbook_outdir}/html @echo "Generating html single file..." - $(XSLTPROC) $(XSLTPROC_FLAGS) -o ${manual_html} \ + $(XSLTPROC) $(XSLT_PARAM) $(XSLT_FLAGS) -o ${manual_html} \ $(XSL_HTML_SINGLE_STYLE) ${top_srcdir}/doc/xml/spine.xml $(STAMP) stamp-html-single-docbook @@ -834,7 +837,7 @@ doc-html-single-docbook: stamp-html-single-docbook # FO stamp-fo-docbook: $(xml_sources) ${docbook_outdir}/fo @echo "Generating FO files..." - $(XSLTPROC) $(XSLTPROC_FLAGS) -o ${docbook_outdir}/fo/spine.fo \ + $(XSLTPROC) $(XSLT_FLAGS) -o ${docbook_outdir}/fo/spine.fo \ $(XSL_FO_STYLE) ${top_srcdir}/doc/xml/spine.xml $(STAMP) stamp-fo-docbook diff --git a/libstdc++-v3/doc/html/ext/pb_ds/PythonPoweredSmall.gif b/libstdc++-v3/doc/html/ext/pb_ds/PythonPoweredSmall.gif deleted file mode 100644 index 268980706ab40af54e7de6d03af2e0fd467b9bd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361 zcmV-v0hazpNk%w1VK)F40J8u9|NsBz=jYzu-qzOEy}iAJgoHvuLOD4(F)=YIDJd8j z7!VK;2nY!O-T(k&r2qf`A^8LW000dDEC2ui05<>@000F4u*pd)bvWydt^eS}jU*SI z&2y~Bqdv~du5a9`bp4{0a{xd<;n(^Vg1}=Da5yH3DkjW<${3qMDG@t_8iib8w50)Q zuE+F4IgSp~+ALVQv2cFD!aA#OIY@Z$FR)=n3>eyXUtK#`@$9APGNrR>a z)e2GrJs}}uM%JuiMJx%s;YygV8z?Mk5ZFs#42~`qHhKifL!PdatxASK$x@|DlPzC1 HhyVaP_=1?P diff --git a/libstdc++-v3/doc/html/ext/pb_ds/acks.html b/libstdc++-v3/doc/html/ext/pb_ds/acks.html deleted file mode 100644 index 6612a4a8184..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/acks.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - Acknowledgments - - - - -
-

Acknowledgments

- -
    -
  1. This library was partially written at IBM's Haifa Research - Labs.
  2. - -
  3. The library is based heavily on policy-based design and - uses many useful techniques from [alexandrescu01modern].
  4. - -
  5. Two ideas are borrowed from the SGI-STL implementation - [sgi_stl]: - -
      -
    1. The prime-based resize policies use a list of primes - taken from the SGI-STL implementation.
    2. - -
    3. 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.
    4. -
    -
  6. - -
  7. Some test utilities borrow ideas from [boost_timer].
  8. - -
  9. We would like to thank Scott Meyers for useful comments - (without attributing to him any flaws in the design or - implementation of the library).
  10. - -
  11. Much of the documentation is [Python Powered] (especially through PyChart, Beautiful - Soup, and kjbuckets) - and uses [HTML tidy]. The CSS-driven menus are - slightly modified from Brothercake - (hopefully without introducing errors).
  12. -
-
- - 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 deleted file mode 100644 index 16cc6da870df0ad2a7899bfa366d4a8720e53114..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21668 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - Benjamin Kosnik - - - - - - - - - - - - basic_hash_table_tag - basic_tree_tag - - - tree_tag - trie_tag - - associative_container_tag - - - - - cc_hash_table_tag - gp_hash_table_tag - - - - - list_update_tag - - rb_tree_tag - splay_tree_tag - - - - pat_trie_tag - - ov_tree_tag - - 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 deleted file mode 100644 index 7814712c36f..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/assoc_container_traits.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - container_traits Interface - - - - -
-

container_traits Interface

- -

Traits of an associative-container based on its underlying - data structure.

- -

Defined in: tag_and_trait.hpp

- -

Template Parameters

- - - - - - - - - - - - - - - - - -
ParameterDescriptionDefault Value
-
-class Cntnr
-
-
-

Container type.

-
-
- -

Public Types and - Constants

- -

Container Attributes

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeDefinitionDescription
-
-invalidation_guarantee
-
-
-
-Invalidation guarantee.
-
-
-

Invalidation-guarantee type.

- -

This is either basic_invalidation_guarantee, - point_invalidation_guarantee, or - range_invalidation_guarantee

-
-
-order_preserving
-
-
-
-True only if Cntnr objects guarantee storing  keys by order.
-
-
-

Order-preserving indicator.

-
-
-erase_can_throw
-
-
-
-True only if erasing a key can throw.
-
-
-

Erase-throw indicator.

-
-
-reverse_iteration
-
-
-
-True only reverse iterators are supported.
-
-
-

Reverse iteration indicator.

-
-
-split_join_can_throw
-
-
-
-True only if split or join operations can throw.
-
-
-

Split-join throw indicator.

-
-
- - diff --git a/libstdc++-v3/doc/html/ext/pb_ds/assoc_design.html b/libstdc++-v3/doc/html/ext/pb_ds/assoc_design.html deleted file mode 100644 index 6c501e26bbd..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/assoc_design.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - Associative Containers - - - - -
-

Associative-Container Design

- -
    -
  1. Data-Structure Genericity
  2. - -
  3. Genericity discusses generic manipulation of - containers based on different underlying - data structures.
  4. - -
  5. Genericity discusses generic manipulation of - containers with different mapping semantics.
  6. - -
  7. Tree-Based - Containers describes the design and policies of - tree-based containers.
  8. - -
  9. Trie-Based - Containers describes the design and policies of - trie-based containers.
  10. - -
  11. Hash-Based - Containers describes the design and policies of - hash-based containers.
  12. - -
  13. List-Based - Containers describes the design and policies of - list-based containers with update policies.
  14. -
-
- - diff --git a/libstdc++-v3/doc/html/ext/pb_ds/assoc_examples.html b/libstdc++-v3/doc/html/ext/pb_ds/assoc_examples.html deleted file mode 100644 index b64c747454c..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/assoc_examples.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - Examples - - - - -
-

Associative-Container Examples

- -

Basic Use

- -
    -
  1. - basic_map.cc - Basic use of "maps".
  2. - -
  3. basic_set.cc - Basic use of "sets".
  4. - -
  5. erase_if.cc - Conditionally erasing values from a container object.
  6. -
- -

Generics

- -
    -
  1. assoc_container_traits.cc - Using container_traits to query - about underlying data structure behavior.
  2. - -
  3. hash_find_neg.cc - A non-compiling example showing wrong use of finding keys in - hash-based containers.
  4. -
- -

Hash-Based - Containers

- - -

Resize - Related

- - -
    -
  1. hash_initial_size.cc - Setting the initial size of a hash-based container - object.
  2. - -
  3. hash_resize_neg.cc - A non-compiling example showing how not to resize a - hash-based container object.
  4. - -
  5. hash_resize.cc - Resizing the size of a hash-based container object.
  6. - -
  7. hash_illegal_resize.cc - Showing an illegal resize of a hash-based container - object.
  8. - -
  9. hash_load_set_change.cc - Changing the load factors of a hash-based container - object.
  10. -
- -

Hash-Function - Related

- - -
    -
  1. hash_mod.cc - Using a modulo range-hashing function for the case of an - unknown skewed key distribution.
  2. - -
  3. shift_mask.cc - Writing a range-hashing functor for the case of a known - skewed key distribution.
  4. - -
  5. store_hash.cc - Storing the hash value along with each key.
  6. - -
  7. ranged_hash.cc - Writing a ranged-hash functor.
  8. -
- -

Tree-Like Containers (Trees and - Tries)

- - -

Node-Invariants

- - -
    -
  1. tree_order_statistics.cc - Using trees for order statistics.
  2. - -
  3. tree_intervals.cc - Augmenting trees to support operations on line - intervals.
  4. -
- -

Split and - Join

- - -
    -
  1. tree_join.cc - Joining two tree-based container objects.
  2. - -
  3. trie_split.cc - Splitting a PATRICIA trie container object.
  4. - -
  5. tree_order_statistics_join.cc - Order statistics while joining two tree-based container - objects.
  6. -
- -

Trie-Based - Containers

- - -
    -
  1. trie_dna.cc - Using a PATRICIA trie for DNA strings.
  2. - -
  3. trie_prefix_search.cc - Using a PATRICIA trie for finding all entries whose key - matches a given prefix.
  4. -
- -

"Multimaps" and - "Multisets".

-
    -
  1. basic_multimap.cc - Basic use of "multimaps".
  2. - -
  3. basic_multiset.cc - Basic use of "multisets".
  4. -
-
- - 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 deleted file mode 100644 index 642f8480953..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/assoc_performance_tests.html +++ /dev/null @@ -1,345 +0,0 @@ - - - - - -Associative-Container Performance Tests - - - -
-

Associative-Container - Performance Tests

-

Settings

-

This section describes performance tests and their results. - In the following, g++, msvc++, and local (the build used for generating this - documentation) stand for three different builds:

-
-
-

g++

-
    -
  • CPU speed - cpu MHz : 2660.644
  • -
  • Memory - MemTotal: 484412 kB
  • -
  • Platform - - Linux-2.6.12-9-386-i686-with-debian-testing-unstable
  • -
  • 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.
  • -
-
-
-
-
-
-

msvc++

-
    -
  • CPU speed - cpu MHz : 2660.554
  • -
  • Memory - MemTotal: 484412 kB
  • -
  • Platform - Windows XP Pro
  • -
  • Compiler - Microsoft (R) 32-bit C/C++ Optimizing - Compiler Version 13.10.3077 for 80x86 Copyright (C) - Microsoft Corporation 1984-2002. All rights - reserved.
  • -
-
-
-
-

local

    -
  • CPU speed - cpu MHz : 2250.000
  • -
  • Memory - MemTotal: 2076248 kB
  • -
  • Platform - Linux-2.6.16-1.2133_FC5-i686-with-redhat-5-Bordeaux
  • -
  • 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. -
  • -
-
-

Tests

-

Hash-Based - Containers

-
    -
  1. Hash-Based - Text find Find Timing Test
  2. -
  3. Hash-Based - Random-Integer find Find Timing Test
  4. -
  5. Hash-Based - Random-Integer Subscript Find Timing Test
  6. -
  7. Hash-Based - Random-Integer Subscript Insert Timing Test
  8. -
  9. Hash-Based - Skewed-Distribution Random-Integer find Find Timing - Test
  10. -
  11. Hash-Based Erase - Memory Use Test
  12. -
-

Tree-Like-Based Containers

-
    -
  1. Tree-Based - and Trie-Based Text Insert Timing Test
  2. -
  3. Tree-Based - and Trie-Based Text find Find Timing Test
  4. -
  5. Tree-Based - Locality-of-Reference Text find Find Timing - Test
  6. -
  7. Tree-Based - Random-Integer find Find Timing Test
  8. -
  9. Tree Split and - Join Timing Test
  10. -
  11. Tree - Order-Statistics Timing Test
  12. -
-

Multimaps

-
    -
  1. "Multimap" - Text Find Timing Test with Small Average Secondary-Key - to Primary-Key Ratio
  2. -
  3. "Multimap" - Text Find Timing Test with Large Average Secondary-Key - to Primary-Key Ratio
  4. -
  5. "Multimap" - Text Insert Timing Test with Small Average - Secondary-Key to Primary-Key Ratio
  6. -
  7. "Multimap" - Text Insert Timing Test with Large Average - Secondary-Key to Primary-Key Ratio
  8. -
  9. "Multimap" - Text Insert Memory-Use Test with Small Average - Secondary-Key to Primary-Key Ratio
  10. -
  11. "Multimap" - Text Insert Memory-Use Test with Large Average - Secondary-Key to Primary-Key Ratio
  12. -
-

Observations

-

Underlying Data-Structure Families

-

In general, hash-based containers (see Design::Associative - Containers::Hash-Based Containers) have better timing - performance than containers based on different underlying-data - structures. The main reason to choose a tree-based (see - Design::Associative - Containers::Tree-Based Containers) or trie-based container - (see Design::Associative - Containers::Trie-Based Containers) is if a byproduct of the - tree-like structure is required: either order-preservation, or - the ability to utilize node invariants (see Design::Associative - Containers::Tree-Based Containers::Node Invariants and - Design::Associative - Containers::Trie-Based Containers::Node Invariants). If - memory-use is the major factor, an ordered-vector tree (see - Design::Associative - Containers::Tree-Based Containers) gives optimal results - (albeit with high modificiation costs), and a list-based - container (see Design::Associative - Containers::List-Based Containers) gives reasonable - results.

-

Hash-Based - Container Types

-

Hash-based containers are typically either collision - chaining or probing (see Design::Associative - Containers::Hash-Based Containers). 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 [meyers96more] - Item 10); a - probing container might incur less contention in this case.

-

Hash-Based Containers' Policies

-

In hash-based containers, the range-hashing scheme (see - Design::Associative - Containers::Hash-Based Containers::Hash Policies) 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 (e.g., text hashing, - floating-point hashing), the hash function is powerful enough - to generate hash values with good uniformity properties - [knuth98sorting]; - a modulo-based scheme, taking into account all bits of the hash - value, appears to overlap the hash function in its effort.

-

The range-hashing scheme determines many of the other - policies (see Design::Hash-Based - Containers::Policy Interaction). A mask-based scheme works - well with an exponential-size policy (see Design::Associative - Containers::Hash-Based Containers::Resize Policies) ; for - probing-based containers, it goes well with a linear-probe - function (see Design::Associative - Containers::Hash-Based Containers::Hash Policies).

-

An orthogonal consideration is the trigger policy (see - Design::Associative - Containers::Hash-Based Containers::Resize Policies). This - presents difficult tradeoffs. E.g., different load - factors in a load-check trigger policy yield a - space/amortized-cost tradeoff.

-

Tree-Like-Based Container - Types

-

In general, there are several families of tree-based - underlying data structures: balanced node-based trees - (e.g., red-black or AVL trees), high-probability - balanced node-based trees (e.g., random treaps or - skip-lists), competitive node-based trees (e.g., 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.

-

Of the balanced node-based trees, this library includes a - red-black tree (see Design::Associative - Containers::Tree-Based Containers), 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 [austern00noset].

-

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.

-

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, e.g., - std::string, 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 Design::Associative - Containers::Tree-Based Containers).

-

Ordered-vector trees (see Design::Associative - Containers::Tree-Based Containers) use very little space - [austern00noset]. - They do not have any other advantages (at least in this - implementation).

-

Large-fan-out PATRICIA tries (see Design::Associative - Containers::Trie-Based Containers) 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. [okasaki98mereable] - 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, e.g., DNA - strings (see Examples::Associative - Containers::Trie-Based Containers).

-

Mapping-Semantics - Considerations

-

Different mapping semantics were discussed in Motivation::Associative - Containers::Alternative to Multiple Equivalent Keys and - Tutorial::Associative - Containers::Associative Containers Others than Maps. 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:

-
    -
  1. Use an associative container that allows equivalent-key - values (such as std::multimap)
  2. -
  3. 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 - Design::Associative - Containers::Tree-Based Containers and Design::Associative - Containers::Hash-Based Containers)
  4. -
  5. 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 Design::Associative - Containers::List-Based Containers)
  6. -
  7. Use a unique-key value associative container that maps - each primary key to some non-associative container - (e.g., std::vector)
  8. -
  9. Use a unique-key value associative container that takes - into account both primary and secondary keys.
  10. -
-

We do not think there is a simple answer for this (excluding - option 1, which we think should be avoided in all cases).

-

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, e.g., [boost_pool]). 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).

-

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.

-

To be more precise, assume there are m primary keys, - primary key i is mapped to ni - secondary keys, and each primary key is mapped, on average, to - n secondary keys (i.e., - E(ni) = n).

-

Suppose one wants to find a specific pair of primary and - secondary keys. Using 1 with a tree based container - (std::multimap), the expected cost is - E(Θ(log(m) + ni)) = Θ(log(m) + - n); using 1 with a hash-based container - (std::tr1::unordered_multimap), the expected cost is - Θ(n). Using 2 with a primary hash-based container - and secondary hash-based containers, the expected cost is - O(1); using 2 with a primary tree-based container and - secondary tree-based containers, the expected cost is (using - the Jensen inequality [motwani95random]) - E(O(log(m) + log(ni)) = O(log(m)) + - E(O(log(ni)) = O(log(m)) + O(log(n)), - 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 O(1); using 5 - with a tree based container, the cost is - E(Θ(log(mn))) = Θ(log(m) + - log(n)).

-

Suppose one needs the values whose primary key matches some - given key. Using 1 with a hash-based container, the expected - cost is Θ(n), 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 - Θ(log(m) + n), 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 Θ(mn).

-

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 Θ(n), - but with very high constants; using 1 with a tree-based - container, the cost is Θ(nlog(mn)). Using 2, 3, - and 4, the expected cost is Θ(n), but typically - with far lower costs than 1. 5 is similar to 1.

-
- - 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 deleted file mode 100644 index 9b6b6b83982..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/assoc_regression_tests.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - Associative-Container Regression Tests - - - - - -
-

Associative-Container Regression Tests

- -

Description

- -

The library contains a single comprehensive regression test. - For a given container type in pb_ds, the test creates - an object of the container type and an object of the - corresponding STL type (e.g., std::set). It - then performs a random sequence of methods with random - arguments (e.g., inserts, erases, and so forth) on both - objects. At each operation, the test checks the return value of - the method, and optionally both compares pb_ds's - object with the STL's object as well as performing other - consistency checks on pb_ds's object (e.g., - order preservation, when applicable, or node invariants, when - applicable).

- -

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 (e.g., - resource leaks and multiple de-allocations). Both - pb_ds's containers and the containers' value-types are - configured to use this allocator.

- -

Due to compiler constraints, the test is split into the - several sources, each checking only some containers.

- -

Tests

- -

"Set" - Tests

- -

The following check all "set" types:

- -
    -
  1. hash_no_data_map_rand.cc - checks all hash-based "set" types.
  2. - -
  3. list_update_no_data_map_rand.cc - checks all list-based "set" types.
  4. - -
  5. tree_no_data_map_rand.cc - checks all tree-based "set" types.
  6. - -
  7. trie_no_data_map_rand.cc - checks all PATRICIA-trie-based "set" types.
  8. -
- -

"Map" - Tests

- -

The following check all "map" types:

- -
    -
  1. hash_data_map_rand.cc - checks all hash-based "map" types.
  2. - -
  3. list_update_data_map_rand.cc - checks all list-based "map" types.
  4. - -
  5. tree_data_map_rand.cc - checks all tree-based "map" types.
  6. - -
  7. trie_data_map_rand.cc - checks all PATRICIA-trie-based "map" types.
  8. -
-
- - diff --git a/libstdc++-v3/doc/html/ext/pb_ds/assoc_tests.html b/libstdc++-v3/doc/html/ext/pb_ds/assoc_tests.html deleted file mode 100644 index 6e4474945d3..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/assoc_tests.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - Associative-Container Tests - - - - -
-

Associative-Container Tests

- -

Associative-Container - Regression Tests describes the regression tests; Associative-Container - Performance Tests describes the performance tests.

-
- - 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 deleted file mode 100644 index ceb91cdc747..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/associative_container_tag.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - associative_container_tag Interface - - - - -
-

associative_container_tag Interface

- -

Basic associative-container data structure tag.

- -

Defined in: tag_and_trait.hpp

- -

Base Classes

- - - - - - - - - - - - - -
ClassDerivation Type
-
-container_tag
-
-
-

public

-
-
- - 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 deleted file mode 100644 index 668e681d8c0..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/basic_hash_table.html +++ /dev/null @@ -1,436 +0,0 @@ - - - - - - - basic_hash_table Interface - - - - -
-

basic_hash_table Interface

- -

An abstract basic hash-based associative container.

- -

Defined in: assoc_container.hpp

- -

Template Parameters

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterDescriptionDefault Value
-
-typename Key
-
-
-

Key type.

-
-
-
-typename Mapped
-
-
-

Mapped type.

-
-
-
-class Hash_Fn
-
-
-

Hash functor.

-
-
-
-class Eq_Fn
-
-
-

Equivalence functor.

-
-
-
-class Resize_Policy
-
-
-

Resize policy.

-
-
-
-bool Store_Hash
-
-
-

Indicates whether the hash value will be stored along - with each key.

-
-
-
-class Tag
-
-
-

Mapped-structure tag.

-
-
-
-class Allocator
-
-
-

Allocator type.

-
-
- -

Base Classes

- - - - - - - - - - - - - - - - - - - -
ClassDerivation Type
-
-Resize_Policy
-
-
-

public

-
-
-container_base
-
-
-

public

-
- -

Public Types and - Constants

- -

Policy Definitions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeDefinitionDescription
-
-hash_fn
-
-
-
-Hash_Fn
-
-
-

Hash functor type.

-
-
-eq_fn
-
-
-
-Eq_Fn
-
-
-

Equivalence functor type.

-
-
-resize_policy
-
-
-
-Resize_Policy
-
-
-

Resize policy type.

-
-
-store_hash
-
-
-
-Store_Hash
-
-
-

Indicates whether a hash value is stored with each - entry.

-
- -

Public Methods

- -

Constructors, Destructor, and - Related

- - - - - - - - - - - - - -
MethodDescription
-
-virtual 
-  ~basic_hash_table
-  ()
-
-
-

Destructor.

-
- -

Policy Access Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-hash_fn &
-  get_hash_fn
-  ()
-
-
-

Access to the hash_fn object.

-
-
-const hash_fn &
-  get_hash_fn
-  () const
-
-
-

Const access to the hash_fn object.

-
-
-eq_fn &
-  get_eq_fn
-  ()
-
-
-

Access to the eq_fn - object.

-
-
-const eq_fn &
-  get_eq_fn
-  () const
-
-
-

Const access to the eq_fn object.

-
-
-resize_policy &
-  get_resize_policy
-  ()
-
-
-

Access to the resize_policy - object.

-
-
-const resize_policy &
-  get_resize_policy
-  () const
-
-
-

Const access to the resize_policy - object.

-
- -

Private Methods

- -

Resize Methods

- - - - - - - - - - - - - -
MethodDescription
-
-virtual void 
-  do_resize
-  (size_type new_size)
-
-
-

Resizes the container object to new_size.

-
-
- - 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 deleted file mode 100644 index 9dc5e6d86b4..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/basic_hash_tag.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - basic_hash_tag Interface - - - - -
-

basic_hash_tag Interface

- -

Basic hash data structure tag.

- -

Defined in: tag_and_trait.hpp

- -

Base Classes

- - - - - - - - - - - - - -
ClassDerivation Type
-
-associative_container_tag
-
-
-

public

-
-
- - 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 deleted file mode 100644 index d4a0df23fca..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/basic_invalidation_guarantee.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - basic_invalidation_guarantee Interface - - - - -
-

basic_invalidation_guarantee Interface

- -

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.

- -

Defined in: tag_and_trait.hpp

-
- - diff --git a/libstdc++-v3/doc/html/ext/pb_ds/basic_tree.html b/libstdc++-v3/doc/html/ext/pb_ds/basic_tree.html deleted file mode 100644 index 3811707fa06..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/basic_tree.html +++ /dev/null @@ -1,660 +0,0 @@ - - - - - - - basic_tree Interface - - - - -
-

basic_tree Interface

- -

An abstract basic tree-like-based associative container.

- -

Defined in: assoc_container.hpp

- -

Template Parameters

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterDescriptionDefault Value
-
-typename Key
-
-
-

Key type.

-
-
-
-typename Mapped
-
-
-

Mapped type.

-
-
-
-class Tag
-
-
-

Mapped-structure tag.

-
-
-
-class Node_Update
-
-
-

Node updater.

- -

Restores node-invariants when invalidated.

-
-
-
-class Policy_Tl
-
-
-

Policy typelist.

- -

Contains subclasses' policies.

-
-
-
-class Allocator
-
-
-

Allocator type.

-
-
- -

Base Classes

- - - - - - - - - - - - - - - - - - - -
ClassDerivation Type
-
-Node_Update
-
-
-

public

-
-
-container_base
-
-
-

public

-
- -

Public Types and - Constants

- -

Key-Type Definitions

- - - - - - - - - - - - - - - - - -
TypeDefinitionDescription
-
-const_key_reference
-
-
-
-typename container_base::const_key_reference
-
-
-

Const key reference type.

-
- -

Policy Definitions

- - - - - - - - - - - - - - - - - -
TypeDefinitionDescription
-
-node_update
-
-
-
-Node_Update
-
-
-

Node updater type.

-
- -

Iterator Definitions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeDefinitionDescription
-
-const_iterator
-
-
-
-typename container_base::const_iterator
-
-
-

Const range-type iterator.

-
-
-iterator
-
-
-
-typename container_base::iterator
-
-
-

Range-type iterator.

-
-
-const_reverse_iterator
-
-
-
-Const reverse range-type iterator.
-
-
-

Const reverse range-type iterator.

-
-
-reverse_iterator
-
-
-
-Reverse range-type iterator.
-If Mapped is null_mapped_type, then this is synonymous to const_reverse_iterator -
-
-

Reverse range-type iterator.

-
- -

Public Methods

- -

Constructors, Destructor, and - Related

- - - - - - - - - - - - - -
MethodDescription
-
-virtual 
-  ~basic_tree
-  ()
-
-
-

Destructor.

-
- -

Policy Access Methods

- - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-node_update &
-  get_node_update
-  ()
-
-
-

Access to the node_update - object.

-
-
-const node_update &
-  get_node_update
-  () const
-
-
-

Const access to the node_update - object.

-
- -

Find Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-iterator
-  lower_bound
-  (const_key_reference r_key)
-
-
-

Returns an iterator corresponding - to the entry whose key is the smallest one at least as - large as r_key.

-
-
-const_iterator
-  lower_bound
-  (const_key_reference r_key) const
-
-
-

Returns a const iterator corresponding - to the entry whose key is the smallest one at least as - large as r_key.

-
-
-iterator
-  upper_bound
-  (const_key_reference r_key)
-
-
-

Returns an iterator corresponding - to the entry whose key is the smallest one larger than - r_key.

-
-
-const_iterator
-  upper_bound
-  (const_key_reference r_key) const
-
-
-

Returns a const_iterator - corresponding to the entry whose key is the smallest one - larger than r_key.

-
- -

Erase Methods

- - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-iterator
-  erase
-  (iterator it)
-
-
-

Erases the value_type corresponding to the iterator it. Returns the iterator corresponding - to the next value_type.

-
-
-reverse_iterator
-  erase
-  (reverse_iterator it)
-
-
-

Erases the value_type corresponding to the reverse_iterator - it. Returns the reverse_iterator - corresponding to the previous value_type.

-
- -

Iteration Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-reverse_iterator
-  rbegin
-  ()
-
-
-

Returns a reverse_iterator - corresponding to the last value_type in the - container.

-
-
-const_reverse_iterator
-  rbegin
-  () const
-
-
-

Returns a const_reverse_iterator - corresponding to the last value_type in the - container.

-
-
-reverse_iterator
-  rend
-  ()
-
-
-

Returns a reverse_iterator - corresponding to the just-before-first value_type in the - container.

-
-
-const_reverse_iterator
-  rend
-  () const
-
-
-

Returns a const_reverse_iterator - corresponding to the just-before-first value_type in the - container.

-
- -

Split and join - Methods

- - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-void 
-  join
-  (basic_tree &other)
-
-
-

Joins two trees. When this function returns, - other will be - empty.

- -

When calling this method, other's keys must be all larger or - all smaller than this object's keys, and other's policies must be - equivalent to this object's policies.

-
-
-void
-  split
-  (const_key_reference r_key, 
-    basic_tree &other)
-
-
-

Splits into two trees. When this function returns, - other will contain - only keys larger than r_key.

- -

When calling this method, other's policies must be - equivalent to this object's policies.

-
-
- - 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 deleted file mode 100644 index 5647f551e95..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/basic_tree_assoc_container_const_node_iterator.html +++ /dev/null @@ -1,383 +0,0 @@ - - - - - - - tree::const_node_iterator - Interface - - - - -
-

tree::const_node_iterator - Interface

- -

Const node iterator.

- -

This is an &qout;iterator to an iterator&qout; - it - iterates over nodes, and de-referencing it returns one of the - tree's iterators

- -

Public Types and - Constants

- -

Iterator Definitions

- - - - - - - - - - - - - - - - - - - - - - - - - -
TypeDefinitionDescription
-
-iterator_category
-
-
-
-trivial_iterator_tag
-
-
-

Category.

- -

This tag identifies that the iterator has none of the - STL's iterators' movement abilities.

-
-
-difference_type
-
-
-
-void
-
-
-

Difference type.

-
- -

Value-Type Definitions

- -

Note that a node iterator's value type is actually a tree - iterator.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeDefinitionDescription
-
-value_type
-
-
-
-container_base::const_iterator
-
-
-

Iterator's value type.

-
-
-reference
-
-
-
-container_base::const_iterator
-
-
-

Iterator's reference type.

-
-
-const_reference
-
-
-
-container_base::const_iterator
-
-
-

Iterator's const reference type.

-
- -

Metadata Definitions

- -

These are only defined if - basic_tree::Node_Update - is not null_tree_node_update

- - - - - - - - - - - - - - - - - - - - - - - - - -
TypeDefinitionDescription
-
-metadata_type
-
-
-
-typename basic_tree::Node_Update::metadata_type
-
-
-

Metadata type.

-
-
-const_metadata_reference
-
-
-
-typename Allocator::template rebind<
-    metadata_type>::other::const_reference
-
-
-

Const metadata reference type.

-
- -

Public Methods

- -

Constructors, Destructor, and - Related

- - - - - - - - - - - - - -
MethodDescription
-
-inline 
-  const_node_iterator
-  ()
-
-
-

Default constructor.

-
- -

Access Methods

- - - - - - - - - - - - - -
MethodDescription
-
-inline const_reference
-  operator*
-  () const
-
-
-

Access.

-
- -

Metadata Access Methods

- -

These are only defined if - basic_tree::Node_Update - is not null_tree_node_update

- - - - - - - - - - - - - -
MethodDescription
-
-inline const_metadata_reference
-  get_metadata
-  () const
-
-
-

Metadata access.

-
- -

Movement Methods

- - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-inline const_node_iterator
-  get_l_child
-  () const
-
-
-

Returns the const node iterator associated with the - left node.

-
-
-inline const_node_iterator
-  get_r_child
-  () const
-
-
-

Returns the const node iterator associated with the - right node.

-
- -

Comparison Methods

- - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-inline bool
-  operator==
-  (const const_node_iterator &other) const
-
-
-

Compares to a different iterator object.

-
-
-inline bool
-  operator!=
-  (const const_node_iterator &other) const
-
-
-

Compares (negatively) to a different iterator - object.

-
-
- - 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 deleted file mode 100644 index 8eca2a81859..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/basic_tree_tag.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - basic_tree_tag Interface - - - - -
-

basic_tree_tag Interface

- -

Basic tree-like data structure tag.

- -

Defined in: tag_and_trait.hpp

- -

Base Classes

- - - - - - - - - - - - - -
ClassDerivation Type
-
-associative_container_tag
-
-
-

public

-
-
- - 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 deleted file mode 100644 index 47873b1cfb9..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/binary_heap_tag.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - binary_heap_tag Interface - - - - -
-

binary_heap_tag Interface

- -

Binary-heap (array-based) data structure tag.

- -

Defined in: tag_and_trait.hpp

- -

Base Classes

- - - - - - - - - - - - - -
ClassDerivation Type
-
-priority_queue_tag
-
-
-

public

-
-
- - 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 deleted file mode 100644 index 07f0953a661467d0953c8cf555161522bdc26b89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5357 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 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 deleted file mode 100644 index c69cf1e7641a7fe8a51bc8f073daf582026bbb21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23669 zcmb@u2T)Vd`zD+ast5=QC{-yUy@?=I6huHkMd?*AO7DbDz(!F}dgw~;B~n8Pf+83M z=`9et3WQz*VGqCE|F<){`_1fp^D$_~n{)3y5^kQ)(}>C(5XfbSwubs+zw{M6BK`5s&dJ8eSWBfC zHz!|q;bj|24J!UZ=JR^*_Rqh+eAiBldGJN)m0FXh(GSl*?uavyinOl!{Lqdn_Z1(- z(;Pb5N6FQ%U6%Gbo1^DsFe|@){aTS&TblFWmEH4N!>QaEyGd%u>ODxo@bmHU#a$Eb zV!WlHq2Vj3qY6F*J|zT2L`2-XEqri}nfc?ZN1InbE4sY-JK#$eovydwOM!$qCT3=4 z?Q4R(r%!nB|L=`Dy1o!TzW((T)5FX_;z5qe-sIM+rlzJ7ar4?0ImGlhWY*DV{-f5^ zK%Q!!3(5l)lKGpEF!_xyT!6cZ0;@{kYatyICL~Xx~=~1$T<-fg2 zuinovCgt^U$(H@u8vAdF85zyfmA36x-14p#6~krbuu6x4d?>r6_iyI0u`xAKF)@qG z($QRB96p}=WyBBH9^50OGosfGQe}U9w4|0L<1yROA}l=JDjPcV#8~{2lJAN~*I}I6 z?x@`fX)(=>C+p+Kjpp6i*{Ax-8y$$Lz_n&xL4Jv%=DP!1ws19QQax#@D@Id;gI9Lh zW4(>$#BX`HOw_o{Y^N6E<_MAYxp@6WUwpEquW8*4mvMUr&KoNen$c{>{%zq@C-;r+ z)9?nZ{{drMuI!Ga!LHU#Px<^CEIN@wtDS#$>HhoCN5y_T%T?V=&!*km8MKV_l_4@R zG71|V=b2>CwZxVy`k@yd#d26|+QQ|HJqqReMsWSelUFXQVO2!31K-p0AHR3vQkgie z|0(L^4Lz#Aa_7w#v(}K{gYyQ;Rk?1{Er{MsmB1jDIY-3zOV5M$JI)($4L132MJ)!O z9Iu6{d3G>st*F?2e@A*6H2pYRuuo)GdYo;?WRHk9=ke}Se>klqD;vMqlg30r{f))k z(r0a|x!aD0$Ir$oTQ++>hxvtj*IUfA1>Qpz!;`W`tU!&~WW%!O@8m+I(75#UbSR04 zaXYDKIsBIq7Z*2{IUk65NzD-O?}WT|qVF_P&JE#K^1bg5W|rxqyz69EBVvub^I0=` z>i#2(IWVG)A005H>@S6!g?E=^CFIeI@1(%V3 zZJnRZupKmQhBU?G-Oo_mNkacpEV=WgK3_khk;CLca<4?>03j}x!;kqQm4HiM{0fhv z?~31_Ffg28jPL61IGC6>iK512yP2=AC54pA-xM1b=&LC&BpCAS_qc@&!Q3LsU z6T5wPn1UxuP0=${R8*pI%<-rlzoU)L*phq7e84m{U91EC=87C0ma+Gg{^g z^fS!rpZ!cynmi_(P?VH}93SqOwFDh#l2+@i9qmb*3qOCV?h{_tO$GTzAyyB^#) z!$m1V%kkdy$z|lXX!cO@Z!KQSzr^MEivyYL7Vd55V^t6TKv`W*-}X9rep$<2^@7 zo3m0hDKvlT42tA|qp*~~tW-OlI-8h}tIsohjM4@N2S4I5h!gkUpEb|NGn*S34U@qF zg)V&5;`s}%^I83KugYFJv@+;mGql3Ij@WGfU9iS@xu_Oi%jAB(lKlat809$2*==E( zDaiLBL1t;R1hM7%Q#FSAX}p%PqMH;F)5^PCqrrzV9l!FHYqM{@D_*j&kpID$bSD@3 z#pZlhEbJSzxpv;MSq&!8L2p)xSU)!vxLj68U62=iviGLH|IwSXmo~|mwU$8Vgunh< zIeKX~Ji3Jojsn3epATQH^!q#6u!Ve>bGO-jXUKT%(pbyWZ)Z-vNrr6T28#@PweMQ+ zMLsCWWRm5iJ33eY8$Y6P(-qr=Rl_;I!*m8@?cI zhW)#rr8b4^L@Q!#ieFYnX4kC2b3xQ;xYWN{HQ+Z+jC+)Gl>N^|*Tk$fXzt@gKZrdX z?n^^_@8$ff{5)Ih%o|R|qI5q*=%R?NzHxh3YE{B)4ls%S;i=J)Nt1Cshir=y;m=TCoDjl-85^>T#R zHo@V%&`=pP2CtIjO3)1}=vkp6&=UeapH!}$nWV6wv0&hWSx`-Kw95(79qz52bWXTp zR*l)M{AN@^thVn?5N>T+t)0k6ja?$Pl;^M6!7r^SR{g=2kI0Hl)O*Y&xwRZzMXWXN zP5sTrpj{?vC6UIot_&Iz{dNjTcRyUWH)6N&F=Pnb{_|144|b{O!nMMsvdY53KaB>e z2lM$;&4Fv)82hiU=$7kT@c|z(p(gm}C6ZvMJfT0XycP35-WhTGH`(CzHatB1Gl=(3 ze}iD@Zd?8HwWLWUfl4-Tbs^cBI9>dtB-p6bWFr$3nubf!VEKx7`T}*3Q>l}vi1c$& zl)6yQ{fB*Fe+C;wNY`0CiP=dVXTfm$5yJSbLk<>{D{`~5v9T(+e}l1g}cKwkN?R-2Ah6*tW*8C55os z(G1hHRin3qgZ+K5;A6h~GjC%J9&^b>%8p6D7|8E&n%bJd{GpaZXPtkyGwN~TXCN?P>onoNr=|lPN=Fhp{^2ouZu&PD5|R=p&}j6{lcTLz zU2W}yLHq>Eg?O}OljWsK4ioJUHX4BztHft=v@Vt)Xjjw|!s*GLo!khn(U#yq5IOh3 z0IO%g6o(K>Dq2#_qGL_@i9G%jc{(7-1ln%Qe#^qQWWMYX;5*cXQZEAKrshSG@S z^^*ndf(+mB=C|CwqgbOdvl>$nKI^=eejSg5Q_;uWQ2H!`kTmc;%hw+<>?@7#!ip2g z*0LDZQO5gWYt-qfV?|g4{PD;PnFsr(Q9zv~6rRMuB@N~=GL$qi{h6_R|8TkD??3?) z=M87%{#CY`Nc5d7)!_1feV^K);F?LZ-^T3Q8_uJZQkf$WSMtArxTvB6?mus!vNJdg zk!;@X&#$uUY`FTydA^u!{h+85xCms0d2wi(6&KaWh z+g=)|+Lij9M;@!!31)=rvPvBLDwSuhNulM4Akl7t=W%cQlI6 zJ7vVS(=8VCmJEhuqMA*4Ez_7IX>Mg=mT2Og!fQB@LSa={TS}O|)?;t=w6U_pf;F9E zY4l6FxOX}2o!zpD-N*(ITum22FB;d-y{bz1NB-NtwbZ5?eU|x&EoEeW*PyTVIqHI3 ze0*}OPMg1(O*r$KQ*5C1hgPEnmyg0<+PrDMK!Dl^tH*X`>sXsbhY@EyB6BKPo>{l( zUZ-Xm4311NsATJS9Nt>;m)J6dtL{}Ltst`eW+Ta#jo#YOYoelaZ#Z2|Za)8&F0G@i zp^=)O@;xZUR6cyj{;kHB8VI~TFjnEa@zBm5gnVCW$X9e-i69z|Vp2ow2`2suh1LTn zMqEnfkVe;HAuY>ee>#5++%ev={47nCVmxF*DXY6SQZbFsP(l#1GC&FN^jp-Et)<>p zI55rVe`|)I0+RVQxCNFibu4-&`S5Z07;Q81_fV^hs&WcVsISKB0V?>7v-_8IW~Cu7 zYB54Q@T7n~bsEdjT9*mCsOV_<3RCoA7ptfduCQ&Hkw9wZpxHV`3F$vrsO1|=F*{hx zR-7r#7j@itsG*Vjv1GuRT~_x>VRPjW{&}Z(ajJEw6eZdcw^D(&K`rUAQ$F z?EiVr>DqX$3ucX3i)-VE8!_pz|LHAH>Z8YxJK_yg8_0hPvNEMy#=ra&{Y5W|+?^r4 zyt7xh?W>6u`>OHs^4MrXiUBCu^we?mKVSREOTdO3N$v1q-XEI+PoxD*da5)vf@mPU zQ27Rur>qjiem8zOP+8~YQ}_-0A0M7u0e8pWKk!m#0wg>Zo?U{gjEaAS?ULX!U>Yq4pFNonqAS)QU!FYS@;i6WXmdlJU@9BP^MWRw z(t@s33f)PYk55W9WhaE&-^bs7v$C?nul1f|sFiOc!W$&L@@vCo6K+Z3=4@j}tkZ%V zhH+26=m3)_H(3tiqHbCvp2wBSBQb6_(2r!D7Kv0I@2jaNkIiK{&zyy-!pIsAL`Xj2 z6O{Cm#|P_1Jycl!9cC?1ei%%GQY;h?VxiG#!qj+bf=M7F3%24NkwGU>qJu?hn?=^@ zK#em1X8Ym7wAV&Ls`-*Gae-c+*74y>amcN@D%&MG4zt~h;`_3#oc!ot8y&-934gE@!kV1Ac4kI znWEuqY;0_4*=u)4vt|Hj5~Sw1ndf*KUF!d;wdAxET6oqKaa7m zuj%Jn^drH7`aI2CeG2CeLx=G~Cukj=C*yy#MSMhC7As7hNl~v9Ar4o%sM);7xW#&g zP`k^h|J`lC(%VL^S}GpQ$6Kdfcj)iU;RfNK|1D3zi>~fOQ3Q`4vn9{(^HFPp>_jV* z1tpC?p!ZcEl1$El$cRWTEfs@+fFB?C6I3njr!k|GLCp37^T(?ai_ijM3roH1B!>W^ zR~GFRRt2wR^P9x8zpk@UtS70kE~T0(h4XwIK}u7qoI_Bw7I)QndU;J4`;>yb@Qd@9 zOz=W?;zw=G#4b&}_^4E~N}IO8o>V!d#kp9umI4rQxIsZd51<1@f8u0Aoxh!_=>uSU z?@VaY;S_a^Bsn&*%1v5z)1A7><0?OD6Jw$(Lkb*jN!OY4s?J723av$(PhSVkq;d7$ zlW$KhmqpjWhik5CqCqkL_!(1Is+`k3ZS95$d_~z7P1Hkm^)?+sslBB&@Cvte-c=|u znw(SRWjyM|_d;T5jgwv6Cxf*|%?+#6c>I!VEPmKweV8M)Ui)GjQ=3jev9`vmp{P=CO$8b!CL};ApZ#RJ8_RP%1S-;U&pi%7=~FLaX-S=K zrB@kr%ughLLgi5~VMwnx&bqTppM6tIlRmtzl1V}I+{HX6_1giEUF-RUt(b^cFy_3|j%Y=Y%^#TX1L0C{YN~NxWbficn z3ErMoyps~^{^746rD*md#GF>dGaq6NJ1N(ddGOPO`VKxWR%EJ==rRg$!z+M_2}ginAe;d`W|qgqTL zw)d3s_R%X0;G^TXJBfT#-9Sp-XpwE3q)hDsf%&+&ik*xO!?jkM5%_CxeSn?_u95-lmM5zr{%~-Z-ld z?n%w`OE6x8Bs7w~@4vdR!@(NaLk|ke&%sh1txb&peH_e6Sq^%&oN*R%NR6RJVy3N= zk+_w`YdwE&J+~=DB|_KUtY(C@jw}R#7sZ)K3-a2|Zn)O#(L~L$e!xsOMLV4^>}&Zg zKX-2`7X?isnVot&W0A&_$1Q%;hIgWo$6{fXpzTyxP)Awr0g#zzw# z*wQVnXg`r{gPAsfZdSspz(5h0#Wo&+g=h4ph(YXySBj6|Vm$X8BBP8?jjhCEbB36uxdMmqVo0e!yl^Xy;SSZ2)k5mC z(zK%^xL-8Y_+b0It*CpqHH}VpjA^NlY5;U1OfGR8lV<9Kn0{PW=_}6V9U$kPjB%4j z`%u2LAw5>?MOwpz1`+o`zp9;TbX0MrqVBAfybs{;kFw@wkY|zilyASrHU}j`GVVV3 z;H;asbr)hdsUoTFaT+e=920};Ni4D$wu`s>wxk7T-A(yKKfW<^HP*Vm!*}nluN2w} ztBH+0&zcO3`*FoEtA0DB9qamg%#x;amqZwuwarWlk}@VmxI{>|87Y@T8@5l#fxg5E zNGBR2_Wlx8g{ImDf141*WYcWm@yI#afESEcO@!cAKhWHlLK}6_8)|6S?+w3*dZ%dz ze+ivDK8~pMrA&OF`&G^=lY&RcL~@ada==~Eb8nf2rxJ9cqp8y3dwjC3i&`fM+3$3+CH#GCj@}>;C1aXPrW&^}>{lH12x`lq$RkmUmRARx1#3 z6ZjKdPN|{6(5#4bK9?;WJV~Uq#s)Cz{%j83sEYL@K$LwBi*|v;MsNO z3;`5<6U&5b!LmURSlZ#t#BW$(>;u`rHXQZaI{ROAB~`?8F|4Sw+mzoShI9ei zVEqMRo~|D3ORrlaBr66pIm&NL*nl@7S}!SNT>b=dBj`M8jNjI+GZPz)eNPN2!Blwd z86azHZRJ3BBjZitW1mqj7p>U9Nf4Sw(qbd^6JF&9EdL3#*)q!@&=Se;yyP0#u%Ltv z7+=2Rup%!S=>y-r*w=&m1$x3`m0ZLSF9pnk05;58z}+(0Pmy~+IAM2!j;*{M=SsnNx&BG~KVtH$)m5`P*W=w& zoYX(8Sp;AtfjywK@O4fwHv)@~d7To+1S-gD)Jd@Tc2fb?&Ja2-*wGMPEk-wCrz8<0 zSvpE*+}3<)e;BVutG294RFzQqIurF@MAxmD;JM!i*uw(7IRAJAcCb%hUH|mAEf+iIHUbSn6ez zTZGyYX3uQV<+H-phm5W9AplhiePm>0w5kaTXzc#RoZ8Xugxhq~^L5bi_j;vWTEgoM zm{^a!X-LM`jvTf1Fbq4?+UUY%CjyZ&Mg}d9Y=tp3lH9`Va4Tw9AM7*u@Nb;i`9Zm{ zhe93rpKRi0*AII`$y;?pmh;`B6-S-`p>Hj(GXRN0|Gf^yMLR`zn-21gaGqFS$~iSi z|MEHGul0e#>zE(4?s_TGSXvvHyYM>QI^(*tiMY>OIj3RVpNYCPP5{oT)!B8%C|SncJ3|k`k(HC|cO7{6StFgs~!@?>3!_)e&c=I{CxTEaPQnj`e7GOhoqYR@O zIrJUm_K&bU_%KcVML!(=`LIfdV};tqmeyjI^r<~c!Z}2%+N7Iq-`vJru~mFhlCPPo zD=`xEmUpbex|Q2$vT1kHtECsSW>!%xb4VFF?8Gp2?X5P}Jec!^<*DmFd{i($7wC53 z=x*qH%rtAVeCe1R&7Gt8*!5;1$QDu(=@q8*m1XlG1DC>j&2v!t&lks7`wu?MBHQ+) za%CH8conrJc&6A(6~&T1E4&7oPQT4J#i1J+HaC7q-*U1M|G>(Fk*tn;VYl#KX@)G9 zhIt-9wO2ufUB0=0l%Bpvs*g>5HZ04k@2ha>B0*}@M#{a{8J)+r9dW<=^&X@9G*7F6 z0C==iha$oIa%B(R;0Aymk2z$2QhdMux+CYdNtch2@-#Y&L}3GU9|=Ma3rfAZ%zO~3 z&TeyEDuDh1PCAgrPn^MOZM8)v)8mw<)CIP7wNfC6+<@}&*vo?(Il{+?Ru>EQQ{Mr! zF~c6t1S>%%&diAr)QDtB+@r-?p)cdVT77IsWaZOmBc*{iH=X<7|#rAL{7ypZ=^9ru|AP-4!= zDL`+pudhE?PXv3v2hbL2qeX@VD*#cLoFjV8?tTIZ*5?S}1NXhBvKXbHmT}xKSd37i zpU6Y|=g$o&tf+ROibes>bX*r)A*Ix0W>*OHGx2O2$$M+GE)(q$DgeE^mStNj#X03n zb8;BkR>s%g-*2S^z&@e8yu8(+3Trj98b?;S@|;-J#s%VZ7v|D=n{S^d>@*(x3?EV?0Ni-L76iCj*sJxW#q2C6)lcknhy0p)0RDI zg?%E9>rPX*@-hjSD64Z_ov4_$TFMM`t*Lqsc)A{d)`re)q#izIkX_DKG5vYBlvLCK{mc46VS^mXNke2TW4j*?w=jM|a~^ zBrdM3pXd%uP z21?_#tUzKzfslTBiV~m-3YS<}S$~(B$^ts4rfYemBDA4)B=U;H+IWrA?`X*uzn-Im ztpUJ~mWcHBbal-fZS^kg&&8g!0?=VFaMl*ydEIU5C}OejqY%H>lKlXKWwV*~Y+a;$n`KX!(Y0+i3-U_Q=qbGK%X{GA<;aqI-V-qV1UHNwQXX``s&iO_kf<$_xGIgfG_zIeHf#c`lj;UJdbpfcMgWVQ;Emn5M&4@ z)JKAov)wq?sc*tGkZ3x#%H{i&EM*!V38e21H*b1{p^Fs@^mKH{2DVQ`e?UFyc*>C6 zk+joyoj;N$E{pOiF4EM69cl)iz~KunHi1spUND%OwdLQaBtu4Pt3yv@F4q)~CP|uI z5520+GQ<)UHp{cK|MD09Cy0TqKS8;_d*g%UkpC&kpQajo$Pcnd2%!F2{tOiKZh@U@DE zyCyJ~5%r%teNSQ6&6)mAhnG>+-tHFpVZ|DRsuR4HOO2J>DsFX(PfC{Gud7siO)wXr zx+lj^)h#~S{dMWtEz?n>R2E_Z}#x?9N-phrNJQ5cgWd znaThvxa1%In`_-lKL567-^)*pHeD53T3RZY^yuWyDg#Ka)(*D`@WG*KLHp}jL_kT( z6|*P<@4x-qLV$0(NjMCMi3Yj^>*VC*)+Y}h zRQ9&f@LDYR1KR)DpT1A#X>v|Cy76_x2#cbkBKE!2iM^8i{(_Q*& z4p6~{2a^=Fb+5iAJs9OU}&_MeJ?~yI6|v_Y8zDr?Q{> zVEt6+N$}PCDeESm8{6>Bg#i5-0e)7E>dSb2)xQ}@8gB1%Zmq|=BWdz(s%p$t3rkC} zV}LRA0PD7@;xc|+B#zh(5VVdzzjK27bG4Zo0)vHk>Pd0@F$%K>@%oB?>vWUEihPxg z0MOeo8zrhb1-Ofz9d33kkoc$_w=spR_h+lWlxWzWjV@U^Flq1Z<%%0;kU=x-gKYQ_Ap|G0j^%m6t}HXYB0FzqP#XjJEMI|536U za2rga|4v~}OzKfPP$fKX1%jRuWj9=k^a9`-{c9^LE4!fs8}mdeON?)`oRH8`5oxVe z4O1*x3O=)(Dw=)UfTkuSIiel{|CR2KKh1@6fcUC%5A{6r(oQ*n@h&8~>6`nF~Dqx4z4hc?!L>(^`NxZ&c%)5OLp@%e!O7-`yZ&<080%&RfEGiVMyvu=EFV4Ew6C@+iUi6G zN&K-|WQ!}PgT7NFKlW*IA?-?1JU5iiyZKZ%thT7{3io*6I;=_W<`;>VMhkt#l+`yV zYBKoZDKhEuDrgRL6IEYL4t+?|uB5(g)M00oS9?GF{@HMOJOxgALO+jE&~v&yIC_+q znyG2J9KQhw%yHqd;&o8Xx$Mu!8@LuObe6{hTRXA_$TIn!+)sMv@h?Tr0AWT5Y|>BR zbrpU7dD{U-(n?|T2Y*hCZr9JBb0e+fow#Q|lTVg{(WPv*PczP-zNtUWaQN_$P4$g= zzWQDNePgE&4a})-;gdZd(3d>VeDYVXloNfm^4aF+I3r5)gTI)45Zdv{w&#yeazB%w z@4iIAa8U!F6d0lmZ36=;S@Z5Z$H`NA_+-J`H!D0+mUwPG-tcjzq_TWeZ(P) zzW-T3{8gmRlg{p!k};0wnUJBwS1*PO>!BWG(%HX!b{o#-O)Kx1+L2IROpdkfm2)yv zrFPDTk}gN#4E(eZi04$$-Q*nJYq zvdIil@38x_bntMzy99HKbv)Vlq&U2~dhp;u4$4?A@z<}DVVRyE$W3?ApJi<%G4ony zXXUxL!}H6?fjsyP#*6e^PvHjVjy}9Y7*A$kIf-O-xuq{M=s;vJT|nEK`<~k@*V_*3 znRX_%qa#p2TSM*{7_23wrjFMY7QX1*dma)(4(y_J#y9$;`;I#Rv@|J+INjj2besfM z2vn&*vc5^l8L&U7m+Q> zZ`7<)(#olbDHWSj>nmqWj_4|{t||NWP530jCCVY=*pppz*D5T5{h#0a>(}(&#+|+P z3%Tkry`z62|84VmhX)@RC;DIVM3trW55!U*8tr5TK6@@X$z&z`7XGZS>1=A^9be(= zqOVJ3ew^Wz)wzN`+pinG^f&K=5rxCI4`wXR!rwkTlBNin_?29;x?le0*gSgW+;U26 za9G9UaggjXB;h-zI|r3PO&}Vq%np`>iB1ORqgL-oi8NVJH|rd|vi@49Su2;o`f+P> z^X?O6dGw&~>UeM^pzS|JrkZiS$0Vni>QO^aYHs+r;lvU%;uDH9js2BXRE`zGi!l%L z@^VXiY0nG>SMc+5d0ZOnn%TvZW9)>PGdS4N&o>y%FB`UyUbi-hrMw;~DXy=Uk-4$- zRZIB6;)hvVp}PkN>wqGj?H{?Dc)K$nSUi5kjJ#f2dqMN)XY0t#>N&q+R84m3U#u|v zCmnp+IeN6#Xgs#|NqW3BOZz@%z1A+VOUpt3*OFVKu?kj*+BVk4wts^_tIW0WaSQZgtw265b; zeTc#&qsFrRm_EB+``Y_tBaamg_$)G2F)DJnNi#Y$6zB&Ei(^KTfq=3k3{#?*IZ-^+ zFD|A0d#(#t`h>K*TEgv~k(8-g`+~F^$a0Ylvaqlq>@@t?a-^cZ-Y>cC#8LFWH0=_dO}R1Gyimi_BP8QYjJFLBPH z2y3q0pahYP4}OlfB0I;ufY2;*dwZJ?f-nH0PERDrm&C#q-T9+7Smt@z}O3l!;WYY&-Z1F7rTQ=Y-q3X5}nxtl2_DUL>P zu9q(+Z(o<dg;!4}1f9pxYSg$f5ajO2Zzq2q$GgI8i>qZy;zd! z4(P(3BjBcMc(QYIb3wk~e;52@qWnWbS`w3!g%+M0X=`^)Xo#iR!cXwu>M+{M=Uq&~Hr;X;`L09`SN z9EZu`csR3NFjKSis`C^=KO3P(1Nf-`>q}4U5v9?Ph*!dL%^%La1G_YSWw}PV_iOp)47LG^IoWLv0#S z8BF#V(hnU;(OFD@&MCyL;nTd@pPpUYSwtyom|3{?AuHWnz->+PIIZXum;E18uY z0e58B6n^5ari=*?6l`eSrPkTn>SL8{!ck8eEdIl3Ripsbl4&TRj?xL5r-8DJJICsy z$~RIih5qkIy>OcWG!}MD=i2H`A@TnJ^@FZBEhZpp;lb#}YH6Qc`eLywyWL3`QpHtw%;+M{E2Tf{Av4LsPh|AXZQS}W# zQ%Xkitk&x0&0WI2rK~eueC_i0an-(sAGwRt=_`)P${is-2pA<6EuVh}g{7awBYDcF z-Oor3;;f|5Z8PF1K*9X`;niNn2Y`R-yNx+CibUd^ORAq57R^d(jC3m^(sd5C$ z^45dYW0~-Og}pGqrlv7hG@SPv#3y&C_<_m9KQ48`TvwcNNs5a&-hl63YEzVpg^o0k z26ZHzXkI+g25l6gfQfzoju(Q#!m7JLz3c-GFfJW-fS2`%$>&9v$4;dv*6305D&z+yH6_|JdsUiENq&l<)pm%9y|$ zZYsUCe4!}<94BzB;{__CJnS0Z#8)}n?+|_@12zvUgjK?#|6`(0>n4PFpD4V}rm^Qn zqK;WFt`OVfIFkUeG*=+a`@4*yQDdc!x;p+sG`JN1IWzX!e;D9iTsc(>baieF1t*#P4UZn@3Vd9Db#x5+CkwPOfLmoP>B&tV!npm|Md}&$1l?yo#3W5 z3M#N`*>*nJMU3rDC}i0*OR%6uo{ky2YG`+7U9DC4aH+1YPB;`j5tZm41@ytj}J*edj4lTIIA3)KFqH`%3O% zm?goRT&MTuP-g&1*qL>KbuGk6@xOr;8CfNnuurF?+dB^LP3RjOVwl8sl=Oqc(;7Nww|txzj%jiA$8(!jSG8)w`tzQEwaoPOs`pg|XEYoyS! zxKits6ksv;V0|w{!0rZadmLv*(Tuzk#tR$6J|*ZQtT{3R1*Ohjq|b$QHj-|3MV`{` zd~#8Ib`aay-{ILb0x&=AB738|K$H5IyGmR zMfmRhXJxuLfGPrjjvU#%>k*h%Cpb6l_rPtBJ#prxOH$_*)L9<^=MY!%a3@H^a}Pt8 zKg`IGrVsmHT;*Na#hf#|n#yZblbrs2xBw_S^V$2Xr&F5!dl$^W|K$ zm(AOWxhJ9Yq|n-wa_Vm&G%z>jccdS%t0|@>^REFjRvqZ{1*Q+hIZNHjE2>>Z_7JU} z!d(Cd-5Ey4^3vwdSj`h_#PO$c29Lgk09Amxi(h_`)oq-Tlv$B`w^uwzzgZttr^;8a0&Td~v-+@jBi?18n1bor_hZAeZy-6L* zf$yeO`huhu%2|E7s%Cq7AeSciOO91L-!7v&$1nNx~^Pu zyNbM+3%kCPTt#|@F1x(8O^f;yz2Y3N2#Z)(ZgI7FEw0$m+Vu1fw z7L&KZi&vn9-o1Fy3ZC}BTqpvng5bzDUA(0l!_Wds+@lV0!aV915V4k1S!ExDhpc? z_y*qFpIf-Ze+Cgcf%_$kb_zS?sM6v%6Tz$x0O86RqUt2>5Za8C#W!CY19)}Bbt<58 znIWQ)rd=`Ms9LV@@09=RGipPG{P9%N60`J7m~+Yh^kwP~^uFXXLdX@Fv!_Sl0&Iwx zD;IscaAvUPFqJSBB%ByhfMTF_-`k64KaC87ckiqmjJDy-AP9=L6tNW1VXv|I;M4>d zO_ft6I6ksUcSK{tm_AG7jORKvpbqtyda6jLFeloi>QF3h%6*ScJLZ(i{#U4el@~~s zz1{cfz8;St<#8*T2+8}d-r!M>*coIFAd2T7z64w-&KcG=INsf*Wgx4>`2t!>L7pXw zvalAO_D27Xo~kNrR}RgO4{k*5PKzyWnZ67zt8dF_UT~5zHe(D1An-GL`{(3V~Op1VZ%cycN@2IR(AP0JgNTFgmV?& z3m;sZA)YW~Az+!&$}ixnwBJJ~9pJ_kZqQ4&BniBcXCH%^C?2+P!#rLjT5GMi`XVa+ z^hp7>v=znE9#1a4WEi%-Yp=t12y?!IKz|&M17eX-<~DB}(AWj>Wh|DvTgeSUO^6@+)`HLxI~l zD}Y>Mu}Mb-^AOoV$iUwD7^(GwQc5!t9D=;p-ghlNR%Dxk_}=+{C^+I-K7x5)$(8Q$ z9ZRf0PO&Nhg|HvBg3xG1bOYk&^YIClpbFpoeZTyip}`y{mV=# zHt@1I_I!{P5X&AiDwNs$PqBufhc2#^Vg16oLLcuwtnK<_^yG2lD;hB{WWC}g7;Sg; zTi7EgHKd}E6pf`M*n$LuBqXW|tQKz>ud6EZe~@Rq_}A5GpIw0BK0^Sy@-uOI^5_gz z49Z6q4UUxw$_Dn~V($INI`pjmUp?Xo?hqyktEeXxQHn0c41Yeg&yAske?c0or%v%I zvxDsfC%l$pzW|j%<4sMxTo~RcqFm5{OM=lrvjhcCv%9N>T|&I9$|=K!ELA5SDSq>? zxv(r_0UlJGVa%psPJWDB9 zk@HpNLcE{OhfVNv;>1|%Q8u_vP3#7xb~gz-2Om~#lRnJ?FX^aa=|r+9l%f)vp~^(! zPg<5(wR+MGL>8Sg?OENs|Isdm#WC#*xyPb>q|sTBHHz3q5_)EX@3Q>tQ7zUJSf#*K zOb>FPxSrJ7Q+lqR!{p3a-@W(D1xIv#{WzYhg`A#HcjsAt5E~shQYXhHcDyrcu?yG( z%H^+3Mp>s~KZkB#QfBOnuh0VV_A)uC3xCdRd+iN%z0(8cQDwNvjQ>ViGF{GCH-Zl~ z^SlEp3I~paAdMNK-RT)rpxw(GJDr*T4<~O6sg3P%xZToke_fD9@LG@L=U`IqP1ciy zs##KoS&*|i*0S^iKt)7+q_fGymTCp@rm`AYGwqIPEPP3~Q0rEgglQECkrLOq4a z^N#eB1fr~+zsE~mRdCMhj1=PwY6}993hsNR?<+n_Z?L#_M{`3cdDcMUzu)G&x6gT) z5-Wr>m<)b}VTaU{L@7&fr(NJ5v;lfCCHiZKy;dVfwF~=vHy@s6a+Y%S&;n*x>W~Y0 z#|GHdNCvQjG-mVEcR}iBK(ItuKP)=dut~%i=;_;oDS2cJTvR(Pye4SG#+TatlDlV~ zS77Sc*e!Y+*7f9WZIC5LT<2ntJ20W#zJa!*V~L_iwj<;5!CoEycaSGE>GQzjaaG1bVJQ~jA^IdIw# zVoQuopD<+iWCFA2S5h3XHkTzy>s%fl#pl-^^JbA%6x+F(NQd-O5vk=bj@8rf}E+gI62Yvw5)k#%6ZYk zX)CzZYHPvFE~a78jcLj1Xg9?!<_ZI3Dk7pza1|QFu&-FDYFI!crx^1Mhr_Y#Y%}dx zVjuop-U@TDXNeu8B*a4E4s|&A|2D@ZSOdW_d^j#ZM^%-Zd9R>ikHWQwnD7PGwIBOa zAcJ9&-dhNjbeyjYlarN2cRL0I?C1#KxtVhW<#ILGDB#e!Farn%YVDlL`lR1DY+AD; zN3+9R+wh3FD*unkc>4zX&;R;$@|vp{ljbe+)9+`$7a$))`3tHqcnLW!%cpAiD3n24 z@}6GNNOXDRoMh5}{SGgFx2{m(#Uls8j_-Z@Qs!v<;RpY6GC32lYNL`JYuy>bHm zzvMHv#mu~X&j{mk_3wG?ld%r|9S4FfIG6#4*L=#PPOpWB5(>sBv`H{)N;3LG#JKh& zcI`EB#h9KeMdpfnA(nC8cFiYhQWG3Qq`jqKmeA)qs^qg=kjoAR+FnTO`0Wq(`u*ed zKMZ1iTrT+{D|NTuKp^9>x76x(FhR+O>%=(BOCZC<`*PZye(YzvQLdO)6CaMy=Fm`A z)(u4d{2UEdIF1cs@bRqFu{HJu;bEKyuPBmN`=7N*!jp)IZ_FO98bN3F>vLN)I|teR z=KQ+GBlQ*n;T%8xe*xZOJp=~kLvsip#>M!IKAwHbbHzdD_r@2k@ht>8xA8~?arCWt zWPkaXwm!bEjthDWZ?N3v1__ zZRL|@^|R{V)$ANLV&3poEIZNBme(zA5Xu+%_=SJn8vC4ocJ=d|gJ`F9X+W%6PI-&k z&wari-jjz5zTTdX5Pv!3;WSeghRCX1y&zh z*spqC-`P1fEuLyQ(G8B6pC;&mH^Nfd@?pBu6yKq-8XW_F$v=@}I?f5N?j7dl25-^U z%EkF6Z=WZe$d%2D7OD5I#xaU1G)3_}WnQNugnQy^b}HAia-ne&0{*W^MG^ZiG;mY_ zg8`(1a+(%)=H3Ki;oIGU+edLBm;c_@4rISzTqE+$daJdyNN1#1hHzDz=E6C{H2W4c zPPFK!k**!<8)U^svgo&I?_*v{AH`lRVQtLEqw1ih+#?kMuTU-?W`n$Ec)q8Wsd#G! z-1`WO0D};Ubtl@tGwb_Mn*CH9Y+%(A>knqn=>5I?$W{gghW&>cI8nY~G3{pLo>m7; zaKRXstkn_ymn2Cc1PSG9VD){jaU{0nZk|AXg18}dVLwDeIepAHe$`s1{{WlDywM!D znd%l=$Q9aHK`+I%&lERQ%D%*H?PT`iB!77caMgwAWg&E^IpHl97f~-XLNNPqKvsq* zMCi4up+`d92n99X$8~I>W(Dwy6Or-I_~opKLK1@l<^EmmF)J*;K%JEYB@q&Ht%#qH z_Ln???j-QODp8!Kn-)4=2JKQb=Y*Q*WHerJa)`I#`{O#&}R1?Y9z&PW?`hN@VrJ^SZ! zM}}wKN$%Vhxhyzzcyq^E@90@f5o)=0d|$WxL;{PTXKHzQTHShO8yu4Pv0K}w2bxy+FGxt>cFUIJF-lTp!sz$pHtMt%Nxhp;E! zT)Y}rwC;3;%mg9TR<;%$(~LYN6;w6F+Al1*=yW@^9GgeA-o~qhiAKdVjPEZW96Ed= zO9Q=jAxFfqNu0FlMB(y+mXLWJHt{LSjuI!( z(Bnbtu2g9VKiS2aV&$*}we!hTQfK#Du^7>n=@|QY-?h&Zjkkl8AkQg`A(;GUB&Y#} zrS897>X0YiIG3XX$L8Zb>cixOAw5!ZbnESA7j2_2s$zzU~QZG)s{SYcFga^r;b#4m?^(&hyEPU0YIzh--fme8tg z)U~Q5v(#=}=dL^vkLwS3@K^GFRPfo`xch(PSVs%~+z^jkH6y%|Szw1O4SF7B zG#&R=?CeUO_hPaU>na<}ky!{1v;MFhWVF&;{AqdV=Z@#G{nHhS^!uBgc;g@27Y84a zp0}zE?D_Z{Cx5rDmJB@RwOn4c?%A<6$*!sVIF&DK7(&@Krx%!za3b(FrSaqa4>#y9 zKCWK7NBFw!V;pC$iTE%H*Uyjubw0qseYePA_Vz+(p zmM0EJ!RGbkz?wcXVo--X94N|*3NlGHI?;iJR}GzAQKfu zM39icC{jZcX(Is=s-hqrREj7iC_R*995ogM0z*-daSS3=dK4)~2SFqZ5;_P(5Re{v zXyM&?=e=v)`{91SAMRRN>%d_pC+D#De?NQg=lRJs^MYE{AKxZF)tD#I9u-KYx`*5% z-?DssdY^9X4{c_{t?*Tmhh9~Eig>fLX%BZiZeVy}RdKBi!+ZL7GMCqg*F-{JBCcx8 zGX(0+h0NHy8!@^gHs|p-MK%w9-jZ;cp3QE&5Vakrd272TYV#6lJ3A%P1N-j>lvdCm zczIZ`IKeAwwy=YI>FE%@{|MK`|9RgIYUBiA4PU*Bdqz!?8;H|a^xI#ehN^SB*=x)W zazQ-{+YnGQXStyf{b7pha7oK`ZaCd+B*=HO$7(C@NN3PyoH=U=(j@pcyezOc(J)>V zC4e$CEPus-=vJ4Mdg8fF+M%@|3hyT7ba7*V~oJ>zIQ>+!M8 zp<~u#eB*V&>O8Zjo@A)4;OU3cw0)7KayDFqs7@GJ&|-hb`z+#E611=fROM84^M*3! zKsywU8i}*W&-z6p_@cGfoHc61n>}WA-tD7!R`Irxg~$RT2)|)ia+LEc{TGN%jZjV_ zTjCnd60#9ymQ#BQ12+aO*Njg1Id_la*t>h4Wf`8h$ zq&X?Ho7;3wc3~br#`R77su-t*vY}F6BPQS;tp=YTQMoR-uh5y~TUwU&uERDSYdJ!r zs^`OJvr8*0c1D~Z7}fG#=WeXN&f{9vbnr~Wn>+i>XzIN5@3H;yXl%}^e8xH7a~T_J zNrv;!E=0=;7Nd{A2JU!;bqiBsO&Nnejl&~_v6W?^Bizko{j%_j8CR>g7u*A=JJaa6 zzS&*UW{cN`NrWinX*phZ|IQDMrcS%9qRP0UrukJ>ZJv0dXv*x!fC>gRqKbARVhO%* zhIxaB<>v%Ms(Hg_>Cw%2dM#e1Vg>DXNA>};=uhYIe-HWWhfp?Zq^EC#W(L3^s;11lh!DRA7ME#G0A}s-alhnam z@>d8i{b6e2y6RKJKL7Gl1l#1Tu8InJv>`DJr|-o3)X(NV>enBo_aH<@0h%yz#>giM-G_ldU?e=+wa8=hYMoytAi zUYhO{yLIVKhJ@eglAyQ8Xm@Fa)V>6-@3GyM$c1R<`C4P{B({9x+klFXLpuIYP1HG7 z0L?6AMg}osQg+sNhq+o$38aOkY95djh*op^Kzb+rmri-uV!&anQYJlyl83%(#4|v- zCxysxJaPJ|d25lLCO9T7WS?4nUXuw+(zBlW<`1&$duBfbLUx5jWc%)DXI3trmbj1; ziasVPnm|>}HEn{Op*IOMvJ;0wZ-5di6m;XQf zUwZ_V*6jinY*ka?#QvfmF!1g44w&NF)i2s9QS$!t`*4^#n5DXc@Xu-AwfcQty`=rXgScnJNn+jh6v*9E?`^8eP z=KU&fzwcLh!-j+O_HGCmDAP5(_X79Z<%z6t72UH~@TnIWZpAf=7AgR!G~R&l1nd@9 zkdx<|n~!$I@9uu>Ar4Kyu6JKKjSfxf)EX43JQtL>-wk8G-SCKh488KI{>8V#=T9Z_!`X-^;(Zvx95VkB;i>BLfSYhJUY`l$4ZqUdNX&#=sb+yV7}Ka;WwU z4B%Ge(p+!uDR3zIGj4}h1AN{9P4znfKvjf&mZ$hZ$q)?8d2`Jh4bY+xmrNUiTsFV8GMU;gxXvjD3EH|boCD(hkzhd2u9LyjQbd_EJNtxx-y4;k3S9(kzh(@euW6+Puv=CwymOe`~UJfqe7;UVSz z@8wa;KcDIRQ%V&<%6WabYLxp7y~p(QHu(-x{cXrSdRry2?vKTp!guf<(+0Nyu}&t_ z|5j+eKyI>v^%cOl;}Z)2lY{~wa72L3(TLdy;Uk_fwlOHqPio?lgO5jdc1tVgU7CDM zb=*56m$&ZpE#&wOBlbS_=$N4zN*hM9n4-ya-0|81TV{}A`3h#`q|Wg!CbRHGXnveO zXkh8u0a74gZ;C`?eEe( zScBnmw1H}UJhh1xbDO*-kRY&4Nkd(UsSeU%vn%SFqS7;*RI2*H)&Yp3JZ?@NKH{#< zZ&De9H^|eJ7}OOrt!za2LV;gr3beAOsw~YVwf!ae z7NA2}i80Bm(G^a(%$n1|AlDOm$i}dLt_?k^lD{HZQq$#pYy!!ybhrWjB+U|P`{aF*T#oV##O`mFpUMCD#>4^9UcPXTYQ4jj}|u*v)c{J5V^)j04F^66@q z;lN$%3otycAUM*BeV+ORoWlAr$-fF`T2uqkc|t=7)X>Kl*BEY~KQ;E2UVVCr5zq{B zZG6h1nbLp*O@Y6>*8P6Ua2+P8b^V}f4F?W@j75&VldPN?&Igf4Qd-xOV_MQwb1Q_e z0lT7c*>M-2f#R>emQs$3u}5k^fCsiwfHU4-`L#Dkq{FvO#U*H@w=|kJ%b4t`B`tnC?EZ;PNbUs? zs$TCjw}^$0hmWXV5gctw5N7{&z{V4}Yw>zwy|=x@QoNxsC=E3dN@zmJ$~oN|i-Arc zOD$L*p*DcVv4KYYvf|7dX06o;8%WMNHKKskrs$_qag>uh-Sp=#hsN~|hZm}KKt*`Gb&$rbs zjR(&xGzDFp7>ZnyTrAHn4gC0EJkN~rj&pV>VpPnh?U{9gi~&s2C|3XBVO5_`iE=r) zeaa|9f#Z`zPf?--F%HMHY%vmz7J8#+;3KUjhw9FG_@M|sj<3d|hEhW$IXKJv=2OQ# zy*fSw(EJ2z^ZO6qUNk+K?x!!mMw*s63$F>xj7rpFrd?_TL7j z>|WmH_p576$Ak__Ub*kmd-1sRyLY|B7$7N0oS5m0p8l+)qZf!F0?3x8q6{oI^X6Va zGC2y8gJF|?u}>mvVO$NOJ+9CuC|6oA`lkr&h51IRqwr72AUIIa(Nb^jcs+lME#M+$ zm7Rja0;)G=-y4UsSs-sFKwSc@d>_m|tj9RXzTm>MC&2_vlYv(AHcF z%M|!3sxK&=p0{D-{kZl5khwg#{t@KU&b$v6H2T#`?7P%A4gBec(Ndf6r#DMhS9pRmOI06^i5jY$c@nVMo_V1nYf?aN;8YAXQpS!6=`C zz5GEC^v~T87@AtTC;Kavfb~~RXDC9R&q!l@y(yyjECL1Uv42b6A@~c-F17u==UL{? zr+u_Ie^IZ!eV8MGT<|3%5H=7*`I5tgpih&~0ca16m(-|rk)_ySl8dhv=|xIfYecNh zw%+I8k@6JJFU>+GX8An1ETLQ5355M@^%n&B*SjZubN6jw@xY-qCbq3)ICfLc@23(K z6mO`)mQ{yrPp>l+jW~^R_j?k5ktG9_-P~ig@motqmx3&9^*+@XJHLZ57_MI4E{2Hg zaAYa^LJ+z{6Xl)~VvIXwl^wQ@;Mo3Q)C_e>bTwQCUHiOVz+yW^&;RZP!V5B3*)Ox| zOCU57Q*H&~w(<~dJE3fbwe34l$t0d%7z)d~>>X896x1S zR@Ji0v+$t!NcxXMqLjr*xT&o zCC~sY=t|vBjpBG_p?n~tq+xUf5Z@Xol*4QHV*pF3M0zkIBrRt3sYX_mY3m`5CRhmh ztj68wDE=42&N-GEX1nqi0o0kuNgVjc@00mg3 z%8^38CR|U^l$I3wdJNf8W}nY}WMuIKmFJ7A*_A0^waZWl&+^Wgazn4cZ3KKSB1a_I zQ&h+7XE%!I1>|JFM$m$oA;TbRBa!U~T6AD&cC_YTSR|Vw>|8|ZJa4Wgj(4lL)~>J# zScdIGYVJa-79Ohp6TV+XA0>yJ0o@|4LWxsLjd)d2Mt=_(<#WFdL1nbE9KX|$k^G+y zFUxeWu7U6Lx=7yPFr@>OzzYmEiiKvWzI$%H9&j|3NZ{R;L{i-8IJ4WMsHk1e1BNwE|^kK_t z8Lk9Jg&pB(cSBYZDL3g0#>U`a=hZj#QS|m9u3U3(A_dKGofC+ao7_etti|DfBX~kH zm`NdKa>*THKm!Te`isjD9Z82RV-Inb_5$xYUM`~Fk>Y6CIamDOlK?xkk3Q= zjIZMKvs1<8B1gtRfzeeai8rUGG*Tn9myT?jHeicB@>R+C|EA~^b?USEvjpax7PJBx zBG0#a+OnElvoVoVIV^pte*~RB=(!%5(G|t6ZRSst6Rt-Yf^T0Xl;y)Tf6NoD7|ZzD zL>_bb`4A9A)uYc6x+`_Hs)1UojF+wC?~J;3fn||3UB2Wx3)UX~nSTE7hwV5!Rm|Ai TKV)hEA{<6AwZRpi_5Af;jC>z* 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 deleted file mode 100644 index b8a3b237124d077b6af7aebf5c169fc25dcb9c2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5373 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 - - - - - - binomial_heap_tag Interface - - - - -
-

binomial_heap_tag Interface

- -

Binomial-heap data structure tag.

- -

Defined in: tag_and_trait.hpp

- -

Base Classes

- - - - - - - - - - - - - -
ClassDerivation Type
-
-priority_queue_tag
-
-
-

public

-
-
- - 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 deleted file mode 100644 index a6b512b0d16..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_max_collision_check_resize_trigger.html +++ /dev/null @@ -1,532 +0,0 @@ - - - - - - - cc_hash_max_collision_check_resize_trigger - Interface - - - - -
-

cc_hash_max_collision_check_resize_trigger - Interface

- -

A resize trigger policy based on collision checks. It keeps - the simulated load factor lower than some given load - factor.

- -

Defined in: hash_policy.hpp

- -

Template Parameters

- - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterDescriptionDefault Value
-
-bool External_Load_Access 
-
-
-

Specifies whether the load factor can be accessed - externally. The two options have different trade-offs in - terms of flexibility, genericity, and encapsulation.

-
false
-
-typename Size_Type 
-
-
-

Size type.

-
size_t
- -

Public Types and - Constants

- -

General Definitions

- - - - - - - - - - - - - - - - - - - - - - - - - -
TypeDefinitionDescription
-
-size_type
-
-
-
-Size_Type
-
-
-

Size type.

-
-
-external_load_access
-
-
-
-External_Load_Access
-
-
-

Indicates whether loads can be accessed externally

-
- -

Public Methods

- -

Constructors, Destructor, and - Related

- - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-  cc_hash_max_collision_check_resize_trigger
-  (float load = 0.5)
-
-
-

Default constructor, or constructor taking - load, a load factor - which it will attempt to maintain.

-
-
-void
-  swap
-  (cc_hash_max_collision_check_resize_trigger &other)
-
-
-

Swaps content.

-
- -

Load Access Methods

- -

These methods are only available if the external access - parameter is set.

- - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-inline float
-  get_load
-  () const
-
-
-

Returns the current load.

- -

Calling this method will not compile when External_Load_Access - == false.

-
-
-void 
-  set_load
-  (float load)
-
-
-

Sets the load; does - not resize the container.

- -

It is the responsibility of the user to pass an - appropriate load to this - function. Calling this method will not compile when - External_Load_Access - == false.

-
- -

Protected Methods

- -

Insert Search - Notifications.

- -

Notifications called during an insert operation.

- - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-inline void
-  notify_insert_search_start
-  ()
-
-
-

Notifies a search started.

-
-
-inline void
-  notify_insert_search_collision
-  ()
-
-
-

Notifies a search encountered a collision.

-
-
-inline void
-  notify_insert_search_end
-  ()
-
-
-

Notifies a search ended.

-
- -

Find Search - Notifications.

- -

Notifications called during a find operation.

- - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-inline void
-  notify_find_search_start
-  ()
-
-
-

Notifies a search started.

-
-
-inline void
-  notify_find_search_collision
-  ()
-
-
-

Notifies a search encountered a collision.

-
-
-inline void
-  notify_find_search_end
-  ()
-
-
-

Notifies a search ended.

-
- -

Erase Search - Notifications.

- -

Notifications called during an insert operation.

- - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-inline void
-  notify_erase_search_start
-  ()
-
-
-

Notifies a search started.

-
-
-inline void
-  notify_erase_search_collision
-  ()
-
-
-

Notifies a search encountered a collision.

-
-
-inline void
-  notify_erase_search_end
-  ()
-
-
-

Notifies a search ended.

-
- -

Content Change - Notifications

- -

Notifications called when the content of the table changes - in a way that can affect the resize policy.

- - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-inline void
-  notify_inserted
-  (size_type num_entries)
-
-
-

Notifies an element was inserted.

-
-
-inline void
-  notify_erased
-  (size_type num_entries)
-
-
-

Notifies an element was erased.

-
-
-void 
-  notify_cleared
-  ()
-
-
-

Notifies the table was cleared.

-
- -

Size Change - Notifications

- -

Notifications called when the table changes size.

- - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-void
-  notify_resized
-  (size_type new_size)
-
-
-

Notifies the table was resized as a result of this - object's signifying that a resize is needed.

-
-
-void
-  notify_externally_resized
-  (size_type new_size)
-
-
-

Notifies the table was resized externally.

-
- -

Queries

- -

Called to query whether/how to resize.

- - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-inline bool 
-  is_resize_needed
-  () const
-
-
-

Queries whether a resize is needed.

-
-
-inline bool
-  is_grow_needed
-  (size_type size, size_type num_entries) const
-
-
-

Queries whether a grow is needed.

- -

This method is called only if this object indicated is - needed.

-
-
- - 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 deleted file mode 100644 index 85b9eca4ff621bae92b74d47a17dfff387c69101..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7074 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 CIvGI# 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 deleted file mode 100644 index d1234aa11d8fc2886d6b0b36dabca8282272d79c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7235 zcmcgxc{tSnx1R_hOH!1qg+zvikR_6&k$sP`4-zH&NE1aNL^8%MTlQVVm`d`Ev5tM; z_uVko`P|QR@AJFQbDw*k=iYzr=P_o^`<(MSuh%)B&wQ2%)6>ypVYh0JRQvL&9KK7>ode0o1afg+#)TSQwH3LjqJ5pc9LPVX-hQ0fq&r zq`+7L5=Own2m}}b06BuGFaQYyurPoC1Hh^vYY+@14YCAjfj+P>hz&x6SYR?h6-2ec z4U0q)kVt^44=f8>SS%7tKw<%^T#yCmBw&#Q0+IlL>OoRqEE2#X0Rj>L<$?VGX@c2c zJ3##)2~Z)(8UzDLgDk;NkOx>8#0H^3EP&cMsvESyjex}h)JB5(z_Or4AYcgq*jG?4 z$O3d?0Rk2P`v`U#Yyij$3Z$ zASE=Y6P)Q>swe)hZyB!;C;d+3MPiMwWtT&AgAfq91v)*yuLvET4D*QGxo;aM6@wFa zWCNe8akqye_&CZguXLE?Z_42=F)p5EQdEUX^le!q@Yz zFOIN#ATwZ|V4a$qcGjehzpJ&9O!!DtkEm+po3plJ!2>$2yK35V8J9Ov&fMf_BE@>& zmc3ZtWy;t2{1~=XMt=H@89v58PyL%xUvF)b^_=-7F8L>swcZ?fuN!%zj>$Ql!6jDw!Yj}Z#-aO_3_Ejxc=b5L1&Dg8J@fPX|8o- zn`@Oe-mBuc;?ubHGUK+%wPnI_k1ZpoI)C@9bV<8-LxZ!`sj@)Iu^^tk`?=kL-nsmx zuBzwe()Wz>Q5)O%oGb+8%5t__8l^gQ+V{^PI@++%g5!W^{R5?t5|h(MKcZr`*dyq2 zr^ZQg>#IT%OWt-lTPFC(mOq{!?~Q78tWxTNXU*gYMQw4raO`Zk9xZ;x z1uu4R@Kim|=CUGT7MoNl-7kqWJJ$1@#*E7(8zXCLBY3x;!(cb?1Rvl!R7B~0Yvf-j zgV@~3>)R_oJuNWo!!r`!LxN{{gjk82qPjHDgMJRB=TSrRbsuHNje!$@-d5&Vn$#kYPGcdowwQ6*87ub!`DaQ#2y<}^ zN?!xr_M+eEIoFRqu>ze?TkhQPOV*MyMe06wnZ1!al|=lPoyrHUX^YT^==vT(D?aha zM@N~j^4aUMSL;6>kJ=pU`DMAz=9U$NcWH11O*PzwYPe)ys$%S;B~5ibPT}ZhC%|C2w!P+gfy416u2md)ivqjBUNI^^cg0>t>H7SE`LByJu#OuH>o4 z!Om87A)jRL@K51O0LO!M2*AbXx(|gW)8+!LrR{e|jxXXlJDFcs-9k<7pa*v!w3p0W zMg;-zI|p3_O}hJdiRPz_6sXvuuzjgz;357CeurxVt)+$kr$Nw68C>wA82o%_n;Ev zYF%?xg?5x5UR+&j8YoaYiXr{@lG#J+E6}*=GHhN&WOZ2{Y;ZAyHp`vhO8b|`^GSKP z$lbSxkn2kt0C*!X?+S2F89})_5t!n_W!$taB<-bIE#kz$*)P zb;8#Vhp^PlgX4aU29few$`XbfjuUe!2(ZxknWtNWxt za1f@a-ONp%R|k3DEk%($##I+KIGo=H-ZTjeW<=!)b(Ad&XWUk5A=^UJ3zO*E zh!5*>6)R_OG65_6wG8ztuTV=;o)<;0!qWwQ29(Rw&|xtjRq1e-#vR^q%^bEJNj&O^ zUmm!fnJ_yVYWNmgA+P37Ll-mlQP_1`KV6`JyFad{_4XfB$Z#(D!W5mq=(|5*PoMpw zT=>OatA;%UO)UgZ^znsMKrY_pbT7&^2_5;f!tqH}oHJQrYW)>qs*J z+n&7J(d?}n$>}z;jECbzSDA(N*k_f^HQiDdgqwzQZE-ae11FSVGxOFl5-Iws#bZgr z%b`30(IfXmUM&xmLC+*qFDkA9)f!U)_Y48`dV%$mlRDB-rK*kcIr4wvvJ~jdItgJsSHd^^PJhmh{W`rtuhavj86ECB208-J1JHep?BwbjJtG# zh-Z2_PfU!E*exRby2`Yar%%S;qu0o_R#K{|SOBT}Fb%-KI#F!RU*aXI3E5x4#_vvgS2?45lUPzki|fI}Hl>S`@Gwyr*3 z8vSc$%MrlDksY!Z=qOOps_7H~#4->I?l+vcg>t;7(v4RDTuOOT*<6eIeNpdou!+_} z>7GBbZXu%f2juJY7KE{VtDx)=8i2f69R~8*_RY!cC7eWSp$8qIHzvY`dlz78J{;gH} z-u%*W>($Z8xYIA5UJo209~?-1PD;FA`+lcO>3EQ2K4zKH3wyQeu_HAe8DNpJNhXuU zaHo-{Ar->|m(q7Y*XH-e7b!;Ox6rYUJkc|6`#ncPGtGohgQ!oPuvbERQsWrX=eVgC zrr8q7merFEO2jHN)L>f4Ky#vh{IX!6(uUNy9BGRyw#B2=*?h0|Nn;m6p6A9uv%qk$ z3SYwdZXTDtolj1jM(!W0^ujCEw$6c-(5R?+x}xczxBItxTMzI=ouFIS zc(IA&kMbX*3v5drj)n^lp)cWvJow2!>a?V6%zeXLxB$j%tke5S*GGipt~5t`hZplk zv?FEoB=6$vP{pc*25Z?u)#jvOQ>v!zw=TGW;V%n`MmIs2__RynSJ#}gIQEM_T&2d& zYY(^wcxnrgA*HE8on$0R+HcygFW{z|{?C1c)iSJL0Q%H%Yt z>saITz4*d{aQo~0mjmsn#l}sCy}6NCn>%c&DvcXBg5OKOE0gAL7$|5oEtZVTN>e>ZDXAW!$oLu2M2JnKA>Vu4r-B20! za~kvR%Hi^ki}vy*l^-k~)YvzKliRFg?eaE`n8^DyZ}Sj-83=>Z%H0vtxIz_c=g6;% z!frUfWd&Z~4gDN*(V6^6OW9v#@R(9opF=v|hxrkgR~p&iWEPI0PS(n2N3tiUmyzKe zA4bwK0nT#`=N<0Meq-tH|IS~KYa2;>1&9qoDE&xo8pjo3W=yhWZqJGMmKHo&8z%8jViZZ2$0y3-gnCZYtR5uQvd$fj%wD?pCG51*k=6A6 zE(xyMZ}5Q=CvlkN3)JjfLJ!(u(z<4#Wg)v_aAoVYoCK|H&~1{OFoU+l%Pm@ zw9%AtHk>9I#BrtS^*Jw<#y4~)O&nV!!M0~1BP6G zB>C9%IjWAVU^k2#!qzAxoST0*eUJf1C zn>sC2yA^)LWF+6fD1z5?%;@WgM&%+9<{ z__f?mf6$ArQT5-&Ye!0225;br(%T;g(N~ z1uNT2K~i@3DAgfZ1tG=<^SpPMl$a;#zB{xouPQyA{2FQg?VV0;H|hu@VuKTik+1I6 z;Cd>}e~$@=!p_NZ%1rDH(; zkK@cooVYl3*_~cu9>Tpz1zFXu!{hozWhb^$6J4jelSmjN7Z?SzZnxBGT6^Bz@ZEc` zez@}mBXj+ovS9CCk&t67FqsNmG>ttV-3e2;8GCe(id{{IdE18{Xo~>hyS)VZ0;R$Srg^Z8! z-PE_ELSG)-leJl7OWrin67Kl+MCN^_r}X{2h|LAjoa^!Vn?bUvj}5~5t0kV19XjYA zm(>)r@Tz$`j`T_|v8}PTXZq!fy?c(|qhDkA8mf$DY=hHwG&60}Iw|$O**fp0zR=X< z-ua4uPU7g%$#{hPbROcI$-9xmQAB8GM3W!F^F`f9DebM}Sg zL(SQ(2e+9mTuud`<;GPCF{VQo*x~k;?Y^F~pFUi&aEZP*4_z?3n0+1h1^37~+jwOk zzPj)J1NZ0|a~(QQdA#Z6Koz zU-CnGqe>iu2muJLKCOD!S8aLVu#Rqye5K1g{PBAoKpQ zdP?O={z0ZwYwJud7fsyQ^exZ}B>r>3D<2~|5bD>U zufIip;wpGcIZyk`t!HQpeIsa}WwlYU(aQeXw<^U63h6h#e7p6)bC7f8c+}-MAo%uN zIq-`tEi}zWF}u*8)|xXR={FnY7FItbTo|R9xH*>>bo`MTZ;2~B6y@)0t-a>%`g_=^ z&h#67X>+Crmfq>?ZBxW*Okb3oMcszVqdxbRa-4f*q|ioi;c0(ax=p#XguMmr@b-sH zOTzZ|+!4L{+aUpsjf3VF=0#4xfJ-goX_B#~-n-IMKLpCiycW!KBBJ<0%RoP|a-C#a za&GI4F>mU4Mrx8nua=^#`#in~G&P6b*FpR1PM^1`=+S^1cNh>WTyl4G(9Rjre%;5 zB`j#eF%+fldFsX6gxU^z_sM0)!i5fYVzBgvjl01)v{HU;YE)C>A0q+P-zn?#YqH;h z&Q}|X>?@K#F7KWGC>J175}h75SK3d^C~jiOs%x%)U!%ORS4S)j2@RV)Cl>Y0efw4Q zsVdtqrh1EBGGo#!J2uUj17RWXA|YWtcPffmhp z^o;v=zaTF%tL8&%p-tae2D^G>VPImjbBebxuOD|Gb5;Ne+IrBgW zZ}#fiN(s|5R@phif2xw{l7ke{9it@lmxHC!ciRJvcfE2 z?e<|kP0cEx9M76|<~}X>MY?^nrwhG;UnyyHI@zrXU7xRKSsgIYEHpZ zefvwryp_DVz{AG~OUKX@6sp#OA6sUmaphkNU0wPq_#OsWeEz#Et@ellLTRJJe5e~v zOS}+Y$d>7t_njiS5?5w8PSJ5Ct~x~=Iv{4BTj|!x-^rW~!I9um zTxy(s5e*&tBdmrV@!#Ry>lXH9KW#MKLLAw(^>GW#elG-rvv0f^XzIq;oU~RxtgdCr zaojb722ajcq@a(sxr^ugoi!<^ccV{dm$`ZJD78kILR*R9vpvkys)r-(UG_eoF*ldI z`&+j+-)UZZ?-PF6^ncSaetpJuM4l(=#6&5j82J8x?=BDKeMZ}y487cy%+Av^9VQOQMi>T ze$SrAXLM+DrQAYX^Y6#7;lOi6ZUZ}yo8<_Pi@5*uS8*XEqR(e&Yh^$UYFSxLjCW$7N7;U^N~zXX^yy?iTeMo~I8^o; zQRD2Ed%Yuym-O?VtD@V66QuV)o}mA?H{bvB;_Mlsz^`ZZ>2+w8=U8k)sDGgJ;kATl zqZv&}*x5&`ZT$Ja*sLDY?+)=S#ecri*?N{mpVar>7#`2OFw1BlxckDF zyV|8q$!l;Ke0G=6U+l1I(9>C&?~p=~qE<_WL$&M7>IIi)P+%|O~ZDLZo& zr=4`~R&h@hvZmtVl zAP|UKPglzX1Y(7PKrE3b*Z|Ka%(wysVgniJn`#3l2m}LxP#_Qv1R{Vy45kHxfnX>Q z3#rT1HcBL0W2UHh-NVBFfSAghJ(QfFc^bb7O+q#7zzhN5nw0=lLfGd zL&0!37>)qLF_@%)SON-0z`+Ov7=ZzB1X5uP6pVp`F$gdQP!(VefB~cdmH;ha4JZs? z1JD2#kj!8TV%orkL!k&L6oaV`C<|CP912H3;TTN001IG|fI|@oC;|ge50C<4Q4Ac4 zK|nD8c|bn^nm{(t4nRLZ0#FFB2EYK)081bg-~ki{umNZQi^1$1a~ZIKi-5y1n2iMV z0c8P;K)?|gKwkm501IFd#~|PsKp%ll0}TLp0pUQS0kuFYfqnoqfoz~104G2&pb%gU zfB~d|On?@^11Jn&1JDfSh?vp9GGGH21DF`lNI)M@7O)5m26KQ%<7cusnkaLgM?+$g zI_f)fyhp8May;q|bJ|COnUs$-Fo%Cci>ctK5&#Ws2VhD-^8igprH*#u|Mx!*n3sY; zQO*~-7M>sw_zd&S(o1}G05~ssX`6dJa6@_dJn?VuxI)x7eg7E2Sshj#HFQ*WLz6k#j;#cYVjBVRa4R}>}a`1{D=$$*Y^^&JlDUxOK z58;+8e4yUbh7gb!`xfi1JJ8o`|F<_ycKnHMmb@4XQ|a<=AfF%vh+~fZ#hfX0vP_$c zOG+jk>pv2}Jx4*Hk!+YsEOBT~18RHW4L{1W{Yr&w={QVwOwIP%_C+U3>XUKwC5{v2 z&F?$5#uP@KB6^B@ixAPxA|kKuD{y`DB#9<@$NSs&@iZi%-wK2VEV};#ozy>;$&>Ob zf+83H;liP`?1FZ&_=0xxh#V_Xbc@eFj*fg=c+aNb+T%>CFbaPdVzfVsF5N1m!?rkk z{iKW9)}ngL?c{Bm5r2^NM2{CA3OD|vcErJBx2}X!I)!nPc zxNpBnGBdb&*Hcpqx&R{iW~mP0map|>>SpCm-Qv8TKJJ}deQ_;$SW_zLE7 zuHls>5Z?Z)8GY;EcC=`+{lx(t%e@4pzlW-_%u{dn5r6w*aPynzCpsI(`3>Ecxf7?r zn2|%{Eo6XhH}_0G&)wp|LU2ICjjB(yFdtRn{J!qqeO`8FkTqHQ|2B(sD4$z0PYr~Lk5b(T7DziC}*nW@!^%; z8mxLyr{q=zb>^(|l~EUvf?Ru*DGd`MU#2!Ius08^VJx9{+Vo`>_0^aiR@C{UN;9 zSL@k)+_H~h4sqeZstHBJDS2v9vyJxc4{}Mx@{J#|dGpviWG+jYr`9?CJ_h0-BmX1~_2yY+zE?IaYwzLWcU zQR+j0(~pxkLwY5ZPDnhfdAD-B@StdtzjU(j=t1zWo!gM-nc^EPSWk#aQmqs|9~+8z zex}6EdMMuXaiA0u1E#?#|Jt|HTi6TJgaHJ}6V8ISFWHVpZ0x~ZU0l{-e&vW*?ltT^ zT{XpWnp9vOg(h2%l$JRBH77e%eVBcb0inUOvyg+e^;RmY+gQa~t}4l^wuNdK8oUsq zTY7Vy;~=}@Q?7plCaA7oQDFO|(4s00E*SRt9_>e6LP^!%nUB}7qG93ebd$m8$PZw; z$@D3fz`TGy`8RzY^~ikT!UVEY4HbmHRb~>K>lcOi4NVkNImq?^f?^RYP)bMZ{>W22Z_8<~Y2lcx2M(~?)h$WeZZ zoXY7~J2(pivZG?9);^7h*mgMITqE~c2U)_q=`Tg5HAJ2*8=R5-2{DQGbY7s4B9$AL z>jK#ikjZRK_QYbPmlnt6k0Bi6XLd|l*F(-q&e6^kztcW^lPnOE#XqY&S~nb6s5zK+ zwU5yp(8cHd>#_b#$dmp&rMOe=5u~W^8^;dEBfq`4h`i+<96K64CqY@Z;a=2Eh=xqp zK6Ry~W0KSNW1;lqVC4erWk>wWk?@o&Tk-mf zl=hbPEt4jOgh-|C_qqEIhSw>H#7W(&t2EODW>$G7Gs z+EB+ZmAb7(-YFXK@`uPXQ?>svC`)f!sPR1v35k{VX1O*ONf%(Ux=@Qlq{&q6OMU2C zU<9o$`DeiH8wPxY23_3+T*19)ERf9seDuX z^J>cs51}2(=ZBK9xPHe~L+YUq0i}`EWd_pZ2^DCOo$f|af2oyypqYiYPiAdUw?9liF%Eic(nGh1rj@HxplJK-~bIAU6+RMEDL&rx z&BS~8#*iMQu)1RF@8iF@LiDEUPk%MO&1=H)?M|;7Jg22)2 z^}kMN|L3=>V@9>-jD}Y& zy}wi;GOCEI!>%E(wC)q4UZnBYPhr5wT6I~70G*a zVEFH<7;Qu3LJNt#Yibdcj8>Q_wB-2~XhH59h^hmpN@_zAYVSGwWwNZ46!yP`l)C85#%H-KRKRb!Y3OYm1_XYS7va zKyF3J=!;aM_|NKR(_x6Z0c+#0K&r}@k+4%4A!AE^K|&de-i>Zoa764TW>`*iLt4V`-U}!@5-GB z+SmCv$9-{S9xG{Rw}`J0--}y;LW5k%`Ij<>cm|;c9?EVE%g(g0?8A|fuC0>yse>cXzSfn`cG7!L@=lZ#~V@q_@&ysW9 zloUf%{-Oj`Va~OxRNP-E=Dfl{-4cyCiI0H@6 zRTVN+aLD+r62+;&5sfv)h3MY;ns7b9hNza09ddbVNmH84#+?6E)L5JKOaDx{uncvz z_-@cWPgRm^!Vs8dCGnQdw(lQge>JeOwY+5&A>ZB3`+VzMicDxH@+wJXc6Ftsms+B= z4y=|O(38%~73Rm; zpJDNjLg*42iQX?`ZR1y5`D9Do4k_frcK5N|-hc+L=Fc0-KE(@H3!e)`*g{Wz&V|&* z1sPB3E8R9PKi}Fu*f2sfcUQ)A>^;wq3wk8pwFX&GB4~B(_jFTG{GBWySLqh z=Gj3D-=3F4H0_){{sh@><1B0N`i7T${h}e%KuPV^>M*R7YbsWvn(yzwkQLV;D%6uy z+qlgMErrggPIWP27(U-Spf|w-(H*5es-RJ!n2D~z|BP{Ox;8CO#(Adbx93|MVkMt+ z&Mv+$yrEdglZ${td|frW)@&iWMT$4c*P(8)UHc!baxTT{pkg-Zictz(a#EwAEOte> zUv&@fX&|IV|Gdcgm*p!(A&Xz$TH$3yO-8Z%{^-aD@?3h7rww&E@$0Qz6yAI8*}vps z6ayaDRfOVeWs-f>LpC;YZ5T~*hDM6JD&IqOp!jjO8YL_{Bz=eNB{RpnF}n4)7k82R zXtzMz7b65@q&N{~&iW|bbuLQhE}QJd9$z92tf)?>{gF(C7`@%hM-~@T72em5<|HZj zkykNAUh;+k30W?W#Zt^b#4qkst6YD*nMx*IU^Ubzjw=gGk-yv_p0Z*b+p$io&ZyDI zuB<_DINvFb%QDCz{j|Sti#j}Mq!Q4R=M9?$Z2TOSaIb9kCOpy)xHb(pR~gNQcKV=#*jA>iI#s=Aj+&tJVSWkzL`?{BG3O-?lk@ zJ-(6!V(JG(x8KNO*d_Hd_8HnbsK3@Pn6kH&1Zhm()v9{sv6UsbJA+iIUD{bRcK5_rP9x#BMH*m{Ow4OQD_L1J#QR_9njx!Bl&O?*SJ2evt_BCj0xGN}J5SXi0-;<#4X5 z^q!N=eqcWr(!88jS{R~hCUpo`!Ec>rWGl!mQ07jfVYrr0kz`|zb>u?4(M}aox74oS zO(GVV)D@#cr$IwD7J}YaA(M0pUxa#y%#6Uu9AYxXa^qOHXErsL^Ha&&{h{2-mS8sY&19AMsO(HKtD168n_V-+a%mpw6#G zoH&<#dd`oKd5WTlQ^vG;$Jj)R&Et^IbUJ^an_sCUJ0ITn8`~zS2sS>LImeKDtn=87 zkma7Wq^tlbLbRX{&sU)7r+FJpY=|`nJas{pdR!~M{o~X!m1%qd_)=#%bK$_Fg{D7zAJaF zaJy4fpLN_rtB6+pbw+Pq+q4u8>(P_ni*@<26Q>NmYW6p^!01V~M+=F&QNVN1eOa7y zFII+M;c{`-Ax~qkGg0xqLbg|PJAdHK6Q04Wvgb617BIJAyJHE8DogQ3BFn#ilA3w% zDb3v&pB0|PjD)2YYPw%$*(I-P$jWAn8EKouT(+!xhBYjBMEjEqh&8dW`?v{_!acw* zHTK-Fvmh&Bflu! z_*3`i-S#fQKIEUs(i=c2mOS`*lC+IO5X|$t+sBsHT+`+qRK;RF}brP&dAt{Pz=P|iN$Ws5;2V>~G8k^kMl+g+}g?VOr~9!#sJyM^`|ja72DZ2T&~Ql2-@^ut?%wrf)|f4+=B zjD8-nhVJ~#R5odId^%z{FGw~H4H7qO=5k%C$jiCni|}@lew3S%Hx5ns6}fP0zb>`& zt^lmPVW!BWgx@v!H~XhgHmJwzj*B&qOL5B&MTfXFFDs3hDSHWgcSi^{`gIJ54kh{> zxwd$%1ZH_*<7X?)JiZm4aIjpz`mD?yQADYkk$&eQAvqRll*1dR35`j{y4)_Vw6wQs zYjctus<9YHLR)V#wgpyVpTW_UMR(D57LlIcufuEi+?P<_X?h#w`eN`~BBOGGjxn#O zy`v3-R?FsQo1Y5q+JVu<<>cWG=R%D@JV0wo&DWbCqCN?s9jsM)Wx$iPF znTS8RCrmiPuY)_iXok<890yZ-a!(z!W`>ZY)%c5H#}8=;Q~jx7%kh3PAJ{iM5y z$9YiIa;`u2v(UrR9##>?d@EwQeU*CAb7}aI0|I{vMSulUr*V8u8D$=kC{twWtL<0Z- 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 deleted file mode 100644 index bb5f30b68b9749ab61540d9c1ec31e66f610b7f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47325 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 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 deleted file mode 100644 index 6e494038125307760faed5281441a5c85c4c3036..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7636 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 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 deleted file mode 100644 index 8dc7735c113589440027c3d3b03c4beea1087518..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46842 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 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 deleted file mode 100644 index 39c96ad8daf3900880a53f2b5ec4dba63c5169da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6840 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 Nj;i*pLS>7Pe*?z$bt(V= 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 deleted file mode 100644 index 0557732a55f..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_table.html +++ /dev/null @@ -1,724 +0,0 @@ - - - - - - - cc_hash_table Interface - - - - - - - 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 deleted file mode 100644 index 1923e20fb42..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_tag.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - cc_hash_tag Interface - - - - -
-

cc_hash_tag Interface

- -

Collision-chaining hash data structure tag.

- -

Defined in: tag_and_trait.hpp

- -

Base Classes

- - - - - - - - - - - - - -
ClassDerivation Type
-
-basic_hash_tag
-
-
-

public

-
-
- - 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 deleted file mode 100644 index fde6b41bf94f13ea35145fb7a5fba18fabca9dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7355 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 KP^(mZg!>OyWTVjl 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 deleted file mode 100644 index 2b8c0e76d5f2453ab0e4e5cd97c0cb34103587ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42763 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

%KPAvMrOL`Aq8_`_CF!+uI3 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 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 deleted file mode 100644 index 11dca77fcfebe11183fad329103472d6cc2a2b2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7572 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 - - - - - - Concepts - - - - -

-

Concepts

- -

Point and Range Methods and - Iterators

- -

A point-type iterator is an iterator that refers to a - specific element, e.g. as returned through an - associative-container's find method; a range-type - iterator is an iterator that is used to go over a sequence of - elements, e.g., as returned by a container's - find 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.

- -

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 - pb_ds this is made explicit - they are distinct - types.

- - -

Invalidation Guarantees

- -

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 pb_ds one can query a - container (in compile time) what are its invalidation - guarantees.

- -

Primary and Secondary Keys - and Associative Containers

- -

In pb_ds there are no associative containers which - allow multiple values with equivalent keys (such as the STL's - std::multimap, 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.

- - -

Null Policy Classes

- -

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.

- -

In some cases, instantiations are redundant. For - example, when the keys are integers, it is possible to use a - redundant hash policy, which transforms each key into - its value.

- -

In some other cases, these policies are irrelevant. - 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.

- -

pb_ds uses special pre-defined "null policies" - classes for these cases. Some null policies in pb_ds - are:

- -
    -
  1. null_mapped_type
  2. - -
  3. null_tree_node_update
  4. - -
  5. null_trie_node_update
  6. - -
  7. null_hash_fn
  8. - -
  9. null_probe_fn
  10. -
- -

A "set" in pb_ds, for example, is an associative - container with its Data_Parameter instantiated by - null_mapped_type. - Design::Tree-Based - Containers::Node Invariants explains another case where a - null policy is needed.

-
- - diff --git a/libstdc++-v3/doc/html/ext/pb_ds/contact.html b/libstdc++-v3/doc/html/ext/pb_ds/contact.html deleted file mode 100644 index 3d506c975c7..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/contact.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - Contact - - - - -
-

Contact

- -

For anything relevant, please write to pbassoc@gmail.com

-
- - diff --git a/libstdc++-v3/doc/html/ext/pb_ds/container_base.html b/libstdc++-v3/doc/html/ext/pb_ds/container_base.html deleted file mode 100644 index 359e02459b8..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/container_base.html +++ /dev/null @@ -1,1063 +0,0 @@ - - - - - - - container_base Interface - - - - -
-

container_base Interface

- -

An abstract basic associative container.

- -

Defined in: assoc_container.hpp

- -

Template Parameters

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterDescriptionDefault Value
-
-typename Key
-
-
-

Key type.

-
-
-
-typename Mapped
-
-
-

Mapped type.

-
-
-
-class Tag
-
-
-

Data structure tag.

-
-
-
-class Policy_Tl
-
-
-

Policy typelist.

- -

Contains subclasses' policies.

-
-
-
-class Allocator
-
-
-

Allocator type.

-
-
- -

Public Types and - Constants

- -

General Container - Definitions

- - - - - - - - - - - - - - - - - - - - - - - - - -
TypeDefinitionDescription
-
-size_type
-
-
-
-typename Allocator::size_type
-
-
-

Size type.

-
-
-difference_type
-
-
-
-typename Allocator::difference_type
-
-
-

Difference type.

-
- -

Categories

- - - - - - - - - - - - - - - - - -
TypeDefinitionDescription
-
-container_category
-
-
-
-Tag
-
-
-

The underlying mapped-structure tag of the - container.

- -

This is one of:

- -
    -
  1. cc_hash_tag
  2. - -
  3. gp_hash_tag
  4. - -
  5. rb_tree_tag
  6. - -
  7. ov_tree_tag
  8. - -
  9. splay_tree_tag
  10. - -
  11. pat_trie_tag
  12. - -
  13. list_update_tag
  14. -
-
- -

Policy Definitions

- - - - - - - - - - - - - - - - - -
TypeDefinitionDescription
-
-allocator
-
-
-
-Allocator
-
-
-

Allocator - type.

-
- -

Key-Type Definitions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeDefinitionDescription
-
-key_type
-
-
-
-typename allocator::template rebind<
-    Key>::other::value_type
-
-
-

Key type.

-
-
-key_reference
-
-
-
-typename allocator::template rebind<
-    key_type>::other::reference
-
-
-

Key reference - type.

-
-
-const_key_reference
-
-
-
-typename allocator::template rebind<
-    key_type>::other::const_reference
-
-
-

Const key reference type.

-
-
-key_pointer
-
-
-
-typename allocator::template rebind<
-    key_type>::other::pointer
-
-
-

Key pointer type.

-
-
-const_key_pointer
-
-
-
-typename allocator::template rebind<
-    key_type>::other::const_pointer
-
-
-

Const key pointer type.

-
- -

Mapped-Type Definitions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeDefinitionDescription
-
-mapped_type
-
-
-
-Mapped
-
-
-

Mapped type.

-
-
-mapped_reference
-
-
-
-typename allocator::template rebind<
-    mapped_type>::other::reference
-
-
-

Mapped reference - type.

-
-
-const_mapped_reference
-
-
-
-typename allocator::template rebind<
-    mapped_type>::other::const_reference
-
-
-

Const mapped reference type.

-
-
-mapped_pointer
-
-
-
-typename allocator::template rebind<
-    mapped_type>::other::pointer
-
-
-

Mapped pointer - type.

-
-
-const_mapped_pointer
-
-
-
-typename allocator::template rebind<
-    mapped_type>::other::const_pointer
-
-
-

Const mapped pointer type.

-
- -

Value-Type Definitions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeDefinitionDescription
-
-value_type
-
-
-
-
-If Mapped is null_mapped_type, then Key
-Otherwise, Mapped -
-
-

Value type.

-
-
-reference
-
-
-
-typename allocator::template rebind<
-    value_type>::other::reference
-
-
-

Value reference type.

-
-
-const_reference
-
-
-
-typename allocator::template rebind<
-    value_type>::other::const_reference
-
-
-

Const value reference type.

-
-
-pointer
-
-
-
-typename allocator::template rebind<
-    value_type>::other::pointer
-
-
-

Value pointer type.

-
-
-const_pointer
-
-
-
-typename allocator::template rebind<
-    value_type>::other::const_pointer
-
-
-

Const Value pointer type.

-
- -

Iterator Definitions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeDefinitionDescription
-
-const_point_iterator
-
-
-
-Const point-type iterator.
-
-
-

Const point-type iterator.

-
-
-point_iterator
-
-
-
-
-Point-type iterator.
-If Mapped is null_mapped_type, then this is synonymous to const_point_iterator -
-
-

Point-type iterator.

-
-
-const_iterator
-
-
-
-Const range-type iterator.
-
-
-

Const range-type iterator.

-
-
-iterator
-
-
-
-
-Range-type iterator.
-If Mapped is null_mapped_type, then this is synonymous to const_iterator -
-
-

Range-type iterator.

-
- -

Public Methods

- -

Constructors, Destructor, and - Related

- - - - - - - - - - - - - -
MethodDescription
-
-virtual 
-  ~container_base
-  ()
-
-
-

Destructor.

-
- -

Information Methods

- - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-inline size_type
-  size
-  () const
-
-
-

Returns the number of distinct value_type objects - the container object is storing.

-
-
-inline size_type
-  max_size
-  () const
-
-
-

Returns an upper bound on the number of distinct - value_type - objects this container can store.

-
-
-inline bool
-  empty
-  () const
-
-
-

Returns whether the container object is not storing - any value_type - objects.

-
- -

Insert Methods

- - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-std::pair<point_iterator, bool>
-  insert
-  (const_reference r_val)
-
-
-

Inserts a value_type object. If - no value_type - with r_val's key was in - the container object, inserts and returns (point_iterator - object associated with r_val, true); - otherwise just returns (point_iterator - object associated with r_val's key, - false).

-
-
-mapped_reference
-  operator[]
-  (const_key_reference r_key)
-
-
-

Subscript operator.

-
- -

Find Methods

- - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-point_iterator 
-  find
-  (const_key_reference r_key)
-
-
-

Returns the point_iterator - corresponding to the value_type with - r_key as its key, or the - point_iterator - corresponding to the just-after-last entry if no such - value_type.

-
-
-const_point_iterator 
-  find
-  (const_key_reference r_key) const
-
-
-

Returns the const_point_iterator - corresponding to the value_type with - r_key as its key, or the - const_point_iterator - corresponding to the just-after-last entry if no such - value_type.

-
- -

Erase Methods

- - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-bool
-  erase
-  (const_key_reference r_key)
-
-
-

Erases the value_type associated - with r_key. returns - false iff r_key was not contained.

-
-
-template<
-  class Pred>
-size_type 
-  erase_if
-  (Pred prd)
-
-
-

Erases any value_type satisfying - the predicate prd (this - is transactional, either all matching value_types are - erased, or, if an exception is thrown (for types whose - erase can throw an exception) none); returns the number - of value_types - erased.

-
-
-void 
-  clear
-  ()
-
-
-

Clears the container object.

-
- -

Iteration Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-iterator
-  begin
-  ()
-
-
-

Returns an iterator corresponding - to the first value_type in the - container.

-
-
-const_iterator
-  begin
-  () const
-
-
-

Returns a const_iterator - corresponding to the first value_type in the - container.

-
-
-iterator
-  end
-  ()
-
-
-

Returns an iterator corresponding - to the just-after-last value_type in the - container.

-
-
-const_iterator
-  end
-  () const
-
-
-

Returns a const_iterator - corresponding to the just-after-last value_type in the - container.

-
-
- - diff --git a/libstdc++-v3/doc/html/ext/pb_ds/container_cd.png b/libstdc++-v3/doc/html/ext/pb_ds/container_cd.png deleted file mode 100644 index 52553278cac2614875adc035c8b109bcff3631b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11884 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 diff --git a/libstdc++-v3/doc/html/ext/pb_ds/container_cd.svg b/libstdc++-v3/doc/html/ext/pb_ds/container_cd.svg deleted file mode 100644 index 3b5a9818967..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/container_cd.svg +++ /dev/null @@ -1,418 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - Benjamin Kosnik - - - - - - - - - - list_update - basic_hash_table - basic_tree - - - - - tree - trie - cc_hash_table - gp_hash_table - - container_base - - - - - - - - diff --git a/libstdc++-v3/doc/html/ext/pb_ds/container_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/container_tag.html deleted file mode 100644 index de187a94dab..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/container_tag.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - container _tag Interface - - - - -
-

container _tag Interface

- -

Basic data structure tag.

- -

Defined in: tag_and_trait.hpp

-
- - 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 deleted file mode 100644 index d9d5112c03b..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/counter_lu_policy.html +++ /dev/null @@ -1,259 +0,0 @@ - - - - - - - counter_lu_policy Interface - - - - -
-

counter_lu_policy Interface

- -

A list-update policy that moves elements to the front of the - list based on the counter algorithm.

- -

Defined in: list_update_policy.hpp

- -

Template Parameters

- - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterDescriptionDefault Value
-
-size_t Max_Count 
-
-
-

Maximum count.

- -

When some element is accessed this number of times, it - will be moved to the front of the list.

-
5
-
-class Allocator 
-
-
-

Allocator type.

- -

This is used only for definitions, e.g., the size - type.

-
-
-std::allocator<char>
-
-
- -

Public Types and - Constants

- -

Policy Definitions

- - - - - - - - - - - - - - - - - - - - - - - - - -
TypeDefinitionDescription
-
-allocator
-
-
-
-Allocator
-
-
-

Allocator - type.

-
-
-max_count
-
-
-
-Max_Count
-}
-
-
-

Maximum count.

-
- -

General Definitions

- - - - - - - - - - - - - - - - - -
TypeDefinitionDescription
-
-size_type
-
-
-
-typename allocator::size_type
-
-
-

Size type.

-
- -

Metadata-Type - Definitions

- - - - - - - - - - - - - - - - - - - - - - - - - -
TypeDefinitionDescription
-
-metadata_type
-
-
-
-Some class containing a counter.
-
-
-

Metadata on which this functor operates.

-
-
-metadata_reference
-
-
-
-typename Allocator::template rebind<
-    metadata_type>::other::reference
-
-
-

Reference to metadata on which this functor - operates.

-
- -

Public Methods

- -

Metadata Methods

- - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-metadata_type
-  operator()
-  () const
-
-
-

Creates a metadata object.

-
-
-bool 
-  operator()
-  (metadata_reference r_metadata) const
-
-
-

Decides whether a metadata object should be moved to - the front of the list.

-
-
- - diff --git a/libstdc++-v3/doc/html/ext/pb_ds/design.html b/libstdc++-v3/doc/html/ext/pb_ds/design.html deleted file mode 100644 index e83bd4dd20a..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/design.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - Design - - - - -
-

Design

- -

The pb_ds namespace contains:

- -
    -
  1. Exception classes (see Interface::Exceptions::Common)
  2. - -
  3. Invalidation-guarantee tags (see Design::Invalidation Guarantees - and Interface::Data-Structure Tags - and Traits::Invalidation-Guarantee Tags).
  4. - -
  5. Associative Containers (see Design::Associative - Containers::Tree-Based Containers, Design::Associative - Containers::Trie-Based Containers, Design::Associative - Containers::Hash-Based Containers, and Design::Associative - Containers::List-Based Containers, and Interface::Containers::Associative - Containers).
  6. - -
  7. Associative Container tags and traits - (see Design::Associative - Containers::Data-Structure Genericity, Interface::Data-Structure Tags - and Traits::Data-Structure Tags::Associative-Containers, - and Interface::Data-Structure Tags and - Traits::Data-Structure - Traits::Associative-Containers).
  8. - -
  9. Associative Container policies (see - Design::Associative - Containers::Tree-Based Containers, Design::Associative - Containers::Trie-Based Containers, Design::Associative - Containers::Hash-Based Containers, and Design::Associative - Containers::List-Based Containers, and Interface::Container - Policy Classes).
  10. - - -
  11. Mapped types for setting the mapping semantics of - associative containers (see Tutorial::Associative - Containers::Associative Containers Others than Maps and - Interface::Mapped-Type - Policies).
  12. - - -
  13. Priority Queues (see Design::Priority - Queues and Interface::Containers::Priority - Queues).
  14. - -
  15. Priority Queue tags and traits - (see Design::Priority - Queues::Traits, Interface::Data-Structure Tags and - Traits::Data-Structure Tags::Priority Queues, and - Interface::Data-Structure - Tags and Traits::Data-Structure Traits::Priority - Queues).
  16. -
- - -

Associative-Container Design - describes associative-container design.

- -

Priority-Queue Design describes - priority-queue design.

-
- - 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 deleted file mode 100644 index 19f8621c220..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/direct_mask_range_hashing.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - direct_mask_range_hashing Interface - - - - -
-

direct_mask_range_hashing Interface

- -

A mask range-hashing class (uses a bit-mask).

- -

Defined in: hash_policy.hpp

- -

Template Parameters

- - - - - - - - - - - - - - - - - -
ParameterDescriptionDefault Value
-
-typename Size_Type 
-
-
-

Size type.

-
size_t
- -

Public Types and - Constants

- -

General Definitions

- - - - - - - - - - - - - - - - - -
TypeDefinitionDescription
-
-size_type
-
-
-
-Size_Type
-
-
-

Size type.

-
- -

Public Methods

- -

Constructors, Destructor, and - Related

- - - - - - - - - - - - - -
MethodDescription
-
-void
-  swap
-  (direct_mask_range_hashing &other)
-
-
-

Swaps content.

-
- -

Protected Methods

- -

Notification Methods

- - - - - - - - - - - - - -
MethodDescription
-
-void 
-  notify_resized
-  (size_type size)
-
-
-

Notifies the policy object that the container's size - has changed to size.

-
- -

Operators.

- - - - - - - - - - - - - -
MethodDescription
-
-inline size_type
-  operator()
-  (size_type hash) const
-
-
-

Transforms the hash value hash into a ranged-hash value (using - a bit-mask).

-
-
- - 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 deleted file mode 100644 index f3f9295d431..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/direct_mod_range_hashing.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - direct_mod_range_hashing Interface - - - - -
-

direct_mod_range_hashing Interface

- -

A mod range-hashing class (uses the modulo function).

- -

Defined in: hash_policy.hpp

- -

Template Parameters

- - - - - - - - - - - - - - - - - -
ParameterDescriptionDefault Value
-
-typename Size_Type 
-
-
-

Size type.

-
size_t
- -

Public Types and - Constants

- -

General Definitions

- - - - - - - - - - - - - - - - - -
TypeDefinitionDescription
-
-size_type
-
-
-
-Size_Type
-
-
-

Size type.

-
- -

Public Methods

- -

Constructors, Destructor, and - Related

- - - - - - - - - - - - - -
MethodDescription
-
-void
-  swap
-  (direct_mod_range_hashing &other)
-
-
-

Swaps content.

-
- -

Protected Methods

- -

Notification Methods

- -

Operators.

- - - - - - - - - - - - - -
MethodDescription
-
-inline size_type
-  operator()
-  (size_type hash) const
-
-
-

Transforms the hash value hash into a ranged-hash value (using - a modulo operation).

-
-
- - diff --git a/libstdc++-v3/doc/html/ext/pb_ds/disclaimer.html b/libstdc++-v3/doc/html/ext/pb_ds/disclaimer.html deleted file mode 100644 index 681af4edf72..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/disclaimer.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - What, me worry? - - - - -
-

Disclaimer and Copyright

- -

Revised 16 February, 2004

© Copyright Ami Tavory and - Vladimir Dreizin, IBM-HRL, 2004, and Benjamin Kosnik, Red Hat, - 2004. - -

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.

- -

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.

-
- - diff --git a/libstdc++-v3/doc/html/ext/pb_ds/ds_gen.html b/libstdc++-v3/doc/html/ext/pb_ds/ds_gen.html deleted file mode 100644 index ec99c4d5f7e..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/ds_gen.html +++ /dev/null @@ -1,344 +0,0 @@ - - - - - - - Data-Structure Genericity - - - - -
-

Data-Structure Genericity

- -

The Basic Problem

- -

The design attempts to address the following problem. When - writing a function manipulating a generic container object, - what is the behavior of the object? E.g., suppose one - writes

-
-template<typename Cntnr>
-void
-some_op_sequence(Cntnr &r_container)
-{
-    ...
-}
-
then one needs to address the following questions in the body -of some_op_sequence: - -
    -
  1. Which types and methods does Cntnr 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.
  2. - -
  3. What are the guarantees of Cntnr? 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.
  4. - -
  5. 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.
  6. -
- -

The remainder of this section deals with these issues.

- -

Container - Hierarchy

- -

Figure Container class hierarchy shows the - container hierarchy.

- -
-
- -
Container class hierarchy.
- -
    -
  1. container_base is an - abstract base class for associative containers.
  2. - -
  3. Tree-Like-Based Associative-Containers: - -
      -
    1. basic_tree - is an abstract base class for tree-like-based - associative-containers
    2. - -
    3. tree - is a concrete base class for tree-based - associative-containers
    4. - -
    5. trie - is a concrete base class trie-based - associative-containers
    6. -
    -
  4. - -
  5. Hash-Based Associative-Containers: - -
      -
    1. basic_hash_table - is an abstract base class for hash-based - associative-containers
    2. - -
    3. cc_hash_table - is a concrete collision-chaining hash-based - associative-containers
    4. - -
    5. gp_hash_table - is a concrete (general) probing hash-based - associative-containers
    6. -
    -
  6. - -
  7. List-Based Associative-Containers: - -
      -
    1. list_update - - list-based update-policy associative container
    2. -
    -
  8. -
- -

The hierarchy is composed naturally so that commonality is - captured by base classes. Thus operator[] is - defined container_base, since - all containers support it. Conversely split is defined - in basic_tree, - since only tree-like containers support it. Data-Structure Tags and Traits discusses how - to query which types and methods each container supports.

- -

Data-Structure Tags and - Traits

- -

Tags and traits are very useful for manipulating generic - types. For example, if It is an iterator class, then - typename It::iterator_category or - typename - std::iterator_traits<It>::iterator_category will - yield its category, and typename - std::iterator_traits<It>::value_type will yield its - value type.

- -

pb_ds contains a tag hierarchy corresponding to the - hierarchy in Figure Class hierarchy. The tag - hierarchy is shown in Figure Data-structure tag class hierarchy.

- -
no image
- -
Data-structure tag class hierarchy.
- -

container_base - publicly defines container_category as one of the classes in - Figure Data-structure tag class - hierarchy. Given any container Cntnr, the tag of - the underlying data structure can be found via - typename Cntnr::container_category.

- -

Additionally, a traits mechanism can be used to query a - container type for its attributes. Given any container - Cntnr, then __gnu_pbds::container_traits<Cntnr> - is a traits class identifying the properties of the - container.

- -

To find if a container can throw when a key is erased (which - is true for vector-based trees, for example), one can - use

container_traits<Cntnr>::erase_can_throw, - for example. - -

Some of the definitions in container_traits are - dependent on other definitions. E.g., if container_traits<Cntnr>::order_preserving - is true (which is the case for containers based - on trees and tries), then the container can be split or joined; - in this case, container_traits<Cntnr>::split_join_can_throw - indicates whether splits or joins can throw exceptions (which - is true for vector-based trees); otherwise container_traits<Cntnr>::split_join_can_throw - will yield a compilation error. (This is somewhat similar to a - compile-time version of the COM model [mscom]).

- -

Point-Type and - Range-Type Methods and Iterators

- -

Iterators in - Unordered Container Types

- -

pb_ds differentiates between two types of methods - and iterators: point-type methods and iterators, and range-type - methods and iterators (see Motivation::Associative - Containers::Differentiating between Iterator Types and - Tutorial::Associative - Containers::Point-Type and Range-Type Methods and - Iterators). Each associative container's interface includes - the methods:

-
-const_point_iterator
-find(const_key_reference r_key) const;                
-
-point_iterator
-find(const_key_reference r_key);         
-    
-std::pair<point_iterator,bool>
-insert(const_reference r_val);
-
- -

The relationship between these iterator types varies between - container types. Figure Point-type and range-type iterators-A - shows the most general invariant between point-type and - range-type iterators: iterator, e.g., can - always be converted to point_iterator. Figure Point-type and range-type iterators-B - shows invariants for order-preserving containers: point-type - iterators are synonymous with range-type iterators. - Orthogonally, Figure Point-type - and range-type iterators-C shows invariants for "set" - containers: iterators are synonymous with const iterators.

- -
-
- -
Point-type and range-type iterators.
- -

Note that point-type iterators in self-organizing containers - (e.g., hash-based associative containers) lack movement - operators, such as operator++ - in fact, this - is the reason why pb_ds differentiates from the STL's - design on this point.

- -

Typically, one can determine an iterator's movement - capabilities in the STL using - std::iterator_traits<It>iterator_category, which - is a struct indicating the iterator's movement - capabilities. Unfortunately, none of the STL's predefined - categories reflect a pointer's not having any movement - capabilities whatsoever. Consequently, pb_ds adds a - type trivial_iterator_tag - (whose name is taken from a concept in [sgi_stl]), which is the category - of iterators with no movement capabilities. All other STL tags, - such as forward_iterator_tag retain their common - use.

- -

Invalidation - Guarantees

- -

Motivation::Associative - Containers::Differentiating between Iterator - Types::Invalidation Guarantees posed a problem. Given three - different types of associative containers, a modifying - operation (in that example, erase) 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.

- -

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. Invalidation guarantees class - hierarchy shows tags corresponding to different types of - invalidation guarantees.

- -
no image
- -
Invalidation guarantees class hierarchy.
- -
    -
  1. basic_invalidation_guarantee - 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.
  2. - -
  3. point_invalidation_guarantee - 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.
  4. - -
  5. range_invalidation_guarantee - corresponds to a guarantee that a range-type iterator remains - valid even if the container object is modified.
  6. -
- -

As shown in Tutorial::Associative - Containers::Point-Type and Range-Type Methods and - Iterators, to find the invalidation guarantee of a - container, one can use

-
-typename container_traits<Cntnr>::invalidation_guarantee
-
- -

which is one of the classes in Figure Invalidation guarantees class - hierarchy.

- -

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 - range_invalidation_guarantee) - can be cast to its base class (in this case point_invalidation_guarantee). - This means that this this hierarchy can be used easily using - standard metaprogramming techniques, by specializing on the - type of invalidation_guarantee.

- -

(These types of problems were addressed, in a more general - setting, in [meyers96more] - Item 2. In - our opinion, an invalidation-guarantee hierarchy would solve - these problems in all container types - not just associative - containers.)

-
- - diff --git a/libstdc++-v3/doc/html/ext/pb_ds/examples.html b/libstdc++-v3/doc/html/ext/pb_ds/examples.html deleted file mode 100644 index 03c7a391003..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/examples.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - Examples - - - - -
-

Examples

- -

Associative-Container - Examples shows examples for associative containers; - Priority-Queue Examples shows - examples for priority queues.

-
- - diff --git a/libstdc++-v3/doc/html/ext/pb_ds/exceptions.html b/libstdc++-v3/doc/html/ext/pb_ds/exceptions.html deleted file mode 100644 index a51e8ebe0b0..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/exceptions.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - -container_error Interface - - - - -
-

container_error Interface

- -

Base class for associative-container exceptions.

- -

Defined in: exception.hpp

- -

Base Classes

- - - - - - - - - - - - - -
ClassDerivation Type
-
-std::logic_error
-
-
-

public

-
-
- - 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 deleted file mode 100644 index d86299b7e3ec1f3fd57d866f3b5edb7fd35fdcf2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6194 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 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 deleted file mode 100644 index 299737dd6fc6f3be1527d8033f80164be169d54e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33303 zcmb??g;!Kv-0sjNF?0yX&`3y!lrVJ10Mbf#cMS?Mv;#;;3kVEKh|)1Mh=P=W)KDTI zEnWBUe)szW?poKiSk9a|XPN`jg**?7z6^5YN$gEK_F~a5D2T75Fa?w z74TC7_z%}lNyC^B_!mxSj{v?Cd8S=$qfb$GWe^Q`5SpT`UgGpbpQng z1qr%%y7}2X^L7yQ@^#AHm1P8h9)L8UPmF`}{w{>%=^Wpp52nLtza>T3K;YsCC<+?mHZxv*ZePqk8ZAgM%EaE8XgDb ztY3%Aj`Xx|EFTVbN8~_Ufq1>Xs zyG`C;S}KSFnO3Ix#+(mwaxD(r%CJr$1?$H@Azzf4)j}C1J!O5iCM%DP3e?opM4$H}G6S}Mwo7OD zFaU!}Yd|Y-)ODc!Wj+^1@{s8;>|I z$bGax?sIF^LPw$b?WBd;<^~(#=-pg}eZPCqk?&#WD>28E z3i7odu`rwvCI?DrD!Ih%=V+(Vh#34Lc&K}~hUJ4Mhis5B$haj`kl0&o6dz53rp6Fp zu0b89nPRS!f0~EVxu?JVX{)V$oX#0X z7KOTOyHAH<#NcDtVAoUSMbJeMi>`(uv{Y>W6)I3O!215kA04A2hFTq%pN^?P4vz|) zjj$(re0O(Bu`Oj>Z#=T>?p1|3$eepS<@`07Y83JD)WGoCzC-N}`s$Bt+u;0Oop%fY zIjz}g0CUFtb*BR};Di^W9@bwJ6muLHW;^5Ku=~6x#|hV=Kaf#UAbaKv%rR-nf%6=p zKPCFKrHQ=eAlQTB2cDDhsuj#?V?9qwiu=6cUXsaFaYvg|#gKjclV%cnyo`XL8WqGe z^5PkxvM4abRliq+Jao-G&ph=ovKezeErfO7V9GuZ{_c&o69KuuLFZcrxnlOnCN<+uNl0LCpu&u&mI(iGHlrSSNjk<=cWe~QTaX>9>`SK z1(MMkZDYU)`Q}8qG|bUFl16chvT6-XUG9lXb)KnRrUD|-n$`DQ$*6b0VXx-clm4}k z4lY)=XbZU@ggUsW4#o1#Q-9N7s?f)?aXxjzuUGUH7UYo4n|;3sK~0BDgm<7175izl zJt+_Gb5|^nq@3e5;ReTPxWCpIfB2E3^m$*xXa@h&artKsFA&hFDpMhOdHD{rjgfq> zgoFeX?N+w-qEScqxvQy7L_pzez0k+*e zE=U$|=_!jn37hhQa+pAWIkJ-A-00@Z z^ohBQ+czPo$zkqXd#@=Cuf}JzSevg7hf9o3R8&<(favXbygl9d81PLhXZh1}3gjug zFH2G*QsRvXJj#+|M z389Y{18hy@D=x68ZRH*na?t*{Zjl~*hX1DZ?fx<0H9SyJ^I)d{UyCu%QrgSm7;xgU z^H5ls!)T_HiOr{$-2S=lsNdltdfn$afjsT-f;_7#qKv|7%OHp4J})8NAl`)8nh|*k z`N;55!0ZJz_GImR*=^k9ZwM^8A*8Y=q`2}VCM!q{75F<4>Vj_{Z{G%Uq>oR-4>4@g zNarFieG?37JDW+g{Cx1vh=Xw>bcR#{ds2tioSQb=RqsFjmypC-$D#38$H6FszPUl22Fzxg2D zp0;&1@zcF>A%mwGtndTHl9}_mqjClLcI^w(mya)&44O<<&2Q@#S-FJ1>V6-2Y#5X)AIH-4e7wpVXV5%(84C0Gxa2w>-dMCC)txC zr4*`Y78Z!ZQ$z@Y)zr2Pz(fx%oA%Y}>gonW{bub{Ql}Oh>?{^K!)^q6Ybno zZEZi2PVd#iHLxW6r}PIa<3y^BG??I7LCPd4hM#JzE#ydOx9w=eKk9&sgPU6CLGg@G zYt-^Or;yO&hTmp!=m?sAT$}2rW+S;tY2>GQ!|+ybnc^EYSYu10?N`(mN9vI#4l6b* zX7Z&mXxC_J4(9|9S6^FOd*WbqK&a((F-+9b!3?%JUN)S?8u8D-t)Gqh9p|%uy$pgK zKUOEN(P13*aLVxaIO4+k2TpOaoDPUJu8c@Us#IkKY(K(PapqzLr^|@<>K17sR28`Q zaW6J`u6bIg#ietBhl+Jh{XtUv81uBLF1DU%;Qf*H_BTrYtk6!=>rG__76^7R?tzT? zz&U%Qoi8?EXvEm5t@W0;8>s|HEP z>?1h0aX{UG8y85Z;&;dMZ!hpj@jXf#IKgN?p zze)FgdYR-`H$~iTza)D^T4LOXSf{f?Buvn*LS zqL-TAtab{h(iOh%&zF}GFaP7ri6kueSka01+xwN|F_zrxbs@god3m;5JQOI-z;k-+ z!n$_#(PF&%ITjB7hs7^$(?LK2*z#FOrOBSoYpnJ52*w*&7t zviGr!Y80``Jg@ybe`qi{0{^$~3yXPc`TjMT99?;6X*P;w=wGY~#M^TK_ituwVOnY| z>eu(xX3#499ZE(UYL0Vln8pWgCXy;ck$eJ&7I2QLYmEFLb&Bpxkt&=-SH_vW6k&Z9 zoifhMTT=;Smm@Wn5c{z&)7BR6wXy`g!jGp+8{u=LA_*tE9&ZYyI{mwvzaO#e^KqNK zrEvaS#1WeQ5{E6_}OZIacNiKi1;M2ku zrmJQ%FdM_Jb}gB%F^*sUsDrTfwbDGrpSgs7TqTpV)Gnz)LM{j62{uSTG(q$jszq|n z;Qh6{&+DDF)n~T3sE*YJL=@>vywP?s#8*xia+nqt8G$i}MToQ>Yy^lHBs{PrwT$zo z(R`NL!$d**8XYFrv3+m_1Os!>w*t9KbhhL`l5FsCSE7MuSB?g@?%^lwb=dr7UDvhi zCtWU0qnKvJfV_ZLyFU!xZnVBjP%rL|CDD@${pXxQ&z4bDrak&j&h-23-c^+6*!AJI zP_G=tK=rFu!@!Tr?%j2dseK$XwULe-M?|_~+myOLtOoEqt3C_QBFlhQdmNjdxDE6{ zXF+vg=h}x|SF+Ow6`hZ@T)xJR9n9#&){>6C2eaaX?7#`UfA6S)tl+CsqG1L4Q^~W$ z@`cD?UMRI`i#TM#JMomyqq;XuSgXRKd{<$kp}CT@O3>=fIQD1`OK$JB^mXbB$-~do z?0K_1)2*$JzAu(#O!Quf)q-3nE5`g97en2a7(^ZCk9x=z+U{4J-i`c(4`R%bmw@ry zI-ut>xqk18d}Czd`=pFyB;NeAJz{kgqu(OG%`uh z_d_m4hq8=nfehFZIQ3j-YM$iyXk z`53ZAs{kpH_l!YP8RM73vlH-nmngu!zm$8l(R8%`%M$KS90gD#_A2byEvi#5k^>S; zaF4z=^yKgC@%Uq}*-s7wukJC3_-_CFSpR~?qIS@p0e;A@YuK9e$a6m^=$kFlsfa*+NOWH&PJI&9xXqTqAN876$#Tnq1feOVwcKZ;4+68-Ykag zS&0KJWul18>0amUdy7U-k}M&cNDtMG-^LXeEPq*ma*cf9i zwoX(Uk>MNfmKALy57W!4U&tyObDe{gzR|})*B8eclH^Sx{h0w4yCfz~BY*z|?uhn^nUELyNt4sol}1iw3>hyq|KjS^ z=sLw`#H>!vDsSlwtlSa@2gf}^fA``C2b4NuqTZ_0iov8!T57J2Cex&hPhy68TSVWq ztZ=M@djF(eHd1GcQilTYf2nEW-Ch;ccgx{_`GPr4JDphM z>28L`Cxr72G??`nNOz@<$w5X*Ey2KC&1El?WJ^5f=G#9R1}jNEz61i6;0Gr!NCf{d zoz+01Ch9_8DEZ^jVwb5q=Ew>NC^KgX7ld1x?PA*&q2&1>RK@{Gtx;s&xvt){vY(LT z>C@_M)R4DPIJ|Bg-^(a)aGDKkWd%ry%9%7xi+G*Nn`HzJp0N$_k6(^@eBg#~YQ5n* zcAY}O$Q@7G8@!gRF+gb$Att%B_nmV-Ql^IOAASnE{{-^lX~n7tez=~zXK(Yup$Tfu zPTD)!)qB^};_%raUk-=lia(_w@n4YV4}*&x=?w%m?%)>R_+53&MRrrURI%c7hC71l zC6WG4a8Y!#d};bjNoR#K$=Mp$b6^t_o}V(Fs&qe7Se~18%DYAUq~E1PUKRQlE49ki zNns${`o53tP~1?i{fo&5dCiJ;d5d)H0U7eSzHI=|FbZ;?Yw$38H65y{2_Bh>86z#D z8tJwta}er=*n+|Q!z6NQ-=2Eb?fYl2Ni`05jT^`)O#0+pecyOt1a2m7Vku{srp;4H z!LP!vX-?*3<*M<^3M>43vkVH(Quh=(FpDSIZ9iSq1KnKjMFq+G|M?Lj%4q*?vY(fB zhxjvYD!xs3XxdYCsYLp&7F(TY@nZIL2kfucij>_SWejb|1GKqr57oksKS|YFj_*ih ze?R4k7j>6f@{_o`SLf@Yah!F|BB|Qe^_5Jutf;m&EX6o7<_^oc=PGWCTuC<0DxWMm z*(ML0dR=U#owg-?r<7d#73@FBzBr_ReQ&<3Sqcuuv*)>9M`@i*2j3@b`?8_5{5-V4xvYEYt@JO)y@{x{L9 zKk)q1$TXK-6lgJvo%8{iH%U}(|H!tpQMlNo-toKVO9FDwZIA1WmA*v3QFIvN^oOVQ z7KBQo&94DBhBHM&GYIV8U0F~J{RxncMi~DAn$#jetCo9|NMZnKw6_X$mB(M1e4aPa zUCNt{fOL&;KCyfAHhj}~j z9q&4@VyN9eBQnNUyjvJU_AW$cWxY@ZyQHKx^ogBMY$PavQgd6~Xa{wlO}Ih{DHt0LcOsf(o&{utqD*-*gOh64UYrAE2XgY7$dY z$bjTv)3TwerWW_bb!w{xsDy8p?vg()FEo94)A_nkJM$qxf#k+>X|9w79ZOF=26E|I zF@V?6;;;|}T2czd@~S`W<{`;g=XujAzH_1uz={cFc@rgSsn2f#FJz@es&s8tdwd$5 zeld}v$O((++XEkr{t_O=IY6~Yf)7TVwK#=_FlIY4lZXa^A1 zOx`GN?U6S-CtF<*$U`5`9)236s#N?yp`uQnV0lfc%&kcgc`b2vg=?Y%gPpdcW#svK zl|10SCP*Z5<8SBh2Dh_{ezgq=bBdH=1`aCTx!C*v$_}hv;*<7w++1vvOSsQGTA(H0 zo~}`d7#3(uT59sK3pZKn!8LtPqN`HM33S&FRZ2xhw6l&XwvKLy1>eY{Za=6AgXp_v z%g}L%!SaH{U(G{<4|lPHPeFPFJc0n>C@R>zmbNVF_{}*@<^Yr}7b%hNwRtuBs!B2m z>x8QRMzQ7vKZNeCBe)jPlm#(LxSJIz$B|t_*A!3}77tcMX45y3JvWAUpW#ma^G(teHxMRuYcM_+!IKwf`9 zT^jDNmZ8$GXe?#+6zH-^Ia*rru}az;T0DLJTEf}||L0aeKRFDa%3tmGxM^kZAb(2_ z4GsD4&Y$OUYGsOJViG*0?PH8FdpoK^rW#FI6j++*?AqFQa=Z z53pD+6=rqM%cF4!8gzsXK!hYDb}PN{S(f1keNXl-pB<*~Cx;`{18h0G*+#}s!eq(l zu+ogb6xy(>F_FLdUoC*PLV+#_)iPseb5EbuncN>6sNovB5{3Y7lL?Fj8e$>Og_eN# zbB8rntqt>CF9~W4r<9|UzOU&#?EpMo1^zJFNJ>=0kOQx^E=%pZ8Y~Zch6LV@rbBDy zIoe6^I|D5H+JmQ_HPt9Jm9-$uXVeW1JUje=$eZNRxP_@&kobIS^bVTRt;-EKGbTk( zoE6m~!@cm;o5ZFS6qGP1-54=n*-(h>24I^Vn+?w;0Y*@p@XXx%?P|rA2CSW?f)BFV zXF%!HYezZq@!cDA1UmbNitF8Ny+XLo)r(Q7Sc#LojxL+>k#xaS*+kR?g2c}dccXM< zeq2+A5+|tRo%$Gn4_YvKwUw@#N4dB~Ijvso`;Q)BIbD3b6CWs{H-HoIajK#-nim6n zECcM7{Za`+Gr;4Onr2FnzwFkT?o zHDl9ERIx)LssO(QOAZP!WWANHkRN(b)sTYih9sN#3HCL%yv-J>7tHl{MDX;v%;6YA zd6n~)Lt>9gshNb`;X~L$4Qds>?L$dyd#Vs^dGr%oo?0w3{I=ylt-CoVk%w!_8y`0zjH!`esYad?EE>3xViJP7D`7RKapEhf~BHR(LXuCwf}o130uSXgZS0jQk2TPn;BFG01dxE>n2ED^t8EQ>nm6 z1v;|mb(lNKiF<5b6Xr#We6NUuQH9AdY-Iz+kllu!u59=Sw?l=J)@s69aTcP#gs>d| zzO-$8?4TtJoI-yKWLqA>zy7RVbV%1-)<2@2(?-Be`sr%`!vk2O4fz|w;O`!jFg+O6 z6=lwy8y#}k&}BX*)%IuI!}ILfJn%`qRl1WGXj`wjb-B3YZGN`GGCo$rs44V203!v{ zFf%h-vh9->Y9#S*TrsCDP^X3kGiEozD4K!#V~XCB(WV}0Us`91zY!=l7x%L0TEL? zP`m9$4KN2~B*(`;1CWG>e&CTgxVU~_01(f{&sgbtDD++QuRI-*t(H_bEIirKg(e^N z_OR2F(0o80wE1XXOYx<6CATCjxk~ z_lZIsXDL9%NwziL>^GJXk!2P5v=>Ms7S?{>#cObOl<8R@l-6y*2PSmZ!OsS82*^Gx z)H{tD!sL+2+i!lmKVQzVwB$BFaG_^;}* zow?o!*>r@K>*iZC$%h9|07X5`%ojJ)!wg;{2^;@0m7bu#Gj(Dgr<+NVtOw7DRIT!? z^%wKHpQ1%Mhi10q7YkZk9E^=8({8RWqr}{PerN%tB3PI|VfSlE0f z;4s&RFaY^Hn!Cg10yoRDUKPrQ zq-9x$ZoZ-wFmL-3dhGg;LV^oEuQ2$=XKTv!y*seL?r(p(J-4$f(ahjE=qil5A$rXZ zQH$N&Lllbo@n*KeLRTY-Xb^bf@m*6K*+Al!HLxDPc0>JvrNo-Gd7Zg5Nw_mWpHo0leNc3gFb)Amhc#andAog6>EW zV+I+hre}+#zX9}W5}{j_!xvg zdaN>z;h=6Q%Kn*yJD`K|RpC9BU_q zlh=o{_Pzj%WHs9!X>HWvzbVrQROs&jj$@L?c<|gJ=x}Z570?<4U5}S(1ziJ6*%-^$ z0C3nV8Y8bSR7|TaLuvtTZW}Pz06(6%-aBog|F>-6gNVx$0pzDWz&*cs zweB>$fsFTyN~GelAOBI&e1Tjg?HmXWx0b&*?&tSMFWQ2~ef( zcPtO?yzVD?Yf;MbLJf<&;(mhY4IdM##TZdzl#2(@$F+o?`|4-`E~&Rl9bOiaEY@J3 z7uKYJZG#0U1Ac4c_k)5!a&QT$)0e}b!!5faYo?cq^Ndit3Bs#z+o(|`qAxO*^NOMriF?C&PKlMiOc`qx3mFg_S+@_By}!)1HK=w0WTuJcxm0sQsMeV8d1DD22^QW5G; ziXqWxv zOyGFurH<=zul8e;VG)O~rGEt*eOCL;0eq?&dp@s!TQjY{BDNLwV09`kb>*9v-fW~! zNM3e!({1xcL0BuG!8}KnxN{;Vn6Nzwa#6_!2UgwQ~)qOvt}y3zvAB%`_{Zfb8-N zxad0&DrollX*WH=EU6Q7S#SJC=S-WtmlLipPfvekqnyXy8P{01k4Y|tPw-3?zYIQPQA##lLqB|iUR14cmS}myo=1d#Yv-U zq=1YJq(5bZuDXN6xEBK;zLlM~1OWoLD_Em0)&uZ9G&XoP?ue+hhG}jTlEwoOjSdq- zi{k<_Ke%(9U1TumPTDruy4zA^0Wf~t%<|!9gd5y+!VH!d_x71Kxaa_%d)vid1k@P8 zXRq0m9d&X<%FMf7;9<=GsKW}T>t*NJ?_9549Q~<`?t1N|Eea&WUjC^@h-LSJt4W1E z+jlofK>MbTgs1?uoSjt9?4{hzLScW0GHNSJNeRpwI_r>iy-`_S;5r5rbP2hVUh>|3 zG^XyiTU9llTI%XEn{nG&-5NZ6-V)6f7>6Zkl~->bmWNao05CoccJ+{_dj}#up3Py) z&Q-wtGlIvkbWj%{ZC=3D@iS9X|)+LkymFH zrNXX2wxpE{Kik*HgEV(boz98+szS+L`=lKb)GB-|gn^MiKU#El0(R8|pt?9efNbp> zH1DI0D~3-lAST_Mrx?)ZRW~f*7JMKjqnjI zLqI!fbRExK;QS^nxDOLkf7&MIGY9+7(9$_2OgkP`~VYjlRXtEafaycj0{k zK&{(r08iWC5CT5RwF8C1G%UcHYiX$lDC}5o4+dCS_cP(0m%FV|`LZF0j<9Pn>bg5D z`z?!H=)5JM)%82kE0n)Z1zx)>V?uV)&}ld?b=QvV#)0hp@)J9aqC{hFVgs$!tF%;{ z6%naU(8!-}-00)zgeqVkLOnUNOzGmCIHcTdvce~`ei5 zoj>5c3V^-Uyb+r2(NJOpF?(;hzrxbP5?ZG2tHz7$XE4||H#Tbx^w6=A+T;Z`0epPk z3&jN4=3iP1VW(of^hxltz)+LZeH%Fir~pSHpgOrm15|8v=j~1F-4{h*p{+TfD*2w4 zU|{FPLx5Dz`g`8~tM*yX(9Fz?r1F&??G#W_OqXltdF(t z%ZAy^LP>+;YuaW+FXrFLAF{SMQDVvry~Ewh0j!EGU!j3_-f1Z#QtV_$lcOF>M(s8S z@(~x|2Y~-u|9wgk{O^xJOVHlUxl>_8V6)>!Zho9NpbWMLNW2=r@#B91J=3U7#PQVi zR{1OFrca{#DASWli^g3Y03WT{`6x-OIFP~|1r&js+9RxWXGSkSGrANj#kx)d;f4-P zu5k5eZ*3@j?&U$pCK&n0@%!8FfE>|ff<&;XsCOj)G5H7J^)Fu>Zx5`;6h?q64T0t; zMJ?t2`3`_ZR=qfH{YvjA2tZDajRX2c(j#KuccZU*3Uu%LcmqOg*}~ z*sd9xwu!o41ER#mjec(?6K?BhGJsPI83Ow?zQC8I3Mp^(U|I2lN2rS$MZD}MvOX9N zR!`=ya%fJpAL{Mz6}2abDieT--rig4jQa8$UY*XheaA5E=1Kdtg#IkKFCU)0*d7*j zy;)w^FomWuVY1UM$l3(3w^!Jyn13T?>vam{9IQt0bJRsy))6sI5YC*>mZ5voRH+uU zn+e!PQwC5_rhpHAnEd@c_x1wF2OXD(!$JfVSvi6LTp%L!a3~IBiu2O@2BBvy$l+_Iw>F=9 zd8H!m0Lb_WGFeg5synEJ3M9|T%4-}DhgwXo{}AyQd_Jh~>|6)?$2~=uc&$?ly&7o-|KuD*a)3jp{OoKVDII5^%2Xe}clB43Xz!Mw@!nw}APE0aRrsv39GSyhW< zJ|}GW_AT&0$`np0d9DcE#eIwUhtEs&4F}LB^|93CfZB>sv(|l+z{&`xxPNrb&24IY zN-0;+$pe}5Hd)CdO){7gGHm}K=KUbp;0~b*DYWrwU6TNi#B$Ow!>wLrC<-g9qMrC6 z#IW0nr1x%|+1FmG^5Z^o`$bvTde|i(s6D?v&KdAVVFBJ0t9J;|VMe&z;WA$}D%Yq0 z!On7~3{#*({sj1^ohp=aG*F_8+K>GQ&*gEl)~Z6Q2`G@y(U*$Cd3gUoUvaABMwSRC zNnK;^R+1&n%dxf8FPRYIf_V<0eaio#eHg5~cN2s~B;NOfS)5G1^}FMF-JwH9=N-S5 zVWS{++0$mXZdu%aSY+7B(WGb*4C()%U`y+lYwV;8-l~dZAjDw3Vjk***yC=~iuSIP zIP2mynekDuH8z6SfdB4T!E<(2>xwN(aI+3{mmm`4iP!&1f)7{$F0Wc(7*uFILJW@) zB#GJ@0;uJ?3E*Xhmny@iv9^_%@3z6EXPJHff7}kY-c;EDG2|gBrvvE{@X-P{>p!ze z(UON>ibz?LoPqU=WcD4=>>|MYl9mvtS2C}(sgO+3fhd`o2o{1O)UYyrCU9rFPY<|L z!h<;>by8aMr}qNxo+s(Rs#+ZoCW`Ef{Qy=eMuz3T(FF%a0|Dv){Scjxx-dob++D3L zvHk~e<8F9X^nmekx&KHNH-z~G-G8uP_?wb+a$D^EI#gsqS4byTfXbR2n3po9=|7t+ zxt|NL7==QPCrKh;A@O(rp9!Ss$iq{kg`b8*qpGnOak=jQHw9(ju(9|P zSh`U`qB>C{KF60W$oNxeH?;I&t-$}-C0CWN`{8n*5{6jlk_1!_*HF~LMBC!uVSCvh zhIEG1Snu?CQ-(WB_~9U6gA@S$Rct%~H>*Nb@dWN%J(3fmVzdPkm8vO6P?M@^bA|cp z92TQGo5))e)oYC7m_P=VHtY~mcrp4PC=P(*xV%%aOcMupT=Fq2t-s`^*SwouJ+i1F zB1|)+e+gvnHlQsVZ)D*7#+Izux+x;KgXO*E-*(c$g^WgD_*123q7_HYpQQV(e_g{- zguY!(a=j`-rIyK<5C*f-7o&2Oz;~PdZVxlzW-G|Y>%Z1;#;vDJpua)4u&Gof3g9(n zgTT$@JZ*=>#=l7CB%Z~qRcAb;%^W5Mhv1&|0}OW35F?lu=f2@o>AjJvB2*X-om#jH zVJl&p5Vk9bno*=%8t<}mCI{aPy1{^Kp<6xc@QD6gL zwfGOuA`u}Ew`Lo~O>AHsJI zxaw)}E(Nj*t_F_-;Vn`lZyJ=Uh5PfgU`sSe9*lz*5dt9#qBfW!5N*j+569J~>DA%; z2N~g_pNdx6RZ%G~{(Ud4YMnsDppMjpiI)zrcW>><163HSOqg}Jn7$nB z1yUr`AoiaEW_P1)4dPC~v8T_x9q{U1lOVR+$uyX~`=hKrzBed=fL%X_$;2F`(N12~Ob*=1Cso3lje1ZXLid;CUPq7P* z){oapK(*K#62qZEHXQntQm-%KX5?-eF?^WEwjJU;qS88BxV@CA^J>uFSODB!FP1`w zb3<~^Xv$q6bCWj61YYY}RGCJC!lBWqpF1YD)q{9bheqHpD@0$danOSwV~UrI+sVV| z(+gzt!<#lT@bFhZ+eVqdvRYLtuHk^}Ej!HG1*4o7@VsDvLAOm0HsQYErp<$pwV>eA zi$U}kX?UOcP4(CTdaWVZM(|4RozOOO%S?0S;58~Tw|QHKAG;i-?7P+b?rkfL=Ei!t zk7w#%+`#C+xC?lrR#<8&l?C^AMmXAN|J0zIKAlW4`gO<_h6m?8RE$A!wTuek6@WZ( zx}!tTQ~+(dDozEbGY%+UdMU}34lUrrix+rev8)~IPD~wR3hb1{Gb0gU_3zl4DO94W z93ln`I5+qk9?L&%+4&rHm^Wp@R=Zp%?31)h*D+Q+M5AKv%BV(17a6|^C&OWQh8cgQ2xaFOnp zj*o4+eYF#ly@2YW{6sNf_COmp%B15*cl;OYUp;QGy;_H^{Jfh#4t~Yfm&y}UoZl$d z50`DYuS-!;m-lOhE2RpZdl;YiYQ7sIF1JZ8r$RH@(hTwizhmOK$u?YNqm;(h{1V+t zwj3@ZuzB#y107D7TXQiO6n&fEO9rmIM?LHu!42L7fK^-xTHKZ4W$HldKUY<-XcD$M z#x^UelsIM6yvH3I(l}RNr5jbfy;5t90^D2rs&Z0|JbNm+8M8*Dr*X0>w+N%!%7+U1 z&%J*}hnT}8%YWT+J<@_H1St?rf^M*ZilTP(Np83fM+eUjZ0<2%i@GLBB^mbHt*IvyN zR_sc;D7U||=2gizUN6K|UKp_ar@z-9iDeM-CgX?bejI*^}kwx;iJg*lYk({ zkrCOTz`)ZSppQMz$+5}|i=gwu9Zvtk*lu<`@*=46!<6&Cw%L$9hgr`rL0>*Z(tXQT z^=Xa6io>>|>T@#6LF|WLh~K_~AmMq>9KGHPJZ5sv)LQ|cIHZ$4bC5J+a1-RCO7x65 zq5qD08jDqk#R_H&ilk;KjKFJ5hG#mVr)&Dm26AT8&u_Cv-mvP)mma}`zWwc*nb{WX zW*ATxtvBnN;Svr%l0bJk2Krd729Rb%k9YV0pweSPO3dvybv%`q@6#a9^~_uV~m>YT9uueLgrjQuma`uY7}sRpW$ z_Y_Vuu^GHr@$CT;I-D%aho*eZwVt+{ME$CY6Rr|=XiL8Ignt|_Q@^VUX(U$375i*H zt?VzWBSmmOsO~yiQ+CC+#Q(=J8D;I|7?u8++gsvC{12+XAY1UV#Qc&|Re!*`5Z8lK zFe95nVfIoobOqd+xfl-{Qe`dj__g&LM<~{uGz{z4RS8$}?N4eKZ7(HCU#Z%V=VR08 z5;XMBe#Y$35*>TT1=q(VhK^9elQt^HU2+=c<^7xwsOCSK$D}f**nSmh#(&srjb9x2 z=*Uba#1CAfEB?*7P!SC#54G;)xvBrWSYsa!eN3@iufTXlEX6=iDodIqS+8;2+%C?^ zWs>~;!!K3}jgQ~dE-PgY7i`j{K)3P=2z(S z)Nk9&*x~70FXRH}9*=z^8#0tHtWIOX+WGc(`yxqvKq3tMtLDCgqt>U4*&Kc5h~VNC zKDu$_0;Yz%OLqw!b%|aU80V8P!S+gbzV9m0@{4uZkUM!+mJ1SxrJ&7!L6%KPiTs_) zJ+O}O;O6_Zzy_vDZG{s#o;dH=DL-l;;omM`YyLy_!Q%U{Y4>Dot+V_$PwZ=!=#SQ~ zR7I72>(1TlpD@I|wxQzq@~Ga`4b1@q4Sx#Y-nEoIT4O&7jk@RFzGb2sz%d#8x3KI= z1#LPdhO3?2au(%yq8QQtHnFswP+YQ#^Fdl5)(B@()R70f|w`#7dUfh zx|oLoIPikR=qSTksn07a^#(`vHFa$ob}gKgNGr3c>A_R9QA|H7^=r}$6*KMkv!b(0Y|k}CnW)?(_SiWV zYBs)z=J_3e{Xgx!cTkhv*ESk@?+VgI5>V-cCS6n@RHaF;5_*^3!Xu)H5D7I@c|e*J zA#?@uAP|92q==yxY0^7L$#?Vo-fzx(X3qJ(GjnFnUxyh231RPj?|tu;y{>hwYo#DJ z*4wB;Uib=kFl&%?Mw=L`PKv#I#J_cKtHf9vd^0aZ-4#4sr!lNM?(v5Q_0R2$oNq!^slR@b|HC|R0Up`>TGMC%*>;D4Z@Od=EXRoP0Uv<- z;rDpEpo3l}4ME(hD6JZWNYz+KeqG7GV>PF(Vf8Wq@sEeG71P>s@eV;;fbi)u7IXS* zGkKOw;zeHE_$3|kl52wlE~jgx+kqT&9-EH)EcdRvf=&@EbSs>N>ls-^>>bQp_L}d> zJ>RdUL;ET}gZWG)kacD7LlNptIBO3De;m2f5*57AW3_>ijFBz%N>0umdt?%~q`Nxh8K{JWC%kr}9()HtT3pq~yd$btK8c}aghjE7fR=3BCI z-6A@88LAruMV3sf7{a{7?M{2quRH4U7g!*SpP$b+&>3T4>p<9%Q0=TytYP7LZNN~^eSNT4*gC$`={36FHuAz9)U~Q+uA73OMPrh zudk%>xq1%aW+KG#NAiblgyn{LZa~*kkCuv6V43rDr2W~U{rJmRfsgIglXhM0X8m>P z9lZ+E3YRu4MBC3Q5h|oD{1p1pr1@_VDSWTkRj5l!te(`H-CTp3K_F>NnD6=H4r+;l z&#O}F8y*ec))1VoNF@Crm0eQ~FH|%A%tjTG|ISnIWwCKU;3~w8U!x@8BZMzrS}cYH z9uyt8ZaG=hxclt~_1L`?<_II_p*d4b&{Fng$qotc}!gIIgUhC0l^8^%DqH}EmFMl37gkJSt@S?QnUToiO zoEbe;9YqozM(sB_C zL{*X7mRIp3GZA@2+Vjkb#=$eS^mqok}}(Z==O$Jwb-d6LE}IjMs^`-WEcyhe$=rJYLBO zSgO31f@G1seMvU=kE1Yum3I+4hkCaD`*DvQ{QXZ0JAW$T{Q%t0GV7PPkvV$eQRjR~ zIEf9l>9JV<#_*^!$I~{)#bHf&LNsTI9r;$8%uis+ay&A*mc)&eQI@(bd?EBd$usp! z-?V=$jcE=8J|EcON1sQPq2bpRkna$6{eK*RQ8<76<*sT34kWpx#e<(GTg$b2woExL ze4oN=mPkM`Pa(Mp;|PTn>lY^eUaCe5(*nlS4_x^f^`tQ2!@UPD7G^gW+zp1+q1ma0 zct)%|{OF0p-~Pa`sUe|+M@Dq^Hqh{4Jf8r)n;Ljv(4;N7hy|6!A#Lz9yqOhgzC4>3 z0<`_r7}Y~n(6`b16Yoh;Alw&No7$c_R5Nygsy%?r=L8Hi8$B-X!6{)iflr%vqX|RP zLB;p~iK4~JWA@%~?dSIw9?k1Pv9euPbdBA6l=Hb|81;qqNk>fU7R zpp0xncvr$GFv0+Is?A>VtujGh>76%d6_ynh>IkYjDj_tX@)7;_t2c0_8fPQ#;x|O> zxdaI6!%T>3{D%3Qy*(60bxlI!YEaHb4Lw?vI8u4i&PhKUtGnja)jieVGTH-(t>%s` zR6G12*t#|s#O-~N*`xTYi3w2us-x;nA(wnW1;deXfB=f6gdu4)Xde*{t{1V*1l}_> zQTY#;9}WPpQH<7xO@ zo=--G$beKHwd?*CSi1{L0ow?=t&rl@fj(qI7!*$>F(0t^u>vR|o!>6-KEw<*1h!t( zt203pLLM@Trz9;Q`3ik2xCp$xS<%(k3t07uBsxdd@8E&#TW;dM)kSus)6^G#o&Ury zcS`qx`^g(XGk0`$t`>@HbS?#Xjqc)`gsxsY9~<%!Rt)=3S*M_b$J~pKM^{%V8^Q3W zR#zN;L{Z=}>at)Xod(_{kx7)jc?Jv99!8_&ZtHydx1}00VgBz?*sdN<6c?M~9d2>A z8=vF_U}(+Nriy?Vr>hC!qBm5X-YjF2q-Yw$tKI_ht)K~w@FQAZ2FcPJF^a(C zFvJM+`%3sW7wJ1a-7t>H?)QwaZXegtp7r?-^TRVTfEpZzg{v3dE1&va^?W~c@83=R*WRzMS2rESQqQZaR%v@v zn1H7P*HeZ0fu}hlrKt61dPW&s*S0}*DF=ZAsH;~$0yYNjWoPA2)(2C(^L4`p;T5wT zQyn9WNKgL%p8P)3P5CuYI5Pm2(cWVDDfJM|!;l*KWL*m85D?RB`*)@~qt+`?c7v zE&&T?VSU3E!;8qzBAh>Lj*R(=$j>BD)ga$tVrJPD?XTKfDgmc3L9N8s6z1e(xe|r@ zH{L$uggrp;#u(!_UYxWTLcGjZL$1taMmtJR71(`r8imFna6J`Z40T}Bh-9oAcJCpY zR;P|P;p$5N^8Zs1b#0YDKcC53^VaU`I5HoQw!7FGHB3pzXujj>-n9qHCfxl$W zKL!bbIdpzMbS3(g6&c3}$G~H~3EQ`yy}z2AzN(_nPX{%Jo!~+5izG%PD^RA^`jtrcgbzow( zJS>~=*Fy`EYLJ>7CiD^Y_|+{)<7~0-0PmwNoHj!}zwP@#diQk_W!`b;)%_{LurxX+ zli?NfDg_GmqN67p5Yc&94=zhC;!WVyve9f7am~GvP9ip9*HDZSK{o>h z$^vSfO6h>>?v=UpCtg~MEcj^m;103LC|hz{VHwG31_kDj_@ON)K3`-}(4z!tCb%39 zKOlp-vVxWzO2t{P8x;+y7;ipLQET}oFqVmq)OGFrf+-4k!)xf(nbocYNn2W(T9l~r zPi&uRR~t`1>HGb@JP9pEamg4#^BjtKu(%(H@S$GBDpS1$4cs-$seji}SR$&e$oz8{ zUsXS6Z68;Z)Rk0OjQ4cj_z_)D1hhECYfR9#vG@L*-McrB#9+`=R8{5w2 zuk~)8sZFcK&d!a=Wd0&+N*d!%7pIH^Nn{eN{7ye$r)kT<0w~6mQ4I4x%eUOvU`!w) zEb*5}S#uE;#Ovv=omy!O5{QRvOPh|Tf5k?lCUjd6zI4aya5*eqh~)Z*He#U_LJdur zT%+rCAf`Z~VB@+i>ch*A-iX){79>sweNs11PDz^{7**fuG!cy79$f259_ssbGI%4J zlb1+XFytjpK0qJsCmRfR$1?Q^0QN)Z;G(7k-O9HjD~oZK`pi$ICymj9910!0QLGr+ z#Wh*7{1GFFtG198;zec65~-&FxgT~3e&mqDM@dgU z1F@zJ|ArUhP?&P>!n7F2=*M{AH%>ciQB%YD?un(DI zofB4{q+jX=;ks86V?<)|)39wm_e;$@^5vr4-T8d|rihhnXBUj`pVTZOcRk6^S(>tk zU^d0lkY?hDqcZ7@42LM#Hqm<5<#vV+V*+15+iu4GZc2eQn@0G%WC-(qLvx#&?&-;( z@Fjiq9rU8w?8!(HQ4^c?h^Z|vNS%9*#y(f!!q}ejlg;065yhOgldK`^O=-8l{8Dj| zi?0eJ)0b=zu&K{>@LQ5wtAeE39sdUjc{ zeBxvA7cRPfmKg8mL+~o2s`A6%Ujun7IYpHTVi#8YN6&u z8%B?#-wI!x@V`^Iyqc8obE2q}jr5sX{$jhRR=v&FZcwB7s;$zRxqXnk#_%7kOG8{3 z5sDdysEDtL&w1FB&FMe^RXk2?HvH&ST}B|KsukPr=SvRvtMR($uuE@hEeW;98>mqZ+iX-voyNE?1J^#1pw;jK3U&%B6W6R%C( zrnVrq`5=t!1S8nHJz(K94EqXPKD%(<9jh1GD$8rg;4~XMWF9=}|2Eodni%W8Ht_PT ztnPX1!ipD0v@aNRnF$z%&iwfki^iOzXg;D9U?u2r(H5J;xQO#`AoGt@RUXspUAK7i zc`ykF3o9}iYfq;VdJAwZ*3ks6zRdoOgw9_v*z52k8_OCtYF@3hhs$}6aA*uV-op91 znoQG$8p3^nYFW31^5=~cbt8^BdgxivO_CBRj6CFmRpBw<@;>>E;m9Cb4Lg^)!TMv= z9^cx<-Pl)+x?OXTe@)3t^y7uy$Tq)@Cs8Tj}{H6+>5L zOzOM)$GUB&SlqRsip+u7N!(qSVkYw>gyL;s1DE@`)?>ciYTcugYC&t^d@ndz|Ax$* z-drOEQu-gfDiouJDG#X9+3gE-j+n_}eXFKV*d)f*I}-=*d^lO$jix)@CZgV`^_O4R zZQMm0g)>WcpV5quctZ|SC*p<*3^M4K@^8&-+rB?J0#ymgAiN%~<{oaVXFG0xR_wO( zs*d`w=Zf8J6r8FZSNrPmf4 z@-{Q8e>+Q*J5}%8tFi08;UkFT?lqri);OaL_V8+UdC`^MT@m)VqYrsn!s$QB7NnFJt^DUm>de`0 z7t~|?W$6fq6~-nkD-ForM2SO2V+TNtlrt0qwL^YSdj8|LRQbQ11zaK?5b6)J_sehy zp{>mNzsA_ywGB8;Ri$84W<~x9wh)?-UVPiTI^mrHbpKs<#6WY{3WEWFUmh_Ju{PyM z-dc|FiwgK+lNG>#8V9_wH$pS_f@;wWVnLz<%^kZK+7)Z5NQwh|o%(QbEQ{16v*niX z#ULKu>90h(9Grjesp@%cLO_+PD1FFbFzgsManEa)1#1?|qBsfRYp2T6v9ufZ!VX~h z{HV7XDd=bKJ=KjOblrRU92G{o!a5O^;|Rxq6G<<<;S$2Vyi666m`O-3qjF05?z`vY zpAyj*Rn)}40;(wg?PV43spwl*bUzmStLQ))6$AoK>^=(>{A9Tc9yjT$mV&z#o>E@< zl4&TanEhdwZi7or<9b|o7d*(UfE4hy_0b40jc+`5YDsD+B$7&kX(a%;mIQ+|Gq z-xE-AxUHh(QK6)TwHy&Y+pD)0zr^xksbO|x3DmMYFhKxDxcAZjS{`}TtpkR=^r8%! zS(nD^w_I1Or$b&CUwK*AQ|*HObOOiKB>s6r8u+fgrS+>f4GnPEA8#md(L%Xxr~P5vWR>`halbzg<~XqR9=G$x5##>X zfG}v=>s@8)DN4PM+veaystHo2@#B_U5m|<+Wha0|eDHfLfst1cUvhlT8*s+c=tDxK}4+nB0}dZ@+U^$#wtK zuNkj}t8?DOd?}7EVkoz8p@NC+B?>gRj;^{Djl%4b;x`D<#ab z8_Vx|>Mt}{!Q3+%Dr$-}%e=bV6OH_Y8VGWysygmjVw5m159Vyv$=;J0oOC4yzn!z) zP+Jjx@u%rpN<*8b+kRGY(g^)hHfc7Q9T*=K4#Eqv>kbO7bJ;! zsh;qw#;X6w2&el|FTYTs{g$c^qbEp4|Ko+aQ34m=V%cVcVbm7bRNEb05J3l9e`bMm z-!2F^EZFc+jnm^aI*sV6y)K&5^bQuRSDq7m@LdbK!$H;@_)n#bcgydyg(EU=AoXX< z0TB4oLrcGO?n{>n*|9&G1$2|?Z>Z<1MgmiL5BmzGnMEj1gO6(r_hV`8$zY9{ghkX3 z3UQKUP_}m1H#}dwU5Gqr9}-9<{$`!#K}!$+l1jT%YcIsxRV3Y$IME3{bYRm;}cS zl^6&0#Y}{r940)V^9RR`o4^*KgV`XU{Tr=K18j?`R(D|78_=_d!@eC%2OKClC?-N& z$pm#EILEHRpw11G&nBeET4+uDIidnWN~DUcN5SrqOrWnc8Mj{v+m3MjWIv(v%_@3< zAd(c);CyqnxgIs~>{n=P_AdKVy^^qiU~xt z(%=q9;6Z_U@4d;}$bTds zGw4iijU}3Md*D-IRKt_BS|D+*9$=%JrgPr&FA}r;@^dDd7^$>bH)2+)X3Y`J=$a)0 zpA&qq>-eYYq>*z7tm;Fq_jd4@EGqf-?2QwF9r_{Bfpw5|3a$Z3;jOKQq|BqV#H~eP zznz@l=s-Rw&(BE5n%E~OT#yb4)>O@4EkZkYBzICepS#RWoSe_p)kY$W7xvBKPsc&r zxRqnFa7cO}$ouUeKRK6hdM+(}zhHMCqMvPqET(T^zW@Le^mDw)Ht5dp8W>Upy&0r9 zm#;Tm{Gt@oPUC`mT~vA=;YY!eZb%N%6O+hg`GP)5_8+Xb_u!_F2Wi{ z={do-1wuVjGmq8JKXdyk&Oh{YbPP4NkBB?uH`Mmuk6)6qpY1$2+=YI>)}$iU?spze z?yK#18HvSq9&}-aLOqY2?Xx?HyAFGp`zO|>olZ@U9HV}>mYpZP84;uDaaysSJbI?XMxqB-|VMAJrR@NF?ej(IzU+2vc&Bq7?vjo7d7hFdv9 z(gb{Z_hz(MnaF9V=xzkTmnEUfC@>^8gNj%$`jpgb|eM${G2*56wfBo_5odTS8 z;j?++S-@O5&t#CegmZobJpoP)YUe!Wu4?=9yJBfT@laGViKnM@{Xyjtkl)Lx7NvZZ zHUo$s!GV=JSpEKjN%iFBNS_PqfU<|XKtW5r;Jn^R)LcIHDF}X4Sww>M!xo~FdTaAO z)c*`h<4-w()F~Utk+s1@i1+5BJxL<05;kQiY%Af-Fr&Nkus35Ji7~hsc~&X$p5Vn@ zDg~!Ww6Z8<)L*^nEvou}f8#XvVu%9p4+cIuE5l}S?c6NliIqWT=|!{5sH8I*HBs3b zf!&Y_VX;y`@Lv#mmQjRp91dgs81?v=#2dgP{laeT^eJ|a=A6%rTTy4+Co=MAXrCZ@ z<(M1EO0o&ZoOZdB${m;8_$Y{*&zu45DVl%@{SrkoA6-^bK16AVP{Zx2?a5E(p|WzRbxJ$71Al#N_kN%eNF0}q^pb^x zltjLV7#Hj=D2{y*%5W>1-l`bdsb}%Mw!;k#&w2-1>c<1dy5fQLTAmPibCF<7qp|Gc?}6AC@FQv@zac?L3B~4!?LvP!%;8+Q+2FI6;@tkdoL@S3%0|go&fWp4x za1o52Tkh@F^yiccTR>Dn8pt;XlBC4xc@>{?&5O#7Z-$JWQb`&OTWd@vc%w8y{LBMF zwgTYWCCpVc)oxGOxIDKsUG4m3cJ$77wTAt$Ca@Hm#AnBU|FKL=^}{ltE@28I8-wMT z-|ZlIofht&u|ux=*EL>z--cX}|4jN6J<-*jgCh&ZQHJ`ka#0Dj-^9Vf@_cinmCOuF zYdJ;SXbS|^W=t;js-aM;@}Z|)9w?ztQLgw61{hK&jG~Ebm7E7#PFVs&f_z9;AhyKXA}5HA zzN_y9{|$?5b5^6om%?lljh+wmqM%LbLpwnUqx7&6=84O5t6^BYxle_@q}2R{%DnV+ zdh9Ri4wntXn)DAds2uk%B=i||{PRr&jp2LP>sW&tO@B&(wTo}~b9VcuKD|-)&45zc zE^w?K`4So>Os|_R>Hvs@H~^`e&KH|tn2Htr3E zb$!hZJ`&&=u3~TTo8ET*N82HOqtJ6bc{F>dbocOpDAn-K&+D1GrB7B};XrP@Xc^P| zMK(>26I>W~+D{#i7xuI8fM&BfZR(c(@uGjO-Nl=+Nh>O3T{|&~pD|tanJ4eC*kjcQ z&(6sx0o!OQEP5NdK0kJ>a29Cem=*T8e{IX#)nUF0b#O7xo0&FI)lpfM-Xg>5f&2sF z&m<^?cK%2o3OPvW{Bq!RbZctt;BA*u_yW>YO@pleWh`ZVb5cfs4Do}wPv?<#D^13% zt>I>hvg4LB{3FC*+kDjp;#0F+>9p5m zC_0(sd+N?Lk5RChXWwdY%WqVL9~n7@1xx3Yq6u|8HAU^gn=!P|Gnt0(1hSKAbiZCI zA$5bxnW8GoZ2)jIexdxR^y*gK6kS4Z{ty>zOWeCLzzTzX?xVJWsk zVBW^6p5wdOna|;$y`H1d4COelT!W)L3w{~Q=Z~RY@^eT+dNu*8Nb!`e#%q+ug1z0w zaMQ#6;jl%lRX4PG+<(^6W^&V3qbc%UN;ck8hj)DTwXgh;L!bpRV9dfJ1qo=~zLK8_ zd2#;*<#!;t9H{58L!SKR);x#^?tIwbc`lj@D8!{kgS zBzHYhey;olc+>Td3CF%!-hk$%b?|f`AUl79nyj0FUo{8NOg{W$v5baZ~52{MIr$@7B&lz}9s*^eg?gLvtO zPcV_6I0LPK_MKi?3RM#E{s@Fp9YX$8LoRT5@r>t!4n<>d)N&Sq zf1xD{#-+8Y^&z21>5H-8N{*ForbU_Rp2q51JSbbzLF0!%n~+|q(GgG-CI4`1dXin- z+7%8@U>Bz_sf|fKZ%T(x%z3brciI!^*Bbbop2GeJu%=?(z!Lk`~#a=_g6Zq$bJ-wZ69cbMaX zIrVSY#UCoChFpqD%BA-&)pYKcP#6AFtgNs7ZszT79b^=B4l=JCt3+3t+-N)RIGOkj zAe&ljBZHtb7OvSNIgAwNkM`R?7!L)&?zg}QqBMpO|2G{tPzqxh&^ZU(H~6&3z2ue+ zQpunVbNFDM{&o_ncWMv=mE%5y;-%wssx zOhO+jj-&*}Mmxoe^pj;BVZ^# zie*rL%q|v=IuevInx<7yvRwwC*~WBB4pY?_UzsBx`R6$x(vG&R>-BoS z+whYeE+;QlU4qs}4n~s$$C6;kp)^K*@!X4AZErA(Knvq0naw0L`ZXf}j!EwCh4eaz z=smfWQf9NEhC0dBUZK2sLPg z$lSgF8#D^nZJLvO@rLJjg{pzA<1Co~0Km@Kd>oGDfu5;8thB3o0%=qAP~^_4_n*)WUCh+|K(u4>GAl#fum(#|8fFy?CAkh z49HwO6T>)m(Z(_H+otSVx$6xF9ezrZL$!>lWc?9v`<%rXDp97j;X@8nsz86^5(n6X zf9|VPxFn38J=RBeqZ*P18&gM>k%w{_GB=O*jYcw~GPTeHs2|9|06sO;T}S2hahbdc z)Trvw*kaDdmz2p7bspnMfS!TxlpoGnPaTlf`Nt2(s|DayuH#kHS@cU4Q;+i&&~jB_V{7+fkpaqjE`2xojn7=NuB$=lb1OcaVHPtAwDV|T+QNHTO4 z%j2YMaPy^HzcDH{ zvc3RG8`JboOWpM}HY(xr#5`H}F6Cu$CR%MF-xpSE#?T|Un=PyZ-ZRplq zr%4=$o6L$i3JIW*)Gi((PV`^#o>fKnvB($#Du_Hu5(7aUfs#ngw96$iY$)z`b=T*m z@!E5J%12aKGAy=fMjs&7Ni1+|S1%%Qp|LE!YUB+mb*uob4ZdR8T(n62;-vC*eCJE7 zw0%wyTmQyKb8nZqYaNh+V6Y04D9KUAfflr{q~#JQOGdIzwh2*jf{%9{`aEdDe+OUQ zRCb3mbw&nJO0ogu{t9$!7OugFXh-1-9b!1CF8Z)b-)^=LMWh?zI(c1A#%p_LO=nI6 zCWsd$sQ(t9)9yG6MHj8dkRh1xo-nV)cquQcbIuT?B;|KFHh*D(in?ATIHlA%dGw_( zI)L2t;@XJ~U$zRucj^GlgIp&S#BVskRANRDJ`gXx)l{F)=0~D)7WVgs^oL*U9>udDtHQ;mv!|JN-q)@7lS$b@VQFkSGsS_dC7uW6M)FhCZONbIAWkARueVB z5|`}*K#Cn1p&6YAHoHF1_ppc=>dYJY+f?Vbp0r6hFgLg$;C{ALb6Ls_k)pm29K&RQ z#CAod?tL7qWb= z-1&4NoU0nH#>v0&)ndND23Vtb8$XBy8Q>4IMAw^d9jbzt^+884y+#V}_(9^e<4NyW z{$UezRP4j#6SYW<6B1j{hWXdb%PhHRo{;OSIhnzdzIqe80gRslCU$c#+f6}(zc_J* zH1Ya{ovLaQs_nGq5~@C_A^ojxxNWwIKh{3f)>*iqXo_{P$GwWt#&)lJoO*ZU%_lPv{TMiHrhV>`6*Lc0RrQ?oA?;O&D&vsD=bW)R2%oLxBiCaXn8D1>btK7;5zGW4an{Ns)9k{S?pO zz^s17dI&%(c?vhn$aCR0P>z=B4zLLmfQB0l6Kak=v^?=fl4j|)$VmB2Hzgq#;ME_KL?!N(o zvGbe!rbkLt=|3DNO}FmIVVrB;aKNZoqMEiz^Mq$u9Ok9}X-AAeA|2sn5_=Zdqgc#n z*C-j(icg~Y8HRcFVUtN(zb1AY@98bO?yB*+xg}B|#TRa2yiemY$qh2bd)EJYGz^a= zUl-RPZHi`S{GR6g~mbyp#iRAS~k4FM2U-AXk5y6P1$lnnp_y z1k(ahv7iz-5N2pIW<$#?X7}6skdK1?t~n2fsF>YSxt=-g3Ix{7L_MHZv>xl zhN{|)1CXwQy)8!mRehVikNB~DPHCU1j$U@)rIu4Isx6N)tOeMp4ksTrMeM7WEaq7 z>Hy-SB_xJRrBVG${8(*R0F4@W8k`7H1sw@QkTBgc@d~c`8nk!FZ?9f4yh&D+*hX)Gz1*NVnDjV#dlY&A{W-e_Yr6$RqT{E;70fQ1l#4Qv7{e>16K3=IKg)BT%Jr z)Kc(^&W}G#i;WL0OPjE}YeogCQ;UoQ7s_2u#pGXst zbE7&`8F8Jo#}A7^vq{6 zpcOr~G;HOsq!LqO!5-}bA3Nf@>n17?-}4I&4gXtwcg)1I@Ue~429O-F=$<~V1Z$;k zv~j7$;*)G1OagqwK)DnPc#yw}rxVY-cd20jdr;Lw+1GvI_1{Yj`NdlgjDTYE4}l8L zXa&DpR6M@w_0?C-TDDV?7cs^6hv{>85Z!!jch<~+?zNq0ISiDxE_ZEoo>*I+asSOg z2d^N+&$Bp_kbO-+2pXQ`>(Lfa#pU7EPlW|4JcMpF@2Gsgs+JP8+507QKV-9hd==0n zD>qLJR|u3Xl(hX84nGPV=s3i*KIj)6_Zk^U1H;Zp2D1r&=e*1ndEybcmn{4*?Wj3y z)ZV-P-}JN4+e>o%wu=DxFd(abMScPt#s7UG4v}hIcg(i*TNfGxe8Cy>~$gNG}0G6%uI*CzVGa__dfUDuQnE?}w3kHEen2Zed z%ps5?NC>m00;3Kl}a zLntH&1q1*aKm#mL40cnfeW(W(fxsgWBm{y&Z3`kS7JM^K8OU=b8NfOCn)O6rdiE0(-F(JeESjQh+?*2cQY6 zfgM0UAOREt)&LBU1}wo=zymY}*Z>+}QK-&Qmq82;5*|;X8VU4)wjd&r@FWWG703lF zz#^VP!c%~cz-eFr;03k=qk&prCGZ2#1l7O}zzGNj3IS^X21tWSKnw5yjR7`*rcg&j z-3^vO3=RsI7%&p(18qS>qEM&<{4;(ki$4>k&hyWZsHFb*P95(bE2$j+xI>-xAHh`0 ze>6~s|A!V;!Jke58e9%wO29mz=})UaSK|NsAD56YUeJ{BwxNwL1agdx`b#q~6|oPJ z{C=p*eimL>zd%PH7YND%BVcgD%h%7>*~jg+pMdf?McK3R838#bArOv0BR!;LQ1-9*rIeB9#5pQR!T#K=#|a%B=hl<(QIV5c?AxbV1t4 zyA1!MlO-kz!fSy-&Y9jVxr>7^OB`JVr^EobU&KK7il->rFuUxXc@68f2}PG2#7PI8 zGP`maiE9??n*TZEYKG=F{vnS<1`|iPZ=+?pXVkmZE3}Nr;?)t9D~5|NJ>#xJpyz&J zS!!!Nm!(VGA_LE6+RKy#bV_0plH!VLg)DC zl1Fm4nB3Uz2SQFg?Vz_`uiseDxO^R3RSi=lQ6Q(mj7K(BU1-_n6@6f+Md`|}u*U<- zkMiL>7UkEA750{YatCX7Ru+=|eY$vLGRi+T!DN>P74BX_|1kn|VfaMZT9-(#}u7cKcquLtQi=xP0SEb@(#uX>(O)H@PIg=@ye! zx@5Pj*E^f7j4vm%%qm$Z1YKESYzaTr#!kwcqc-7 ze$zM8nxfKc*;(O$lGsiyz_8D&t!y#P(;XzsvzJ4k1@NT28A%G+uW>bayboC(x#^oPln%CyvFW%i80*u?(=gT7*Y<>cSpzclpy8X( z^=$i0?ua;Ol(Z2v%H@ra5%7NXZiH~X>#YI1vg_;4627eYIty1h{d!v-FnXJ zbXDgd`MmBxXQKFc+0hcG*#;Z4k8L3wyFyLIKQ^q3ue^~;S+dAz!e1l_%^Ov;_#9`6 z=B}JL=hHTnQorC7msGW!Ubb<9IB7cbM4Whm<^CQXxw)KJd-^f9A#-jr<#S5A3;!c* zuw%~=w7@}b7(Ailx}>3%OD4{8jC++3KKsEgVy#KCc6ZO?p4;@ez1d~0kxLg`*9lWw z56cAP5+p3uYLQq2x!xYoGKL5L%1PZ|H_n3kMZOa%0H2;`ySPzV6il@$NqIg zt2Z{hcPI24L`J~B2kdt+SE;{=_Kx}TRlFQdEZPOu&3I(J;1gR4WNkXw$a z-Pe=;aKgwKd4Tp}Tkiyp#JCXpsPh5O8lwyB$C@F(NQ};r@=-6zsYxniLE_^5{xfo4 z>6w3~Bq(fs_dq6l$mHT??Cjq%@#V%{Rou$)KrTg&+6&hSb`Y8*1YQ+5LZ_zwl%lP; zeJ+g09l=SDTlM{2neJP6=lXy>2g{ZI$=I1a5)<_qRr@r*aRT?@;6iIJ_2V@)v?(Y^ z+w1N!jy#br&=&K`CcS|?X!464gSprfuZ%E$T-hdoWNo*?z|D>~$r@r5yd+8mkh*fm z**LoQY@lf|{IhwhD$NxE_s$pIoWKa2?P2|GQ03vp9I3Cw>(4JDp_90Ff1kbCCc1#{ z6nm~e?{C+W6^+l>ru>G&lk$)H!#B`1r>7haq}jAOwH&>1ED})iZPi?V_TR2-gI(Xp z@8RfBK_Q7k8ef^Wf0^tr>kEb-VTy9);HdWeEEHw+sr5)^?G!y@Y@hSK03~vhov*E` z@{@XGOlP`s*#XF}Zdmk+&M-uotprNA&sc(k&~&Mje4VbfQz@2j*WU$)ZO5lTCdkaJp$TUg*69 zBm>Qp|L*JJij?70eAYo=tMBIF1oOL<$+BS;aK5b$7X{w z?eFUpbK=++8AbM>R5$g*H;0EJS2NaiYnP@XJQwk%tYN=vMpWb1w+$%U`o*&+T+dhA9C^zjz-!WrU zGCJUvX;VVueWSuNCt58zFY$S^nnHZ-s@Q?OIytoeu9Dp8fnYenYJs@^gvTaHAlCX6 zIT2QNDp5QfyIiSoD&L;oVKrjEMG>2Z`%CIysSr0%Pa8?aK?Zkm}@C zBTU~6kA+-fGi;5}@u0T6k+)v8YGb;Aj>9khiX~@^xCU3x7586Cft@t&OcIN$uUOF` z?p1bHZFtG0TSmDK)J_bLO z_wEVpo<56@Cl~2PhT&CvcHmRwU7YRY6isGS?NZ=wq~_7d_cj;z%U##JUS&Los(uSW zRi}d5pX1_8ZSZ5^+ne!C2-t*WBauaZ%B#?N|YK*ZsrHS3t@S6zaro50q!mD zV(d(f$J~>r0!b&_hW#fJ&pD%5C*OJv_nmxdUjKIQT;h+uzq&h^k37n^^Utkpj&AJo zI_4J%wvHEmC3-!?F=W2=9M)i4PMISDh7ZH?pHGZvjf@)T8wgs1md_2X zF~O~AIi#mmgQH94q!%WaEwsTrOPy%Zp0^u$u?p8#Rn2ol4yD>B?^+4kHhm51SnyQ% zim=OP2kFn>ShcL(zuM&SCDMn<~7ft{Exm8?tu(6!P&3<^k94P|o`|-a7k^l_L&V`FXj6G{nBg(5ox=SoFH`JzFDKxnDcD ztx!Od$mB6II7L*&$1+v&^6Sy^Wq&Z!S=8#td;zA$wc0ntgU!$9^ZpSx`~s?augWOn zs@elwh)91*53uIQzQEhR-KRryO-5}YR|&0GS1alNX^5i-?|pu{2uL`~S5{kQ9e%oj zbHsAb*oRJ9l{C=Jqn`;h%x}c5_Jg?x4gA;t_6xq!@WtR5f(WQq>1)UQbj&##+3K~$ z33{#4P9QYqXcPjW2nd~z`MvY!P!~UHAacHAcmab+yz;UZm$ti zijVU43T4Al-x=ISf>g5NBr}3Hf(E8D7CRKYL>mikXvvFph9vRJg@Ekm!I_0ox1L|Y zWFLc9ef6}BOa3?UpB;SpRC4`hbU4ZPdqlPdU@$mWZ)LG};oz$al2Urj61t_euaxq% zw;t3Je47)#Gyqqe6tfx z-#Gq0Uu|l7eqL_-{^VI zjzU=Ge6PI9OCjU2k2y-W*i!tqOvH>56PzZ@zphMTt8R)r1zW5u0t%5a1WQR zvsppe>Icrjk2dtWxi1CRyyTga*~uAuKDp);5F&8ft2yC}nQR(Y-C?8Hu{8M4$t*c3 z!TB_evv%QGxWn+^fb$OZBZrC(C6@3OXSvhw4khcA5~WI2>=GLUO^?MKHMrRHk;jg? zgL#1S3+`BG{L$KbeEQZ#hRVH2ZZi2dvf!Sl!OJ9B6L#X}PlveJLuKM_(0+bNoA2RN zgdU0_Gkfo(Mrfdhp*nZNU*~9w;*UjH>FJkV^X6L23qJx2xg9+=ZE|V1ncu^^*Z#0Z z@^!7UPLcM{N=+WE&fNs7zW!dm9%fe?jSek_96~Fr6f_W3P5g~?5#ya#>-{9GQAD;w z_ull0G`^Rva!RW-iO4-W!0K(hb0%PRZkBDyd3wBs(6<#Ugskgi{%&6^H{okt=txKm z_MkjIlGEKX*RzC*!$&;L_A?ANp8ulyBfQ#4_sOlelw)0;yo#1uR@3k=af7~KbJLdp z$$~2esb0e0<{k{S?nPw=!4Le4zq~?ca&a{|lsZZUNv32+J_XrN07&Hz*GFu9S51`0@p?5J^TD3C-lJGQk^q9cFR|*|1(3^)%X|VMv*}S z&V_bXW;yA%r5hOL_>wk%e_i!vL5E=cD)^i&9^;xB=5>`{tbYpv_y#Y_V`+Iz399gk z<dm%(*2eRpL;Ut%U%qB@@iL`Twmtm3T>B$&rhV(2iBM0z z+6(zsBikK5(9NKJO}9Rge}5?dpGDsN<*Ers!VQ?Cdshdwks54XR=g7#&4tnLUFin? z5u;=OE#`_L>Fo|j6Aj;5C_jSmdOILR9z~Qmj3(c0Gs?8IBMaoI?#w<9C=yU(JIgU- zr>RnTRdR80B0pbtz02_tebncl*-0%@cbix&1We0`S6uWp&qyxbl*JkxIVtXD?lC8Y z_~mAVRIPuuZr1c%m?kbop{w2}?exy|kK%EPP0wXI)qXjNsaRc3(bx3<<<@I^OEEHR z8cVF>($VyK@!6J1FmKz2_TbMK8Kz}u$8Gi_EOzp*rYv;v%!_B-XnnHNDc8Oxuj^J-nWp6E zK4;YzZ8xj}PxTI(UvLf?_Jj}VoASeE5}krSq@2s^^)_lsa60`UPu=Q_A9kfOvtY^J z%D#m(H0&xB7(J6*+Edpt7IuDo)#jM%wzO4Tf4e9}+oI}LJN!v~m2?}%`xvUTZYEhW z&t3ZLo8gI9RU#HeOsRq+Z?ucUYKU(a#~isw{CkJ8I_qjuJ))!rVex4O+#_jD6}9(- zW^HXg*6XCXLE9xtlb4OFt;V%a*AQjqNa7g=vcD_fJL-Fu7SDty3Y@C&y~#G|Gq+9F zyDn)lrb~^Ux*O&(-1*pC)k|9L#-nYi(z>FT_Uo@}EylG4x$MkW&gapYM6JuAoK0e< z=6yQ`DsFffRgZ+3Ux4?tun^BkZe^ll%iir|6m*HUome-j-_ZQK>Xt5ec~y0f`tnMG zpGbs$wy}uB`Sg$5ULz`^BqTVgDO*+?PM(^oqo&wF%G&PVc5#E0Qy@bS^nZ8NS6>zr zEOrT1bVr>C{bqBycyrIdosFwrD7tA?W~J`siK`EF9n`Z5w~Ad&)?_d&(MB@MYv%6Z z$=9c*3U~S+57WYC1Qc~O$Zq3Ph5lRwR~#;=(k}3YzuHah3BMORBM$z=YW4;i*vtzv z9jjRx7vYWD=OGvt21Se{^i0Fe2jxRgWzVY(ev?IqqJBv0-sIr^koEwlEaTH&=iXeK z9oM~dR^2VB{mo8)%_r6@b`iW1qvLsIZLWW*UE{x?;-bl8P$f!zZ)$`x)2q_ChWihk CJ2GGZ 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 deleted file mode 100644 index b9fbe00deff6081db30bf14fae9d942fe652f8dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6110 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�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%0Di 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 Ljde=3Z({!oHCeXA 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 deleted file mode 100644 index ac4f838fe261c5bfdd897368d9880ed8306e6031..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6763 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 PHNC2$rb30hMaX{ujY)wS 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 deleted file mode 100644 index 587ff1d145c8f6f32cefa6a2909b6287cfb8733b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34794 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 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 deleted file mode 100644 index 5f1d740b817a6872d1fcf9cc03f6eb884ade320f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6721 zcmch6cTiJtwB{891P~1bK~W%53>_gLh=>H~B7_zYRFo2$QY7@IfGAxlVo)Gbq=X{9 zgCa-^Rf-@1rAesLn~=S@JF{z;OVhYpf220DuAj8~_jifD8b%qX>lpP&fcZ08nHA zMLSC3Pyh}G;0OSY4B%)-wFDGEzySmTKp+DI+R;)n3LxVEG65iy0Wu9l0%$0Jh688> zfJO#rU;tu+&>$AL7_6op^*K6lC=>yOBBM~Wqqbm#!=Z2l6poC-(T-SvNdgWAnza_%S%#^6CF5NJn6g8IO=U_>Sp z$TZMbP%g*744m*!}x&xqB#8;1Ibd=N=NAS3=?{t_0 zmy{V~?D+-)_*@L=`@T@J#Mk#~aboD+3R6E)5Qcxn>3gvT63*p6S~AKg2{lAEYe;XJ zk_kyII(|kfb9$jnqcb*MT&3eePl*Tq7Yh#8{4XoV4>`CnLn+~s==~D$g{}H;lkz{g zLgEiI^zU1^$`{di`3Pn5^r6dY&gyPT?ovk+Pzxba?(%i$cBa}fABb~95(h_z#yZuL zh_zHNo&~0G785g_%ZonLAmO{?^iPSc;bQP<%0tC=?Cu=}xd8F%B6>(-`MC3^YsF#_@Zhk{v_I}q1u^jxKLXFC9~olbe5lSNUIiOOW+Dw6!xDOdbfj5`%ke5b95e}lR^ zVlY=aBE^~gHOcla=RR9__d%g>)7!bXIJ>9l<$!7bL5ZNuDFN%Rxd~l-c3UYvr!#5@ zE{d-PJk-N8hucl9TcwinI@A}>{H3hUe+x&f*N-&NPb9AQgzNWMYhEBwzxGTL%$Zu? z><`A3lnkmDnpe|b2&AVHTri^+b?~v+va{KS3AKi1w?D|PZEkl3=IeVq!O^}cckH8I z-!#d}51!yDQZ8WHLpHNWSRTObU0Q`wb~fh34SAk%CMI>?)y9rG!Z+M{BDmCf9&~gz zOA9wN)KW^m^0n^@Bih_dAB%P-%nH19J$*1!Nk9B!Lv&XY&!;z$-eDV4vcEU*yeWBi zgBp_mKB=0qN&2q85uYM+id{!$B{Xs-)sSO2bobu94!(Ch74d#Low=aml_G3UJxgG}DNH*!k zYxO2Qch?No+7sC2)iu{0%@B=;)_8uHSBh`oRvfTgoea;wtO-|GRA)z9b%a`DJXyCw z&5|%dnOzDF3AJ%SW9M2LDyJtuyj#+I@6u12zUN}wkwucpRrVNZkFt7Qi0hwU0X_G+ z_-G>1EhxsiNd)&CyL@qVP}iK`dZGiBv9SQ!jf{S5$}HBIpwR&TlRw#1N1v+YOYpZF zk80=FGO^`G|Bf+DTZXisb6IV;d8Jg@bR_$PHN0TW;Y zT0&>ESA%z$M*B>*B$vhC6P$Q+&C<0qE6)($>9y(e%X^cm|8lPmEppy3R{4>+LQ}-h z4a;CpudqHH#GE{v;M~3eC(U8UnyCv;@%;l0mB**B2Q(H*8i zCV#=I%bd#fHdu}K9#h{-Kh6lg`w|Iul+6gjcn2@cJ3?zdIu8xKG3o51OD_8c(z4f} z5&wi9!1-F1^COkc)P5QwWOgrrEywlc9CsL7^q|)?&j;&iNT+@-DHK76&wA3;^hO<` z`{2Psr=JsDFBY8l8?p}bKb>G7h$ONYRK1m2;^VmfdArMPpZLf5-gq$Iw$hJBnDpwD zCz1ni5t}|ChIhD#DsfjfHdHOCd>l~7*=TjlIT~?)gK3D5!&MbT+2n1h*+fGI0T(RVnz2ht1=$5Wrm=A=+Kx{6<7ii2AN^{KSOFNf*SHzNy;F0cIX==ZXQ{u zt7`8^ftQ6z#*VFuR#dNLc;+u+Rp+c}if&l$2pxp*q6S{8>d%Hr)!%$<(@3J4rmDJ^ zSJ}S7_Op{-ww*l2zV2D@Z?|+oVht~8K+si+Th?2@UqlTWinIV^y}6`8L?k*3u~(V;+ljqhkCeBx#uOG zYmwu3d^SGsOV)@+A{tqeBZ;HYN+;BFvt+3;$2u1i-TH6WdUDY&I!AG98)OXeSZUQt z{49R{qt|uJk}6Vq?i;0sE3%n46J?$GeSXEaB%^SOOQtZ`=<2Ks^H8z19%+ovU`g?C6 zX6WAfIW}XfX_!Qivck1CC_o86gZ@x2g+nG~FZ3}!n$ReNMx@P_*xc~A4Ci&(yIRPA zXzNhfmbx)6NU`tjJR5;X?0jPqfP@Wn3=!o5kcVA6!?m#M_A0@%3FlwaqFZ6m^z@LF zpbRu5IH&Ciit`5I#f$Tf8dgvU+pAWxLdaQY`g^EU$R$Xyy|7LvjE4=%|K7-O4h0F; znhS={pLmL3t_cg>y3Y_SJog&bbYi5SBj`>1ZX@AdJEx5Z{i%`@1T5tYtsHx3RlwnM z0+J%kdQ$lfn}1&Z&1rC#&D*%KQJ5OWyCIptluRDd(m}pRcj17}7cv3{crpY{*>sK2 zeWbzTG-xit8f@jO3y}`(Hy@1o@_y1;ITm?z>Lf%WG|t?kRKEYuj*1wgLu`vreFT`{ z-=k+VgjN@Hto-_NZdXcLaU?GoK*0^$urPhanlzUFy>JE{=#_$+h(MvJdzI#$8j1zV z2a2g11PQG9V}@?tlMy@E2C;O{$4cHNN???A>3zcbZ-iTHJQ7GRqXlXEn58 zm*oC__-ni*aRQA9>6Jh~mU*~|R&42*)-;@IiT`j(s`KX)W>rZEf6n?^BkEwiL{b1N zymGXTjuK}ZnQ*sXtY@v{OvC_*?)>tg`^Dl-VEy? z%tvA-Bdq8x?yBEU^F`md%jTP%wqcSeZeF$!IBbYR3fC;$-q5~mf_->jepHI z#IXUXto9AgLD{VHqvn7AB(pr=A$wnDHPh)Beg~Fib6r3syf)Qqy=*XoRXighnw_=E zb6rS9_Bt9_o7!mPuq0*E%JBMH52EkM+eQAmk@oLI=u+bMym`)v7*>D0bcot<=dz?- z=JZPTX>thIy0vYlK$tC>VXSad?`$$05j5Smncp_?S6XhYH#?&Dj+iZZcia0UayEbF^WN{pSSO7d}`M=yK(!FcATR690zGI z%pUvX?{BN6hbdVV_PMp5{%?zH4=lA`)>Nd{y>K|D^G4gWB=JL# zy4L)dKW)ARxPY))C!$6W*PNpdCul?CD-v>0^mB+h;zh!k4`zjcx039U;Ri55J)ypj z_leyoYNjr4(#Pv)Bd6Ya?o+cvKu#fp(46+A<~Xc%vZue!w~vr4&l{Vy2pGQZzBM^S zTXg-q0=&*bI@EH2P-QpMKwHm5e1CV{fq&IffK~KTc&x#ff8yTOa^aA zW0#)GIldgB$c;?Srof`hFY*{!_SnP{xKyVLwdKo9Fu&g!BZZqfCpv|>eJ>W^hgdfO zE#4qDH6s}QtIng~!b?7^YVk0Rr7&MQLFFKNwNe-xdP0in6G zDr@bn@5Iy(lVw@>F(xG@H%rdtU32`a+vLxo4&|n{JL=Nr{q9VoFL9|a8%3LO)ag`+ z&ZnK16Rj`|99mbI*6_U&8EpC)d+VT`CvcEESGOS^ukK9J$oN^knpxmwz%Se!e`u6p zmU2<_4Hd#cshn>*K0)0_iPhjYyr?2zvUC=G+B^pz7Lkq~j$)s5P$&+0vsc@CkQ?IN zzm#!|=Hu7Fj55x)*mq|67u+#Q6ggGZ1l5NKN!P#!?qE%-~1LM<W>ZaG}y_ip60G$_j%p|Fu- zBnxIcZ6>v|%Ul_51nkqH*?fW%#O?DHwkLVV&C78Y)pNc3Z|it+=O+i;G8lURZjG1``rn(r77dXFDDFMpLwFZdCgy7E9&)Tsl+&{*u0`cv^3lW!Oct@Dkkw*_={ZfhGN^X z28rI29_T(Th+NW5%nb`6le}m82s#zhh-+_MtVl$i3fD|AI+dgdrME8Dq<0-xRj+EyDrp0}&pLBIL!nbgSJ92P-2_GC{?wO4@`2fTPPh9p_HoT5|V zm@X1N$#ESDyu$cb>a$pk(4hromm~Or^rL-=h$I0oUVz^+gJG8@upa=}>FR=-qNu@z z7tHLCCvC#^gDW;Q8EN=Q6a-MyynuGnT#2!^+%fh;;!G7HHtXJ+_B7GX?}j^m<$j*p zk*2MgmRB-YE0nB=Ox=uea@bkyHO!a36EpUy zZ;#UPi^&>d0^aDP@mNJrBIyGo#n+tOx)B`u+>WF_)n+zm;mfD2MDb^fz56lNx51m8 zsVR%p3`lO;4+JMzBTmVil=rLf7Hi!nPRSL3MNU-gwOJV|WU1Au$F$K!$swm2Ps&sH zloX!t)x?*kPY`K|4;$@FWpsNH$Hb1}WBdG04=f64@+)pD;g3AXIIbBVj%3}$R0%4K zHu&Te@fXybDw~4M7rGr}Uf}+(pCtaT2aErw(AnIi)xdS4`uUVysDnyxRE@KVd__^< zZ{Cw~H)os_mQCi$E*^EMq!SE%gal#j@;7_5{Ff^Qc1+B+@px5|O z;81eP(FnXzwroR-{G%gR%*3By0XFIQL!hKCKPvZ z5SuF_z^4PDP$EZOJsHtXHnzy>i1HU^v$5K*Ss7rt%6{ppcKkzMgdAGMzqaf^MkNr^2AZ+by7k4?gs`AwBklFwF``oO_TRvH5-QE_| zc=j%bXpFc~IC+k2J7|b|SRc*(6CY=jWeyX|Yt3Y@rt#xA-74u~xP}Mc(xM zuFAZvSxomupOA-BEM3gk%B6b9-D?yd7~~S&4*dho?e_RuyK9v$ZCCJ)QsiiUf;;JN zh}NyUEQOzXYYI7T3`!Uqcp0OaHAK%mWAu<-V}hr@s?hF( zhGA}EmX(L8sQ~39|$+BIgV%dZo36bt({fOL-T~qdQp_be0+R`RhXy*LY znFkSOi{m2&yCK{$!aDI2Z#Rf@aFE9Uu6;nmz zyv!+}zieRyK|fP_B=K=1nI9@D4gJp_sQ)|H{q0fCudkyU zeIKbeY&AvNTWqcHeP#P!k=D@o;k=IjW{cfIPJNb($R0Cf#{R*Nz&e{cDfZEs4f`eY z5>Gnx6?SqJifa4nTSkD7b`K - - - - - - gp_hash_table Interface - - - - - - - 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 deleted file mode 100644 index 4c5f06b579c..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_tag.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - gp_hash_tag Interface - - - - -
-

gp_hash_tag Interface

- -

General-probing hash data structure tag.

- -

Defined in: tag_and_trait.hpp

- -

Base Classes

- - - - - - - - - - - - - -
ClassDerivation Type
-
-basic_hash_tag
-
-
-

public

-
-
- - 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 deleted file mode 100644 index 21d092a76ef..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/hash_based_containers.html +++ /dev/null @@ -1,835 +0,0 @@ - - - - - - - Hash-Based Containers - - - - -
-

Hash Table Design

- -

Overview

- -

The collision-chaining hash-based container has the - following declaration.

-
-template<
-    typename Key,
-    typename Mapped,
-    typename Hash_Fn = std::hash<Key>,
-    typename Eq_Fn = std::equal_to<Key>,
-    typename Comb_Hash_Fn = direct_mask_range_hashing<>
-    typename Resize_Policy = default explained below.
-     bool Store_Hash = false,
-     typename Allocator = std::allocator<char> >
-class cc_hash_table;
-
- -

The parameters have the following meaning:

- -
    -
  1. Key is the key type.
  2. - -
  3. Mapped is the mapped-policy, and is explained in - Tutorial::Associative - Containers::Associative Containers Others than Maps.
  4. - -
  5. Hash_Fn is a key hashing functor.
  6. - -
  7. Eq_Fn is a key equivalence functor.
  8. - -
  9. Comb_Hash_Fn is a range-hashing_functor; - it describes how to translate hash values into positions - within the table. This is described in Hash Policies.
  10. - -
  11. Resize_Policy describes how a container object - should change its internal size. This is described in - Resize Policies.
  12. - -
  13. Store_Hash indicates whether the hash value - should be stored with each entry. This is described in - Policy Interaction.
  14. - -
  15. Allocator is an allocator - type.
  16. -
- -

The probing hash-based container has the following - declaration.

-
-template<
-    typename Key,
-    typename Mapped,
-    typename Hash_Fn = std::hash<Key>,
-    typename Eq_Fn = std::equal_to<Key>,
-    typename Comb_Probe_Fn = direct_mask_range_hashing<>
-    typename Probe_Fn = default explained below.
-    typename Resize_Policy = default explained below.
-    bool Store_Hash = false,
-    typename Allocator =  std::allocator<char> >
-class gp_hash_table;
-
- -

The parameters are identical to those of the - collision-chaining container, except for the following.

- -
    -
  1. Comb_Probe_Fn describes how to transform a probe - sequence into a sequence of positions within the table.
  2. - -
  3. Probe_Fn describes a probe sequence policy.
  4. -
- -

Some of the default template values depend on the values of - other parameters, and are explained in Policy Interaction.

- -

Hash - Policies

- -

General - Terms

- -

Following is an explanation of some functions which hashing - involves. Figure Hash functions, - ranged-hash functions, and range-hashing functions) - illustrates the discussion.

- -
-
- -
Hash functions, ranged-hash functions, and - range-hashing functions.
- -

Let U be a domain (e.g., the integers, or the - strings of 3 characters). A hash-table algorithm needs to map - elements of U "uniformly" into the range [0,..., m - - 1] (where m is a non-negative integral value, and - is, in general, time varying). I.e., the algorithm needs - a ranged-hash function

- -

f : U × Z+ → Z+ - ,

- -

such that for any u in U ,

- -

0 ≤ f(u, m) ≤ m - 1 ,

- -

and which has "good uniformity" properties [knuth98sorting]. One - common solution is to use the composition of the hash - function

- -

h : U → Z+ ,

- -

which maps elements of U into the non-negative - integrals, and

- -

g : Z+ × Z+ → - Z+,

- -

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.e., for any r in Z+,

- -

0 ≤ g(r, m) ≤ m - 1 .

- -

The resulting ranged-hash function, is

- -

f(u , m) = - g(h(u), m) (1) .

- -

From the above, it is obvious that given g and - h, f 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.

- -

The above describes the case where a key is to be mapped - into a single position within a hash table, e.g., - in a collision-chaining table. In other cases, a key is to be - mapped into a sequence of positions within a table, - e.g., in a probing table. Similar terms apply in this - case: the table requires a ranged probe function, - mapping a key into a sequence of positions withing the table. - This is typically achieved by composing a hash function - mapping the key into a non-negative integral type, a - probe function transforming the hash value into a - sequence of hash values, and a range-hashing function - transforming the sequence of hash values into a sequence of - positions.

- -

Range-Hashing Functions

- -

Some common choices for range-hashing functions are the - division, multiplication, and middle-square methods [knuth98sorting], defined - as

- -

g(r, m) = - r mod m (2) ,

- -

g(r, m) = ⌈ u/v ( a r mod v ) ⌉ ,

- -

and

- -

g(r, m) = ⌈ u/v ( r2 mod v ) ⌉ - ,

- -

respectively, for some positive integrals u and - v (typically powers of 2), and some a. Each of - these range-hashing functions works best for some different - setting.

- -

The division method (2) is a - very common choice. However, even this single method can be - implemented in two very different ways. It is possible to - implement (2) using the low - level % (modulo) operation (for any m), or the - low level & (bit-mask) operation (for the case where - m is a power of 2), i.e.,

- -

g(r, m) = r % m (3) ,

- -

and

- -

g(r, m) = r & m - 1, (m = - 2k) for some k) (4),

- -

respectively.

- -

The % (modulo) implementation (3) has the advantage that for - m a prime far from a power of 2, g(r, m) is - affected by all the bits of r (minimizing the chance of - collision). It has the disadvantage of using the costly modulo - operation. This method is hard-wired into SGI's implementation - [sgi_stl].

- -

The & (bit-mask) implementation (4) has the advantage of - relying on the fast bit-wise and operation. It has the - disadvantage that for g(r, m) is affected only by the - low order bits of r. This method is hard-wired into - Dinkumware's implementation [dinkumware_stl].

- -

Ranged-Hash - Functions

- -

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 m having specific numerical properties - suitable for hashing (in the sense used in [knuth98sorting]), since - the values of m are determined by a resize policy with - possibly orthogonal considerations.

- -

There are two cases where a ranged-hash function can be - superior. The firs is when using perfect hashing [knuth98sorting]; the - second is when the values of m can be used to estimate - the "general" number of distinct values required. This is - described in the following.

- -

Let

- -

s = [ s0,..., st - 1]

- -

be a string of t characters, each of which is from - domain S. Consider the following ranged-hash - function:

- -

f1(s, m) = ∑ i = - 0t - 1 si ai mod - m (5) ,

- -

where a is some non-negative integral value. This is - the standard string-hashing function used in SGI's - implementation (with a = 5) [sgi_stl]. Its advantage is that - it takes into account all of the characters of the string.

- -

Now assume that s is the string representation of a - of a long DNA sequence (and so S = {'A', 'C', 'G', - 'T'}). In this case, scanning the entire string might be - prohibitively expensive. A possible alternative might be to use - only the first k characters of the string, where

- -

|S|k ≥ m ,

- -

i.e., using the hash function

- -

f2(s, m) = ∑ i - = 0k - 1 si ai mod - m , (6)

- -

requiring scanning over only

- -

k = log4( m )

- -

characters.

- -

Other more elaborate hash-functions might scan k - characters starting at a random position (determined at each - resize), or scanning k random positions (determined at - each resize), i.e., using

- -

f3(s, m) = ∑ i = - r0r0 + k - 1 si - ai mod m ,

- -

or

- -

f4(s, m) = ∑ i = 0k - - 1 sri ari mod - m ,

- -

respectively, for r0,..., rk-1 - each in the (inclusive) range [0,...,t-1].

- -

It should be noted that the above functions cannot be - decomposed as (1) .

- -

Implementation

- -

This sub-subsection describes the implementation of the - above in pb_ds. 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 - pb_ds.

- -

Range-Hashing and Ranged-Hashes in Collision-Chaining - Tables

- -

cc_hash_table is - parametrized by Hash_Fn and Comb_Hash_Fn, a - hash functor and a combining hash functor, respectively.

- -

In general, Comb_Hash_Fn is considered a - range-hashing functor. cc_hash_table - synthesizes a ranged-hash function from Hash_Fn and - Comb_Hash_Fn (see (1) - above). Figure Insert - hash sequence diagram shows an insert 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).

- -
no image
- -
Insert hash sequence diagram.
- -

If cc_hash_table's - hash-functor, Hash_Fn is instantiated by null_hash_fn (see Interface::Concepts::Null - Policy Classes), then Comb_Hash_Fn is taken to be - a ranged-hash function. Figure Insert hash sequence diagram - with a null hash policy shows an insert 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).

- -
-
- -
Insert hash sequence diagram with a null hash - policy.
- -

Probing Tables

- -

gp_hash_table is - parametrized by Hash_Fn, Probe_Fn, and - Comb_Probe_Fn. As before, if Hash_Fn and - Probe_Fn are, respectively, null_hash_fn and null_probe_fn, then - Comb_Probe_Fn is a ranged-probe functor. Otherwise, - Hash_Fn is a hash functor, Probe_Fn is a - functor for offsets from a hash value, and - Comb_Probe_Fn transforms a probe sequence into a - sequence of positions within the table.

- -

Pre-Defined Policies

- -

pb_ds contains some pre-defined classes - implementing range-hashing and probing functions:

- -
    -
  1. direct_mask_range_hashing - and direct_mod_range_hashing - are range-hashing functions based on a bit-mask and a modulo - operation, respectively.
  2. - -
  3. linear_probe_fn, and - quadratic_probe_fn are - a linear probe and a quadratic probe function, - respectively.
  4. -
Figure Hash policy class - diagram shows a class diagram. - -
-
- -
Hash policy class diagram.
- -

Resize - Policies

- -

General Terms

- -

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:

- -
    -
  1. A size policy indicating how a hash table - should grow (e.g., it should multiply by powers of - 2).
  2. - -
  3. A trigger policy indicating when a hash - table should grow (e.g., a load factor is - exceeded).
  4. -
- -

Size - Policies

- -

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 Range-Hashing Policies), and is the - hard-wired policy used by Dinkumware [dinkumware_stl]. A - prime-list based policy works well with a modulo-prime range - hashing function (see Range-Hashing - Policies), and is the hard-wired policy used by SGI's - implementation [sgi_stl].

- -

Trigger - Policies

- -

Trigger policies determine when a hash table changes size. - Following is a description of two policies: load-check - policies, and collision-check policies.

- -

Load-check policies are straightforward. The user specifies - two factors, αmin and - αmax, and the hash table maintains the - invariant that

- -

αmin ≤ (number of - stored elements) / (hash-table size) ≤ - αmax (1) .

- -

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.

- -

Consider Figure Balls and - bins. Let the size of the hash table be denoted by - m, the length of a probe sequence be denoted by - k, and some load factor be denoted by α. We would - like to calculate the minimal length of k, such that if - there were α m elements in the hash table, a probe - sequence of length k would be found with probability at - most 1/m.

- -
-
- -
Balls and bins.
- -

Denote the probability that a probe sequence of length - k appears in bin i by pi, the - length of the probe sequence of bin i by - li, and assume uniform distribution. Then

- -

p1 = (3)

- -

P(l1 ≥ k) =

- -

P(l1 ≥ α ( 1 + k / α - 1 - ) ≤ (a)

- -

e ^ ( - ( α ( k / α - 1 )2 ) /2 - ) ,

- -

where (a) follows from the Chernoff bound [motwani95random]. To - calculate the probability that some bin contains a probe - sequence greater than k, we note that the - li are negatively-dependent [dubhashi98neg]. Let - I(.) denote the indicator function. Then

- -

P( existsi - li ≥ k ) = (3)

- -

P ( ∑ i = 1m - I(li ≥ k) ≥ 1 ) =

- -

P ( ∑ i = 1m I ( - li ≥ k ) ≥ m p1 ( 1 + 1 / (m - p1) - 1 ) ) ≤ (a)

- -

e ^ ( ( - m p1 ( 1 / (m p1) - - 1 ) 2 ) / 2 ) ,

- -

where (a) follows from the fact that the Chernoff bound can - be applied to negatively-dependent variables [dubhashi98neg]. Inserting - (2) into (3), and equating with - 1/m, we obtain

- -

k ~ √ ( 2 α ln 2 m ln(m) ) - ) .

- -

Implementation

- -

This sub-subsection describes the implementation of the - above in pb_ds. 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.

- -

Resize Policies and Their Decomposition

- -

Each hash-based container is parametrized by a - Resize_Policy parameter; the container derives - publicly from Resize_Policy. For - example:

-
-cc_hash_table<
-    typename Key,
-    typename Mapped,
-    ...
-    typename Resize_Policy
-    ...> :
-        public Resize_Policy
-
- -

As a container object is modified, it continuously notifies - its Resize_Policy base of internal changes - (e.g., collisions encountered and elements being - inserted). It queries its Resize_Policy base whether - it needs to be resized, and if so, to what size.

- -

Figure Insert - resize sequence diagram 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).

- -
-
- -
Insert resize sequence diagram.
- -

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: hash_standard_resize_policy - is parametrized by Size_Policy and - Trigger_Policy, derives publicly from - both, and acts as a standard delegate [gamma95designpatterns] - to these policies.

- -

Figures Standard - resize policy trigger sequence diagram and Standard resize policy size - sequence diagram show sequence diagrams illustrating the - interaction between the standard resize policy and its trigger - and size policies, respectively.

- -
-
- -
Standard resize policy trigger sequence - diagram.
- -
-
- -
Standard resize policy size sequence - diagram.
- -

Pre-Defined Policies

- -

The library includes the following - instantiations of size and trigger policies:

- -
    -
  1. hash_load_check_resize_trigger - implements a load check trigger policy.
  2. - -
  3. cc_hash_max_collision_check_resize_trigger - implements a collision check trigger policy.
  4. - -
  5. hash_exponential_size_policy - implements an exponential-size policy (which should be used - with mask range hashing).
  6. - -
  7. hash_prime_size_policy - implementing a size policy based on a sequence of primes - [sgi_stl] (which should - be used with mod range hashing
  8. -
- -

Figure Resize policy class - diagram gives an overall picture of the resize-related - classes. basic_hash_table - is parametrized by Resize_Policy, which it subclasses - publicly. This class is currently instantiated only by hash_standard_resize_policy. - hash_standard_resize_policy - itself is parametrized by Trigger_Policy and - Size_Policy. Currently, Trigger_Policy is - instantiated by hash_load_check_resize_trigger, - or cc_hash_max_collision_check_resize_trigger; - Size_Policy is instantiated by hash_exponential_size_policy, - or hash_prime_size_policy.

- -
-
- -
Resize policy class diagram.
- -

Controlled Access to Policies' Internals

- -

There are cases where (controlled) access to resize - policies' internals is beneficial. E.g., it is sometimes - useful to query a hash-table for the table's actual size (as - opposed to its size() - 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.

- -

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.

- -

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 cc_hash_table nor - gp_hash_table - contain methods for querying the actual size of the table; this - is deferred to hash_standard_resize_policy.

- -

Furthermore, the policies themselves are parametrized by - template arguments that determine the methods they support - ([alexandrescu01modern] - shows techniques for doing so). hash_standard_resize_policy - is parametrized by External_Size_Access that - determines whether it supports methods for querying the actual - size of the table or resizing it. hash_load_check_resize_trigger - is parametrized by External_Load_Access that - determines whether it supports methods for querying or - modifying the loads. cc_hash_max_collision_check_resize_trigger - is parametrized by External_Load_Access that - determines whether it supports methods for querying the - load.

- -

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 - private virtual method:

-
-virtual void
-    do_resize
-    (size_type new_size);
-
- -

which resizes the container. Implementations of - Resize_Policy can export public methods for resizing - the container externally; these methods internally call - do_resize to resize the table.

- -

Policy - Interaction

- -

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.

- -

Probe Policies, Size - Policies, and Trigger Policies

- -

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.

- -

Unfortunately, pb_ds cannot detect such problems at - compilation (they are halting reducible). It therefore defines - an exception class insert_error to throw an - exception in this case.

- -

Hash Policies and Trigger - Policies

- -

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.

- -

The library, therefore, by design, limits each operation to - one resize. For each insert, for example, it queries - only once whether a resize is needed.

- -

Equivalence Functors, Storing - Hash Values, and Hash Functions

- -

cc_hash_table and - gp_hash_table are - parametrized by an equivalence functor and by a - Store_Hash parameter. If the latter parameter is - true, 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.

- -

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. pb_ds's container will - fail at compilation, by design, if this is attempted.

- -

Size Policies and - Load-Check Trigger Policies

- -

Assume a size policy issues an increasing sequence of sizes - a, a q, a q1, a q2, ... For - example, an exponential size policy might issue the sequence of - sizes 8, 16, 32, 64, ...

- -

If a load-check trigger policy is used, with loads - αmin and αmax, - respectively, then it is a good idea to have:

- -
    -
  1. αmax ~ 1 / q
  2. - -
  3. αmin < 1 / (2 q)
  4. -
- -

This will ensure that the amortized hash cost of each - modifying operation is at most approximately 3.

- -

αmin ~ αmax is, in - any case, a bad choice, and αmin > - αmax is horrendous.

-
- - 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 deleted file mode 100644 index 1089b154478..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/hash_exponential_size_policy.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - hash_exponential_size_policy Interface - - - - -
-

hash_exponential_size_policy Interface

- -

A size policy whose sequence of sizes form an exponential - sequence (typically powers of 2)

- -

Defined in: hash_policy.hpp

- -

Template Parameters

- - - - - - - - - - - - - - - - - -
ParameterDescriptionDefault Value
-
-typename Size_Type 
-
-
-

Size type.

-
size_t
- -

Public Types and - Constants

- -

General Definitions

- - - - - - - - - - - - - - - - - -
TypeDefinitionDescription
-
-size_type
-
-
-
-Size_Type
-
-
-

Size type.

-
- -

Public Methods

- -

Constructors, Destructor, and - Related

- - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-  hash_exponential_size_policy
-  (size_type start_size = 8, 
-    size_type grow_factor = 2)
-
-
-

Default constructor, or constructor taking a - start_size, or - constructor taking a start size and grow_factor. The policy will use the - sequence of sizes start_size, start_size * grow_factor, start_size * grow_factor^2, ...

-
-
-void 
-  swap
-  (hash_exponential_size_policy &other)
-
-
-

Swaps content.

-
- -

Protected Methods

- -

Size methods

- - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-size_type
-  get_nearest_larger_size
-  (size_type size) const
-
-
-

Given a size size, - returns a size that is larger.

-
-
-size_type
-  get_nearest_smaller_size
-  (size_type size) const
-
-
-

Given a size size, - returns a size that is smaller.

-
-
- - 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 deleted file mode 100644 index b22b7b5cfdd..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/hash_load_check_resize_trigger.html +++ /dev/null @@ -1,583 +0,0 @@ - - - - - - - hash_load_check_resize_trigger Interface - - - - -
-

hash_load_check_resize_trigger Interface

- -

A resize trigger policy based on a load check. It keeps the - load factor between some load factors load_min and - load_max.

- -

Defined in: hash_policy.hpp

- -

Template Parameters

- - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterDescriptionDefault Value
-
-bool External_Load_Access 
-
-
-

Specifies whether the load factor can be accessed - externally. The two options have different trade-offs in - terms of flexibility, genericity, and encapsulation.

-
false
-
-typename Size_Type 
-
-
-

Size type.

-
size_t
- -

Public Types and - Constants

- -

General Definitions

- - - - - - - - - - - - - - - - - - - - - - - - - -
TypeDefinitionDescription
-
-size_type
-
-
-
-Size_Type
-
-
-

Size type.

-
-
-external_load_access
-
-
-
-External_Load_Access
-
-
-

Indicates whether loads can be accessed externally

-
- -

Public Methods

- -

Constructors, Destructor, and - Related

- - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-  hash_load_check_resize_trigger
-  (float load_min = 0.125, 
-    float load_max = 0.5)
-
-
-

Default constructor, or constructor taking - load_min and - load_max load factors - between which this policy will keep the actual load.

- -

It is the responsibility of the user to ensure that - load_min is smaller than - load_max.

-
-
-void
-  swap
-  (hash_load_check_resize_trigger &other)
-
-
-

Swaps content.

-
-
-  virtual
-    ~hash_load_check_resize_trigger
-    ()
-
-
-

Destructor.

-
- -

Load Access Methods

- -

These methods are only available if the external access - parameter is set.

- - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-inline std::pair<float, float>
-  get_loads
-  () const
-
-
-

Returns a pair of the minimal and maximal loads, - respectively.

- -

Calling this method will not compile when External_Load_Access - == false.

-
-
-void 
-  set_loads
-  (std::pair<float, float> load_pair)
-
-
-

Sets the loads through a pair of the minimal and - maximal loads, respectively.

- -

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 External_Load_Access - == false.

-
- -

Protected Methods

- -

Insert Search - Notifications.

- -

Notifications called during an insert operation.

- - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-inline void
-  notify_insert_search_start
-  ()
-
-
-

Notifies a search started.

-
-
-inline void
-  notify_insert_search_collision
-  ()
-
-
-

Notifies a search encountered a collision.

-
-
-inline void
-  notify_insert_search_end
-  ()
-
-
-

Notifies a search ended.

-
- -

Find Search - Notifications.

- -

Notifications called during a find operation.

- - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-inline void
-  notify_find_search_start
-  ()
-
-
-

Notifies a search started.

-
-
-inline void
-  notify_find_search_collision
-  ()
-
-
-

Notifies a search encountered a collision.

-
-
-inline void
-  notify_find_search_end
-  ()
-
-
-

Notifies a search ended.

-
- -

Erase Search - Notifications.

- -

Notifications called during an insert operation.

- - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-inline void
-  notify_erase_search_start
-  ()
-
-
-

Notifies a search started.

-
-
-inline void
-  notify_erase_search_collision
-  ()
-
-
-

Notifies a search encountered a collision.

-
-
-inline void
-  notify_erase_search_end
-  ()
-
-
-

Notifies a search ended.

-
- -

Content Change - Notifications.

- -

Notifications called when the content of the table changes - in a way that can affect the resize policy.

- - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-inline void
-  notify_inserted
-  (size_type num_entries)
-
-
-

Notifies an element was inserted. the total number of - entries in the table is num_entries.

-
-
-inline void
-  notify_erased
-  (size_type num_entries)
-
-
-

Notifies an element was erased.

-
-
-void 
-  notify_cleared
-  ()
-
-
-

Notifies the table was cleared.

-
- -

Size Change - Notifications.

- -

Notifications called when the table changes size.

- - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-void
-  notify_resized
-  (size_type new_size)
-
-
-

Notifies the table was resized as a result of this - object's signifying that a resize is needed.

-
-
-void
-  notify_externally_resized
-  (size_type new_size)
-
-
-

Notifies the table was resized externally.

-
- -

Queries

- -

Called to query whether/how to resize.

- - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-inline bool 
-  is_resize_needed
-  () const
-
-
-

Queries whether a resize is needed.

-
-
-inline bool
-  is_grow_needed
-  (size_type size, 
-    size_type num_entries) const
-
-
-

Queries whether a grow is needed.

- -

This method is called only if this object indicated - resize is needed. The actual size of the table is size, and the number of entries in - it is num_entries.

-
- -

Private Methods

- -

Overrides

- - - - - - - - - - - - - -
MethodDescription
-
-virtual void
-  do_resize
-  (size_type new_size)
-
-
-

Resizes to new_size.

-
-
- - 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 deleted file mode 100644 index 8976767b4f0..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/hash_prime_size_policy.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - hash_prime_size_policy Interface - - - - -
-

hash_prime_size_policy Interface

- -

A size policy whose sequence of sizes form a - nearly-exponential sequence of primes.

- -

Defined in: hash_policy.hpp

- -

Public Types and - Constants

- -

General Definitions

- - - - - - - - - - - - - - - - - -
TypeDefinitionDescription
-
-size_type
-
-
-
-size_t
-
-
-

Size type.

-
- -

Public Methods

- -

Constructors, Destructor, and - Related

- - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-  hash_prime_size_policy
-  (size_type start_size = 8)
-
-
-

Default constructor, or constructor taking a - start_size The policy - will use the sequence of sizes approximately start_size, start_size * 2, start_size * 2^2, ...

-
-
-inline void
-  swap
-  (hash_prime_size_policy &other)
-
-
-

Swaps content.

-
- -

Protected Methods

- -

Size methods

- - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-size_type
-  get_nearest_larger_size
-  (size_type size) const
-
-
-

Given a size size, - returns a size that is larger.

-
-
-size_type
-  get_nearest_smaller_size
-  (size_type size) const
-
-
-

Given a size size, - returns a size that is smaller.

-
-
- - 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 deleted file mode 100644 index 2867595b091..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - -Tree Text Locality of Reference Timing Test - - - -
-

Hash-Based Erase Memory-Use Test

-

Description

-

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.

-

(The test was executed with hash_random_int_erase_mem_usage.cc - 2000 2000 2100)

-

Purpose

-

The test checks how containers adjust internally as their - logical size decreases (see Motivation::Associative - Containers::Slightly Different Methods::Methods Related to - Erase).

-

Results

-

Figures NHG, NHM and - NHL show the results for the native and - collision-chaining types in g++, msvc++ and - local, - respectively.

-
-
-
-
-
no image
NHG: Native, collision-chaing, and probing, hash random int erase test - g++

In the above figure, the names in the legends have the following meaning:

-
    -
  1. -n_hash_set_ncah- -std::tr1::unordered_set with cache_hash_code = false
  2. -
  3. -gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_set- -gp_hash_table - with Comb_Hash_Fn = direct_mask_range_hashing -, Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2, and Probe_Fn = linear_probe_fn -
  4. -
  5. -cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_set- -cc_hash_table -with Comb_Hash_Fn = direct_mod_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_prime_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/1
  6. -
  7. -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set- -cc_hash_table -with Comb_Hash_Fn = direct_mask_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2
  8. -
-
-
-
-
-
-
-
-
-
-
no image
NHM: Native, collision-chaing, and probing, hash random int erase test - msvc++

In the above figure, the names in the legends have the following meaning:

-
    -
  1. -n_hash_set_ncah- -stdext::hash_set
  2. -
  3. -gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_set- -gp_hash_table - with Comb_Hash_Fn = direct_mask_range_hashing -, Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2, and Probe_Fn = linear_probe_fn -
  4. -
  5. -cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_set- -cc_hash_table -with Comb_Hash_Fn = direct_mod_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_prime_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/1
  6. -
  7. -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set- -cc_hash_table -with Comb_Hash_Fn = direct_mask_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2
  8. -
-
-
-
-
-
-
-
-
-
-
no image
NHM: Native, collision-chaing, and probing, hash random int erase test - msvc++

In the above figure, the names in the legends have the following meaning:

-
    -
  1. -n_hash_set_ncah- -stdext::hash_set
  2. -
  3. -gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_set- -gp_hash_table - with Comb_Hash_Fn = direct_mask_range_hashing -, Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2, and Probe_Fn = linear_probe_fn -
  4. -
  5. -cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_set- -cc_hash_table -with Comb_Hash_Fn = direct_mod_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_prime_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/1
  6. -
  7. -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set- -cc_hash_table -with Comb_Hash_Fn = direct_mask_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2
  8. -
-
-
-
-
-
-
-
-
-
-
no image
NHL: Native, collision-chaing, and probing, hash random int erase test - local
-
-
-
-
-

Observations

-

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 Motivation::Choice of - Methods , this is a fundamental consequence of the STL's - associative containers' interface, it is not due to a specific - implementation.

-

(See Priority Queue - Text pop Memory Use Test for a similar phenomenon - regarding priority queues.)

-
- - 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 deleted file mode 100644 index c552506a7557aa598a9de877bbe45bd20bda39f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6356 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 P@4@OSn##pWkAnXTmi`&% 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 deleted file mode 100644 index 66bb0eb46e2804f1e6343ac9b149b027546f6c04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31203 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

{UtLJNC!b7#@~Lzj2wKmWTth>Fg% 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 I8yfq+04*nRh5!Hn 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 deleted file mode 100644 index 8c23d46da395543715ebbbac37665e0ff0fe7192..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6401 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 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 deleted file mode 100644 index b6066e7cf42..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_find_find_timing_test.html +++ /dev/null @@ -1,247 +0,0 @@ - - - - - -Hash Random Int Find Timing Test - - - -

-

Hash-Based Random-Integer find Find Timing - Test

-

Description

-

This test inserts a number of values with uniform i.i.d. - integer keys into a container, then performs a series of finds - using find. It measures the average time - forfind as a function of the number of values - inserted.

-

(The test was executed with random_int_find_timing_test - 200 200 2100)

-

Purpose

-

The test checks the effect of different underlying - hash-tables (see Design::Associative - Containers::Associative Containers::Hash-Based Containers), - range-hashing functions, and trigger policies (see Design::Associative - Containers::Hash-Based Containers::Hash Policies and - Design::Associative - Containers::Hash-Based Containers::Resize Policies).

-

Results

-

Figures NCCG, NCCM, - and NCCL show the results for the native - and collision-chaining types in g++, MSVC++, and - local, - respectively; Figures NGPG, NGPM, and NGPL show the results - for the native and probing types in g++, MSVC++, and - local - respectively.

-
-
-
-
-
no image
NCCG: Native and collision-chaining hash random int find timing test using find - g++

In the above figure, the names in the legends have the following meaning:

-
    -
  1. -n_hash_map_ncah- -std::tr1::unordered_map with cache_hash_code = false
  2. -
  3. -cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mod_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_prime_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/1
  4. -
  5. -cc_hash_mod_prime_nea_lc_1div8_1div2_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mod_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_prime_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2
  6. -
  7. -cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mask_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/1
  8. -
  9. -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mask_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2
  10. -
-
-
-
-
-
-
-
-
-
-
no image
NCCM: Native and collision-chaining hash random int find timing test using find - msvc++

In the above figure, the names in the legends have the following meaning:

-
    -
  1. -cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mod_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_prime_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/1
  2. -
  3. -cc_hash_mod_prime_nea_lc_1div8_1div2_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mod_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_prime_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2
  4. -
  5. -n_hash_map_ncah- -stdext::hash_map
  6. -
  7. -cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mask_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/1
  8. -
  9. -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mask_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2
  10. -
-
-
-
-
-
-
-
-
-
-
no image
NCCL: Native and collision-chaining hash random int find timing test using find - local
-
-
-
-
-
-
-
-
-
no image
NGPG: Native and collision-chaining hash random int find timing test using find - g++

In the above figure, the names in the legends have the following meaning:

-
    -
  1. -gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map- -gp_hash_table - with Comb_Hash_Fn = direct_mod_range_hashing -, Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_prime_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2, and Probe_Fn = quadratic_probe_fn -
  2. -
  3. -n_hash_map_ncah- -std::tr1::unordered_map with cache_hash_code = false
  4. -
  5. -gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_map- -gp_hash_table - with Comb_Hash_Fn = direct_mask_range_hashing -, Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2, and Probe_Fn = linear_probe_fn -
  6. -
-
-
-
-
-
-
-
-
-
-
no image
NGPM: Native and collision-chaining hash random int find timing test using find - msvc++

In the above figure, the names in the legends have the following meaning:

-
    -
  1. -gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map- -gp_hash_table - with Comb_Hash_Fn = direct_mod_range_hashing -, Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_prime_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2, and Probe_Fn = quadratic_probe_fn -
  2. -
  3. -n_hash_map_ncah- -stdext::hash_map
  4. -
  5. -gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_map- -gp_hash_table - with Comb_Hash_Fn = direct_mask_range_hashing -, Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2, and Probe_Fn = linear_probe_fn -
  6. -
-
-
-
-
-
-
-
-
-
-
no image
NGPL: Native and collision-chaining hash random int find timing test using find - local
-
-
-
-
-

Observations

-

In this setting, the choice of underlying hash-table (see - Design::Associative - Containers::Hash-Based Containers ) affects performance - most, then the range-hashing scheme (See Design::Associative - Containers::Hash-Based Containers::Hash Policies ), and, - only finally, other policies.

-

When comparing Figures NCCG and NCCM to NGPG and NGPM , respectively, it is apparent that the - probing containers are less efficient than the - collision-chaining containers (both - std::tr1::unordered_map and stdext::hash_map - use collision-chaining) in this case.

-

( Hash-Based - Random-Integer Subscript Insert Timing Test shows a - different case, where the situation is reversed; Observations::Hash-Based - Container Types discusses some further considerations.)

-

Within each type of hash-table, the range-hashing scheme - affects performance more than other policies; Hash-Based - Text find Find Timing Test::Observations discusses - this. In Figures NCCG , NCCM , NGPG , and NGPM , it should be noted that - std::tr1::unordered_map and stdext::hash_map - are hard-wired currently to mod-based and mask-based schemes, - respectively.

-

Observations::Hash-Based - Container Types summarizes some observations on hash-based - containers; Observations::Hash-Based - Containers' Policies summarizes some observations on - hash-based containers' policies.

-
- - 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 deleted file mode 100644 index 00251637045..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_subscript_find_timing_test.html +++ /dev/null @@ -1,220 +0,0 @@ - - - - - -Hash Random Int Subscript Find Timing Test - - - -
-

Hash-Based Random-Integer operator[] - FindTiming Test

-

Description

-

This test inserts a number of values with uniform i.i.d. - integer keys into a container, then performs a series of finds - using operator[]. It measures the average time - for operator[] as a function of the number of - values inserted.

-

(The test was executed with hash_random_int_subscript_find_timing_test - 200 200 2100)

-

Purpose

-

The test checks the effect of different underlying - hash-tables (see Design::Hash-Based Containers - ), range-hashing functions, and trigger policies (see Design::Hash-Based - Containers::Hash Policies and Design::Hash-Based - Containers::Resize Policies ).

-

Results

-

Figures NCCG, NCCM, - and NCCL show the results for the native - and collision-chaining types in g++, MSVC++, and - local, - respectively; Figures NGPG, NGPM, and NGPL show the results - for the native and probing types in g++, MSVC++, and - local, - respectively.

-
-
-
-
-
no image
NCCG: Native and collision-chaining hash random int find timing test using operator[] - g++

In the above figure, the names in the legends have the following meaning:

-
    -
  1. -n_hash_map_ncah- -std::tr1::unordered_map with cache_hash_code = false
  2. -
  3. -cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mod_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_prime_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/1
  4. -
  5. -cc_hash_mod_prime_nea_lc_1div8_1div2_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mod_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_prime_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2
  6. -
  7. -cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mask_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/1
  8. -
  9. -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mask_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2
  10. -
-
-
-
-
-
-
-
-
-
-
no image
NCCM: Native and collision-chaining hash random int find timing test using operator[] - msvc++

In the above figure, the names in the legends have the following meaning:

-
    -
  1. -cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mod_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_prime_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/1
  2. -
  3. -cc_hash_mod_prime_nea_lc_1div8_1div2_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mod_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_prime_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2
  4. -
  5. -n_hash_map_ncah- -stdext::hash_map
  6. -
  7. -cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mask_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/1
  8. -
  9. -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mask_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2
  10. -
-
-
-
-
-
-
-
-
-
-
no image
NCCL: Native and collision-chaining hash random int find timing test using operator[] - local
-
-
-
-
-
-
-
-
-
no image
NGPG: Native and probing hash random int find timing test using operator[] - g++

In the above figure, the names in the legends have the following meaning:

-
    -
  1. -n_hash_map_ncah- -std::tr1::unordered_map with cache_hash_code = false
  2. -
  3. -gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map- -gp_hash_table - with Comb_Hash_Fn = direct_mod_range_hashing -, Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_prime_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2, and Probe_Fn = quadratic_probe_fn -
  4. -
  5. -gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_map- -gp_hash_table - with Comb_Hash_Fn = direct_mask_range_hashing -, Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2, and Probe_Fn = linear_probe_fn -
  6. -
-
-
-
-
-
-
-
-
-
-
no image
NGPM: Native and probing hash random int find timing test using operator[] - msvc++

In the above figure, the names in the legends have the following meaning:

-
    -
  1. -gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map- -gp_hash_table - with Comb_Hash_Fn = direct_mod_range_hashing -, Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_prime_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2, and Probe_Fn = quadratic_probe_fn -
  2. -
  3. -n_hash_map_ncah- -stdext::hash_map
  4. -
  5. -gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_map- -gp_hash_table - with Comb_Hash_Fn = direct_mask_range_hashing -, Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2, and Probe_Fn = linear_probe_fn -
  6. -
-
-
-
-
-
-
-
-
-
-
no image
NGPL: Native and probing hash random int find timing test using operator[] - local
-
-
-
-
-

Observations

-

This test shows similar results to Hash-Based - Random-Integer find Find Timing Test .

-
- - 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 deleted file mode 100644 index a15d03ba4cb..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_subscript_insert_timing_test.html +++ /dev/null @@ -1,365 +0,0 @@ - - - - - -Hash Random Int Subscript Insert Timing Test - - - -
-

Hash-Based Random-Integer operator[] Insert - Timing Test

-

Description

-

This test inserts a number of values with uniform i.i.d. - integer keys into a container, using - operator[]. It measures the average time for - operator[] as a function of the number of - values inserted.

-

(The test was executed with hash_random_int_subscript_insert_timing_test - 200 200 2100)

-

Purpose

-

The test primarily checks the effect of different underlying - hash-tables (see Design::Associative - Containers::Associative Containers::Hash-Based - Containers).

-

Results

-

Figures NCCG, NCCM, - and NCCL show the results for the native - and collision-chaining types in g++, MSVC++, and - local, - respectively; Figures NGPG, NGPM, and NGPL show the results - for the native and probing types in g++, msvc++, and - local - respectively; Figures CCGPG, CCGPM, and CCGPL compare the - results for the collision-chaining and probing types of - pb_ds only, in g++, MSVC++, and - local - respectively.

-
-
-
-
-
no image
NCCG: Native and collision-chaining hash random int insert timing test using operator - g++

In the above figure, the names in the legends have the following meaning:

-
    -
  1. -cc_hash_mod_prime_nea_lc_1div8_1div2_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mod_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_prime_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2
  2. -
  3. -n_hash_map_ncah- -std::tr1::unordered_map with cache_hash_code = false
  4. -
  5. -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mask_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2
  6. -
  7. -cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mod_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_prime_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/1
  8. -
  9. -cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mask_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/1
  10. -
-
-
-
-
-
-
-
-
-
-
no image
NCCM: Native and collision-chaining hash random int insert timing test using operator - msvc++

In the above figure, the names in the legends have the following meaning:

-
    -
  1. -n_hash_map_ncah- -stdext::hash_map
  2. -
  3. -cc_hash_mod_prime_nea_lc_1div8_1div2_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mod_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_prime_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2
  4. -
  5. -cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mod_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_prime_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/1
  6. -
  7. -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mask_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2
  8. -
  9. -cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mask_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/1
  10. -
-
-
-
-
-
-
-
-
-
-
no image
NCCL: Native and collision-chaining hash random int insert timing test using operator - local
-
-
-
-
-
-
-
-
-
no image
NGPG: Native and probing hash random int insert timing test using operator - g++

In the above figure, the names in the legends have the following meaning:

-
    -
  1. -gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map- -gp_hash_table - with Comb_Hash_Fn = direct_mod_range_hashing -, Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_prime_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2, and Probe_Fn = quadratic_probe_fn -
  2. -
  3. -n_hash_map_ncah- -std::tr1::unordered_map with cache_hash_code = false
  4. -
  5. -gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_map- -gp_hash_table - with Comb_Hash_Fn = direct_mask_range_hashing -, Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2, and Probe_Fn = linear_probe_fn -
  6. -
-
-
-
-
-
-
-
-
-
-
no image
NGPM: Native and probing hash random int insert timing test using operator - msvc++

In the above figure, the names in the legends have the following meaning:

-
    -
  1. -n_hash_map_ncah- -stdext::hash_map
  2. -
  3. -gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map- -gp_hash_table - with Comb_Hash_Fn = direct_mod_range_hashing -, Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_prime_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2, and Probe_Fn = quadratic_probe_fn -
  4. -
  5. -gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_map- -gp_hash_table - with Comb_Hash_Fn = direct_mask_range_hashing -, Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2, and Probe_Fn = linear_probe_fn -
  6. -
-
-
-
-
-
-
-
-
-
-
no image
NGPL: Native and probing hash random int insert timing test using operator - local
-
-
-
-
-
-
-
-
-
no image
CCGPG: Collision-chaining and probing hash random int insert timing test using operator - g++

In the above figure, the names in the legends have the following meaning:

-
    -
  1. -gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map- -gp_hash_table - with Comb_Hash_Fn = direct_mod_range_hashing -, Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_prime_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2, and Probe_Fn = quadratic_probe_fn -
  2. -
  3. -cc_hash_mod_prime_nea_lc_1div8_1div2_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mod_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_prime_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2
  4. -
  5. -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mask_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2
  6. -
  7. -gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_map- -gp_hash_table - with Comb_Hash_Fn = direct_mask_range_hashing -, Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2, and Probe_Fn = linear_probe_fn -
  8. -
-
-
-
-
-
-
-
-
-
-
no image
CCGPM: Collision-chaining and probing hash random int insert timing test using operator - msvc++

In the above figure, the names in the legends have the following meaning:

-
    -
  1. -cc_hash_mod_prime_nea_lc_1div8_1div2_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mod_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_prime_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2
  2. -
  3. -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mask_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2
  4. -
  5. -gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map- -gp_hash_table - with Comb_Hash_Fn = direct_mod_range_hashing -, Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_prime_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2, and Probe_Fn = quadratic_probe_fn -
  6. -
  7. -gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_map- -gp_hash_table - with Comb_Hash_Fn = direct_mask_range_hashing -, Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2, and Probe_Fn = linear_probe_fn -
  8. -
-
-
-
-
-
-
-
-
-
-
no image
CCGPL: Collision-chaining and probing hash random int insert timing test using operator - local
-
-
-
-
-

Observations

-

In this setting, as in Hash-Based Text - find Find Timing Test and Hash-Based - Random-Integer find Find Timing Test , the choice - of underlying hash-table underlying hash-table (see Design::Associative - Containers::Hash-Based Containers ) affects performance - most, then the range-hashing scheme (See Design::Associative - Containers::Hash-Based Containers::Hash Policies ), and, - only finally, other policies.

-

There are some differences, however:

-
    -
  1. In this setting, probing tables function sometimes more - efficiently than collision-chaining tables (see Figures - CCGPG and CCGPM ). - This is explained shortly.
  2. -
  3. 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.
  4. -
-

Collision-chaining containers use indirection for greater - flexibility; probing containers store values contiguously, in - an array (see Figure Motivation::Different - underlying data structures 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.

-

Within each type of hash-table, the range-hashing scheme - affects performance more than other policies. This is similar - to the situation in Hash-Based Text - find Find Timing Test and Hash-Based - Random-Integer find Find Timing Test. - Unsurprisingly, however, containers with lower -alphamax perform worse in this case, - since more re-hashes are performed.

-

Observations::Hash-Based - Container Types summarizes some observations on hash-based - containers; Observations::Hash-Based - Containers' Policies summarizes some observations on - hash-based containers' policies.

-
- - 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 deleted file mode 100644 index 8dbc57ce277..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/hash_standard_resize_policy.html +++ /dev/null @@ -1,795 +0,0 @@ - - - - - - - hash_standard_resize_policy Interface - - - - -
-

hash_standard_resize_policy Interface

- -

A resize policy which delegates operations to size and - trigger policies.

- -

Defined in: hash_policy.hpp

- -

Template Parameters

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterDescriptionDefault Value
-
-class Size_Policy 
-
-
-

Size policy type.

-
hash_exponential_size_policy
-
-class Trigger_Policy 
-
-
-

Trigger policy type.

-
hash_load_check_resize_trigger
-
-bool External_Size_Access 
-
-
-

Indicates whether physical sizes can be accessed - externally.

-
false
-
-typename Size_Type 
-
-
-

Size type.

-
size_t
- -

Base Classes

- - - - - - - - - - - - - - - - - - - -
ClassDerivation Type
-
-Size_Policy
-
-
-

public

-
-
-Trigger_Policy
-
-
-

public

-
- -

Public Types and - Constants

- -

General Definitions

- - - - - - - - - - - - - - - - - -
TypeDefinitionDescription
-
-size_type
-
-
-
-Size_Type
-
-
-

Size type.

-
- -

Policy Definitions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeDefinitionDescription
-
-trigger_policy
-
-
-
-Trigger_Policy
-
-
-

Trigger policy type.

-
-
-size_policy
-
-
-
-Size_Policy
-
-
-

Size policy type.

-
-
-external_size_access
-
-
-
-External_Size_Access
-
-
-

Indicates whether sizes can be accessed - externally.

-
- -

Public Methods

- -

Constructors, Destructor, and - Related

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-  hash_standard_resize_policy
-  ()
-
-
-

Default constructor.

-
-
-  hash_standard_resize_policy
-  (const Size_Policy &r_size_policy)
-
-
-

constructor taking some policies r_size_policy will be copied by the - Size_Policy - object of this object.

-
-
-  hash_standard_resize_policy
-  (const Size_Policy &r_size_policy,
-    const Trigger_Policy &r_trigger_policy)
-
-
-

constructor taking some policies. r_size_policy will be copied by the - Size_Policy - object of this object. r_trigger_policy will be copied by - the Trigger_Policy - object of this object.

-
-
-virtual 
-  ~hash_standard_resize_policy
-  ()
-
-
-

Destructor.

-
-
-inline void 
-  swap
-  (hash_standard_resize_policy &other)
-
-
-

Swaps content.

-
- -

Policy Access Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-Size_Policy &
-  get_size_policy
-  ()
-
-
-

Access to the Size_Policy object - used.

-
-
-const Size_Policy &
-  get_size_policy
-  () const
-
-
-

Const access to the Size_Policy object - used.

-
-
-Trigger_Policy &
-  get_trigger_policy
-  ()
-
-
-

Access to the Trigger_Policy - object used.

-
-
-const Trigger_Policy &
-  get_trigger_policy
-  () const
-
-
-

Access to the Trigger_Policy - object used.

-
- -

Size Access Methods

- -

These methods are available only if the external size - parameter indicates that external size access is allowed.

- - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-inline size_type 
-  get_actual_size
-  () const
-
-
-

Returns the actual size of the container.

- -

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 - External_Size_Access - == false.

-
-
-void 
-  resize
-  (size_type suggested_new_size)
-
-
-

Resizes the container to suggested_new_size, a suggested size - (the actual size will be determined by the Size_Policy - object).

- -

Calling this method will not compile when External_Size_Access - == false.

-
- -

Protected Methods

- -

Insert Search - Notifications.

- -

Notifications called during an insert operation.

- - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-inline void
-  notify_insert_search_start
-  ()
-
-
-

Notifies a search started.

-
-
-inline void
-  notify_insert_search_collision
-  ()
-
-
-

Notifies a search encountered a collision.

-
-
-inline void
-  notify_insert_search_end
-  ()
-
-
-

Notifies a search ended.

-
- -

Find Search - Notifications.

- -

Notifications called during a find operation.

- - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-inline void
-  notify_find_search_start
-  ()
-
-
-

Notifies a search started.

-
-
-inline void
-  notify_find_search_collision
-  ()
-
-
-

Notifies a search encountered a collision.

-
-
-inline void
-  notify_find_search_end
-  ()
-
-
-

Notifies a search ended.

-
- -

Erase Search - Notifications.

- -

Notifications called during an insert operation.

- - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-inline void
-  notify_erase_search_start
-  ()
-
-
-

Notifies a search started.

-
-
-inline void
-  notify_erase_search_collision
-  ()
-
-
-

Notifies a search encountered a collision.

-
-
-inline void
-  notify_erase_search_end
-  ()
-
-
-

Notifies a search ended.

-
- -

Content Change - Notifications

- -

Notifications called when the content of the table changes - in a way that can affect the resize policy.

- - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-inline void
-  notify_inserted
-  (size_type num_e)
-
-
-

Notifies an element was inserted.

-
-
-inline void
-  notify_erased
-  (size_type num_e)
-
-
-

Notifies an element was erased.

-
-
-void 
-  notify_cleared
-  ()
-
-
-

Notifies the table was cleared.

-
- -

Size Change - Notifications

- -

Notifications called when the table changes size.

- - - - - - - - - - - - - -
MethodDescription
-
-void
-  notify_resized
-  (size_type new_size)
-
-
-

Notifies the table was resized to new_size.

-
- -

Queries

- -

Called to query whether/how to resize.

- - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-inline bool
-  is_resize_needed
-  () const
-
-
-

Queries whether a resize is needed.

-
-
-size_type
-  get_new_size
-  (size_type size, 
-    size_type num_used_e) const
-
-
-

Queries what the new size should be, when the container - is resized naturally. The current size of the container - is size, and the number - of used entries within the container is num_used_e.

-
- -

Private Methods

- -

Overrides

- - - - - - - - - - - - - -
MethodDescription
-
-virtual void
-  do_resize
-  (size_type new_size)
-
-
-

Resizes to new_size.

-
-
- - 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 deleted file mode 100644 index 60c30fd343c..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/hash_text_find_find_timing_test.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - -Hash Text Find Timing Test - - - -
-

Hash-Based Text find Find Timing Test

-

Description

-

This test inserts a number of values with keys from an - arbitrary text ([ wickland96thirty ]) into - a container, then performs a series of finds using - find . It measures the average time for find - as a function of the number of values inserted.

-

(The test was executed with text_find_timing_test - thirty_years_among_the_dead_preproc.txt 200 200 2100)

-

Purpose

-

The test checks the effect of different range-hashing - functions, trigger policies, and cache-hashing policies (see - Design::Associative - Containers::Associative Containers::Hash-Based Containers::Hash - Policies and Design::Associative - Containers::Hash-Based Containers::Resize Policies ).

-

Results

-

Figures NCCG, NCCM - and NCCL show the results for the native - and collision-chaining types in g++, msvc++, and - local, - respetively.

-
-
-
-
-
no image
NCCG: Native and collision-chaining hash text find timing test using find - g++

In the above figure, the names in the legends have the following meaning:

-
    -
  1. -n_hash_map_ncah- -std::tr1::unordered_map with cache_hash_code = false
  2. -
  3. -cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mod_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_prime_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/1
  4. -
  5. -cc_hash_mask_exp_nea_lc_1div8_1div2_sth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mask_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2
  6. -
  7. -cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mask_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/1
  8. -
  9. -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mask_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2
  10. -
-
-
-
-
-
-
-
-
-
-
no image
NCCM: Native and collision-chaining hash text find timing test using find - msvc++

In the above figure, the names in the legends have the following meaning:

-
    -
  1. -n_hash_map_ncah- -stdext::hash_map
  2. -
  3. -cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mod_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_prime_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/1
  4. -
  5. -cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mask_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/1
  6. -
  7. -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mask_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2
  8. -
  9. -cc_hash_mask_exp_nea_lc_1div8_1div2_sth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mask_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2
  10. -
-
-
-
-
-
-
-
-
-
-
no image
NCCL: Native and collision-chaining hash text find timing test using find - local
-
-
-
-
-

Observations

-

In this setting, the range-hashing scheme (See Design::Associative - Containers::Hash-Based Containers::Hash Policies ) affects - performance more than other policies. As Figure NCCG 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 [ - knuth98sorting - ].

-

Trigger policies (see Design::Associative - Containers::Hash-Based Containers::Resize Policies ), - i.e. the load-checks constants, affect performance to a - lesser extent.

-

Perhaps surprisingly, storing the hash value alongside each - entry affects performance only marginally, at least in - pb_ds 's implementation. (Unfortunately, it was not - possible to run the tests with std::tr1::unordered_map - 's cache_hash_code = true , as it appeared to - malfuntion.)

-

Observations::Hash-Based - Containers' Policies summarizes some observations on - hash-based containers' policies.

-
- - 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 deleted file mode 100644 index bfbb3b0866f..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/hash_zlob_random_int_find_find_timing_test.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - -Hash Skewed Distribution Memory Use Test - - - -
-

Hash-Based Skewed-Distribution Random-Integer find - Find Timing Test

-

Description

-

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 find . It measures the average - time for find 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.

-

(The test was executed with hash_zlob_random_int_find_timing_test - 200 200 2100)

-

Purpose

-

The test checks the effect of different range-hashing - functions and trigger policies (see Design::Associative - Containers::Hash-Based Containers::Hash Policies and - Design::Associative - Containers::Hash-Based Containers::Resize Policies).

-

Results

-

Figures NHG, NHM, and - NHL show the results for various hash-based - associative-containers in g++, MSVC++, and - local, - respectively.

-
-
-
-
-
no image
NHG: Skewed-distribution random int find timing test using find - g++

In the above figure, the names in the legends have the following meaning:

-
    -
  1. -cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mask_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/1
  2. -
  3. -gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map- -gp_hash_table - with Comb_Hash_Fn = direct_mod_range_hashing -, Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_prime_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2, and Probe_Fn = quadratic_probe_fn -
  4. -
  5. -n_hash_map_ncah- -std::tr1::unordered_map with cache_hash_code = false
  6. -
  7. -cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mod_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_prime_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/1
  8. -
-
-
-
-
-
-
-
-
-
-
no image
NHM: Skewed-distribution random int find timing test using find - msvc++

In the above figure, the names in the legends have the following meaning:

-
    -
  1. -n_hash_map_ncah- -stdext::hash_map
  2. -
  3. -cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mask_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_exponential_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/1
  4. -
  5. -gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map- -gp_hash_table - with Comb_Hash_Fn = direct_mod_range_hashing -, Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_prime_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/2, and Probe_Fn = quadratic_probe_fn -
  6. -
  7. -cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map- -cc_hash_table -with Comb_Hash_Fn = direct_mod_range_hashing -, and Resize_Policy = hash_standard_resize_policy - with Size_Policy = hash_prime_size_policy -, and Trigger_Policy = hash_load_check_resize_trigger - with αmin = 1/8 and αmax = 1/1
  8. -
-
-
-
-
-
-
-
-
-
-
no image
NHL: Skewed-distribution random int find timing test using find - local
-
-
-
-
-

Observations

-

In this setting, the keys' distribution is so skewed that - the unerlying hash-table type affects performance marginally. - (This is in contrast with Hash-Based Text - find Find Timing Test , Hash-Based - Random-Integer find Find Timing Test , Hash-Based - Random-Integer Subscript Find Timing Test and Hash-Based - Random-Integer Subscript Insert Timing Test .)

-

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 NHG and - NHM , it should be noted that - std::tr1::unordered_map and stdext::hash_map - are hard-wired currently to mod-based and mask-based schemes, - respectively.

-

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. (shift_mask.cc - shows an example of handling this a-priori known skewed - distribution with a mask-based range-hashing function). If hash - performance is bad, a Χ2 test can be used - to check how to transform it into a more uniform - distribution.

-

For this reason, pb_ds's default range-hashing - function is mask-based.

-

Observations::Hash-Based - Container Types summarizes some observations on hash-based - containers; Observations::Hash-Based - Containers' Policies summarizes some observations on - hash-based containers' policies.

-
- - 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 deleted file mode 100644 index 8d170db1a2aede74640d042caba4082ba914b545..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6910 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 a1C}!wqQ?>QO(n)Z2gU}b`mgnF;r|V`r1JIv 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 deleted file mode 100644 index 81848ba8b2e3d445667e8fd3f9b75a37d0d978a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38509 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 diff --git a/libstdc++-v3/doc/html/ext/pb_ds/index.html b/libstdc++-v3/doc/html/ext/pb_ds/index.html deleted file mode 100644 index 4c73c2e915a..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/index.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - Policy-Based Data Structures - - - - -
-

Policy-Based Data Structures

- -
Ami Tavory and Vladimir Dreizin, IBM Haifa Research - Laboratories, and Benjamin Kosnik, Red Hat
- -
pbassoc@gmail.com
- -

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 std - and std::tr1 (except for some points where it differs by - design).

- -

The documentation is organized as follows:

- -
    -
  1. - Introductory - -
      -
    1. Introduction
    2. - -
    3. Motivation
    4. - -
    5. Usage - Prerequisites
    6. -
    -
  2. - -
  3. - Interface - -
      -
    1. Short Tutorial
    2. - -
    3. Concepts
    4. - -
    5. Specifics
    6. -
    -
  4. - -
  5. - Design - -
      -
    1. - Associative Containers - -
        -
      1. Data-Structure - Genericity and Interface
      2. - -
      3. Tree-Based - Containers
      4. - -
      5. Trie-Based - Containers
      6. - -
      7. Hash-Based - Containers
      8. - -
      9. List-Based - Containers
      10. -
      -
    2. - -
    3. Priority Queues
    4. -
    -
  6. - -
  7. - Examples - -
      -
    1. Associative - Containers
    2. - -
    3. Priority Queues
    4. -
    -
  8. - -
  9. - Tests - -
      -
    1. - Associative Containers - -
        -
      1. Regression - Tests
      2. - -
      3. Performance - Tests
      4. -
      -
    2. - -
    3. - Priority Queues - -
        -
      1. Regression - Tests
      2. - -
      3. Performance - Tests
      4. -
      -
    4. -
    -
  10. - -
  11. - Misc. - -
      -
    1. Acknowledgments
    2. - -
    3. Contact
    4. - -
    5. Disclaimer and - Copyright
    6. - -
    7. References
    8. -
    -
  12. -
-
- - diff --git a/libstdc++-v3/doc/html/ext/pb_ds/insert_error.html b/libstdc++-v3/doc/html/ext/pb_ds/insert_error.html deleted file mode 100644 index 37a89aaf9e0..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/insert_error.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - -insert_error Interface - - - - -
-

insert_error Interface

- -

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).

- -

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.

- -

Defined in: exception.hpp

- -

Base Classes

- - - - - - - - - - - - - -
ClassDerivation Type
-
-insert_error
-
-
-

public

-
-
- - diff --git a/libstdc++-v3/doc/html/ext/pb_ds/interface.html b/libstdc++-v3/doc/html/ext/pb_ds/interface.html deleted file mode 100644 index a48a8bbadde..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/interface.html +++ /dev/null @@ -1,446 +0,0 @@ - - - - - - -Interface - - - - -
-

Interface Specifics

- -

Following are the library's interface specifics. Short Tutorial is a short tutorial, and - Concepts describes some - concepts.

-
- -

Namespace

- -

All code is enclosed in namespace pb_ds. Nested within - this is namespace detail, which contains the parts of this - library that are considered implementation details.

-
- -

Containers

- -

Associative Containers

- -
    -
  1. container_base - - abstract base class for associative containers.
  2. - -
  3. Hash-based: - -
      -
    1. basic_hash_table - - abstract base class for hash-based - containers
    2. - -
    3. cc_hash_table - - concrete collision-chaining hash-based - containers
    4. - -
    5. gp_hash_table - - concrete (general) probing hash-based - containers
    6. -
    -
  4. - -
  5. Tree-based: - -
      -
    1. basic_tree - - abstract base class for tree and trie based - containers
    2. - -
    3. tree - - concrete base class for tree-based - containers
    4. - -
    5. trie - - concrete base class for trie-based - containers
    6. -
    -
  6. - -
  7. List-based: - -
      -
    1. list_update - - singly-linked list with update-policy container
    2. -
    -
  8. -
- -

Priority - Queues

- -
    -
  1. priority_queue - - priority queue
  2. -
-
- -

Container Tags and - Traits

- -

Container Tags

- -

Common

- -
    -
  1. container_tag - - base class for data structure tags
  2. -
- -

Associative-Containers

- -
    -
  1. associative_container_tag - - base class for associative-container data structure tags
  2. - -
  3. basic_hash_tag - - base class for hash-based structure tags
  4. - -
  5. cc_hash_tag - - collision-chaining hash structure tag
  6. - -
  7. gp_hash_tag - - (general) probing hash structure tag
  8. - -
  9. basic_tree_tag - - base class for tree-like structure tags
  10. - -
  11. tree_tag - - base class for tree structure tags
  12. - -
  13. rb_tree_tag - - red-black tree structure tag/li>
  14. - -
  15. splay_tree_tag - - splay tree structure tag
  16. - -
  17. ov_tree_tag - - ordered-vector tree structure tag
  18. - -
  19. trie_tag - - trie structure tag
  20. - -
  21. pat_trie_tag - - PATRICIA trie structure tag
  22. - -
  23. list_update_tag - list - (with updates) structure tag
  24. -
- -

Priority-Queues

- -
    -
  1. priority_queue_tag - base - class for priority-queue data structure tags
  2. - -
  3. pairing_heap_tag - - pairing-heap structure tag.
  4. - -
  5. binomial_heap_tag - - binomial-heap structure tag
  6. - -
  7. rc_binomial_heap_tag - - redundant-counter binomial-heap (i.e., a heap where - binomial trees form a sequence that is similar to a - de-amortized bit-addition algorithm) structure tag
  8. - -
  9. binary_heap_tag - - binary heap (based on an array or an array of nodes) - structure tag
  10. - -
  11. thin_heap_tag - thin - heap (an alternative [kt99fat_heaps] to - Fibonacci heap) data structure tag.
  12. -
- -

Invalidation-Guarantee - Tags

- -
    -
  1. basic_invalidation_guarantee - - weakest invalidation guarantee
  2. - -
  3. point_invalidation_guarantee - - stronger invalidation guarantee
  4. - -
  5. range_invalidation_guarantee - - strongest invalidation guarantee
  6. -
- -

Container - Traits

- -
    -
  1. container_traits - - traits for determining underlying data structure - properties
  2. -
-
- -

Container Policy Classes

- -

Hash Policies

- -

Hash and Probe Policies

- -
    -
  1. Hash Functions: - -
      -
    1. null_hash_fn - - type indicating one-step range-hashing
    2. -
    -
  2. - -
  3. Range-Hashing Functions: - -
      -
    1. Sample - range-hashing function - interface required of a - range-hashing functor
    2. - -
    3. direct_mask_range_hashing - - (bit) mask-based range hashing functor
    4. - -
    5. direct_mod_range_hashing - - modulo-based range hashing functor
    6. -
    -
  4. - -
  5. Probe Functions: - -
      -
    1. Sample probe - function - interface required of a probe functor
    2. - -
    3. null_probe_fn - type - indicating one-step ranged-probe
    4. - -
    5. linear_probe_fn - - linear-probe functor
    6. - -
    7. quadratic_probe_fn- - quadratic-probe functor
    8. -
    -
  6. - -
  7. Ranged-Hash Functions: - -
      -
    1. Sample - ranged-hash function - interface required of a - ranged-hash functor
    2. -
    -
  8. - -
  9. Ranged-Probe Functions: - -
      -
    1. Sample - ranged-probe function - interface required of a - ranged-probe functor
    2. -
    -
  10. -
- -

Resize Policies

-
    -
  1. Resize Policies: - -
      -
    1. Sample resize - policy - interface required of a resize policy
    2. - -
    3. hash_standard_resize_policy - - standard resize policy
    4. -
    -
  2. - -
  3. Size Policies: - -
      -
    1. Sample size - policy - interface required of a size policy
    2. - -
    3. hash_exponential_size_policy - - exponential size policy (typically used with (bit) mask - range-hashing)
    4. - -
    5. hash_prime_size_policy - - prime size policy (typically used with modulo - range-hashing)
    6. -
    -
  4. - -
  5. Trigger Policies: - -
      -
    1. Sample trigger - policy - interface required of a trigger policy
    2. - -
    3. hash_load_check_resize_trigger - - trigger policy based on load checks
    4. - -
    5. cc_hash_max_collision_check_resize_trigger - - trigger policy based on collision checks
    6. -
    -
  6. -
- -

Tree Policies

- -

Tree Node-Update Policies

- - -
    -
  1. Sample node -updater policy - interface required of a tree -node-updating functor
  2. - -
  3. null_tree_node_update -- null policy indicating no updates are required
  4. - -
  5. tree_order_statistics_node_update -- updater enabling order statistics queries
  6. -
- -

Trie Policies

- - -

Trie Element-Access Traits

- -
    -
  1. Sample - element-access traits - interface required of - element-access traits
  2. - -
  3. string_trie_e_access_traits - - String element-access traits
  4. -
- -

Trie Node-Update Policies

- - -
    -
  1. Sample node -updater policy - interface required of a trie node -updater
  2. - -
  3. null_trie_node_update -- null policy indicating no updates are required
  4. - -
  5. trie_prefix_search_node_update -- updater enabling prefix searches
  6. - -
  7. trie_order_statistics_node_update -- updater enabling order statistics queries
  8. -
- -

List Policies

- -

List Update Policies

- - -
    -
  1. Sample list update - policy - interface required of a list update policy
  2. - -
  3. move_to_front_lu_policy - - move-to-front update algorithm
  4. - -
  5. counter_lu_policy - - counter update algorithm
  6. -
- -

Mapped-Type Policies

- - -
    -
  1. null_mapped_type - data - policy indicating that a container is a "set"
  2. -
-
- -

Exceptions

- - -
    -
  1. container_error - - base class for all policy-based data structure errors
  2. - -
  3. insert_error
  4. - -
  5. join_error
  6. - -
  7. resize_error
  8. -
- -
- - diff --git a/libstdc++-v3/doc/html/ext/pb_ds/introduction.html b/libstdc++-v3/doc/html/ext/pb_ds/introduction.html deleted file mode 100644 index b3ccbd76aee..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/introduction.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - Introduction - - - - -
-

Introduction

- -

This section describes what problems the library attempts to - solve. Motivation describes the - reasons we think it solves these problems better than similar - libraries.

- -

Associative Containers

- -
    -
  1. 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.e., 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.

  2. - -
  3. 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 Cntnr: -
    -template<typename Cntnr>
    -  void
    -  some_op_sequence(Cntnr& r_cnt)
    -  {
    -    ...
    -  }
    -
    - -then what can one assume about Cntnr? The answer -varies according to its underlying data structure. If the -underlying data structure of Cntnr 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 Cntnr -is based on a collision-chaining hash table, then modifying -r_Cntnr 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 r_cnt can efficiently be split; otherwise, it -cannot, in general. If the underlying data structure is a red-black -tree, then splitting r_cnt is exception-free; if it is an -ordered-vector tree, exceptions can be thrown. -

  4. -
- -

Priority Queues

- -

Priority queues are useful when one needs to efficiently - access a minimum (or maximum) value as the set of values - changes.

- -
    -
  1. 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...

  2. - -
  3. Priority queues, like hash-based containers, store values in - an order that is meaningless and undefined externally. For - example, a push 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.

  4. - -
  5. Roughly speaking, any element that is both inserted to a - priority queue (e.g., through push) and removed - from it (e.g., through pop), 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) push and pop 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.

  6. -
-
- - 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 deleted file mode 100644 index 1f9d1243c6a3f44738f275d382f3db7fa6348a67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8331 zcmeHtc{tSX_xBiYHG~-zMU1g$D^WgKVh~DXUsFtFUs`0ZVOmV6lw7)d@1GfSzwi5;bD#Bf&Re+2NqsI30S*)j z#dZAHQ8N^ZRUZESg+aroSf=JF_+s%f)7M57Gz*Tw55z^wNDGB}5w&fN#0I|!=Z={f zp-@4RC{*Z8I0#Fj-%%)E1r%!B5rtAsK%sVBOnGgp4qMreAJwu5I5YVrvrzE!V$JO1 zvJj$-<@4|-&)?I`xE(yQF5m7A2pO5h!7_5&- zC<=`sY<{#$&6uv=7Zv@lg|$_s<2(QN_5$rt>S?y}jDL0$LPO^jg8xklSGJvHlw^(G zFZVBEKhjWG<~kp!=pSAMN8vDg1?^vlX~Af9&m~adKTkK0(}=z8C8)QhN|1paAQ9y-bD_L zK7^T}3B=SA9YtC2$~-Y7^(H(q1B+JAi_&=hXa{^h)H_qfiT4Yv6D6430D-h@IT6Y2 z{iGdQ{B?{UEdOzYJp#KTckRck2PkZ7Sdb1`z4*bdg0m`k$-6?sUgYInZ_ntKkLcK;*Lm+q{cASDp7TA-~iO}9j@Z>%@Q@6R?2TpdVKoV#ck z)HT5IVA2S0b@TGspvLWLA)WTKN0dadYCAHJ75oRu+CxUDewCsm}jDO71 zpY_4TW#HUE1L;M;zUXQ`%ZASqM?dB*&|Yd+ydQHS z+Rn^=d-uxOu)f0}O+{j>;L}T2q;%_@tPmmIWVa~oceDiF@LH|UB$2G1bLWQ=1snRK z2L@8-OVzMy>6yGZR|*R2k-6)DI=%-Z$#yyZZP+J@|i7bj&-8yv6L_s!?oGXHDbelyp>+8Lkv09kLnFdo&SyK2K0 z&k}6=q{m`cd1Q56V(JE*WhgIy9xKUCHpCA6&+hwmL7dH3Mg-r^BOKe<_h2fI@pI^6D&I3QGrtd&m)h%K8%YC*bl`BA zN5IaV)6RJhs9e<&d}gsvqwV-?d6W5rx=h*|+$9F0>-MhPPHT>_6ken;TC?`QV0*&Q z4l9XQH(wl#u(7TE-YmmRrRHD%D2lO9MPbW>wuy(6yQ&9`b>aeX(l!kS0e{)=TCQxi5Q1oE23xK6rj7F~mxBu(ED<=oaTK z)#bRxz6W;gU1()^%ZQ_6GpKm0v%J_nufC|9N~fmkwAdp(5M(`Lw+wMM^Q$D?>^Itj z0nc2GR_qn0vgMz|2$E;w^?bWx8S}J3(Xp#eR`mlp)Vmt*nsghq>{PIg9g3BQV+0Bk z$IYjDhe%mOF>E7|nn`WGVlEYz!>3Y(;d@Qkijc)=oukpA-0U}BJ`S#pHL#|%45a_GS$n5( z&$*EybI=rn$l&@(yo7C(8VhuOpbdHc+7%=D5rc2sJDRaJ-^h5|)6#{pj5%5?#g3aI z%hUf)T7HKq9wDt1?$WpZmak@b82f0B{H@;DIErfI;v|li-_cK!_t*C>7i&$TP8P5* zr4y)L+184>{mN+drVV0-2;{O%=i*cjtVg-#OC3iU$ak?ZmoOIKm@>pEF$6o274@7L zO6_LF9E6;DsQnJze1PP&r0<6@l&E1mjaKBQa3BFTZ11n#>?d7YFy+O}K>eVE!NtRp zKKjY1=S^N$CfTJlA>TSOri zg-teSIQ%b-Eb&~YE`HRv1d$-K3W(M)1l;wQ&t_=!RWUW>DP&#q2J6kB0>E}o3W+Wm@Z95}X#QSl5e`|KoeudOd|nS3Jm%T=Q&E5g z>4D19GZB6V>KC!UaewvNm~qIjT!(cIUZ{Z?njlnl+H(wrjHw8mA8Afit6r|%PhKkj zdTn*GbbaU3?Xat#71SU`2ql&yg9<-38RT?nZp=mnFHMys=QKg7rs#tDL_H-%LTiTE zhe%!J{?mglSAC`;_g4k{{Lwwki1<_KL6q?qeC#ZUGtYYlEg>3jRqWX*xj;*F8|Qe%Vw7jakrzQrThLL1^7Z$-K;q^%3tp5!^vRp*2CXbTk@sP~UOr zR4qd={Lp6^c90+tWC>hr(nC?U;g+kh*0urPNtvz=A?u55XYIBFFen4F`muf277eYD zL+fCZ4}Emp)Ws#x#q5^jSQdo5wiHd=1Sjj@#_Nj~x|jvMnn0TiLY7!GW{rx%7VU!l zzOa9hyB_w(fg~sD6R9Y43AmNr<612gr3XywH8=?J*n?5`9r(sWbd&|jtW+h8k)J0* zsgtEkGWr?*KxBzK7fYFhP+(4Ha)7!IgSuTn-4j4!LMU1ojgbRaj*C_TR_-8C$+5^A zzzVQR&)ZrZ6y+6=wLe=Y7FuHk?DMY}q=6Oz2VI!9yhoe{BGW=v!e}Ny5BgUfUP5RM z+_b3~tkwx6I@QEA5uA-dC{f-&SA+5|xBU!mWH@->bKG^ih<2$N{Iu zV$^xM_5&FD+LtRx>4S%TYIzz6-8hu$RZW!v!r#EXQ^7>}KqBA&7#TyL#h|dK44Tyu zTn^Z?LsXs{SV;n_9lPLGBcMQ^aQ-M1`V=H#`X}i?QJMp&t-8`$1zib5D*bJ)VLa2} zQe>z{R0s@PK5Z1L51Xf1CN^&3EstFW0vRw(! zg3zJhdp$9qJL*^sY9j|1UPgj|NYFIx7p_YKXsqL(1A4p%O#QZ?F~yLiOZr4sz>a1h zkhID?Se}msZxva57+56(D8sm8jq%_DL3a=r9X4Ze68OAICk;OjJ zq6qC8&{#cU!GgvJ0@ELy2+kEMokyk49N6&*2xNA7L?o0b4_?9Nb_rN11FPh+01QC^ zESh|xDFDHBae$PuC+l}m)&SrDE;3ALQ6CI+I;%&wRT@tim}GZ&|lRnTcKzr z=6@^4P>G*G%+HgSy?&Uh^B?|7zxK1+e;+b}TW)mNn41}3OnUkxLJ%i_98x&f>%@SB zt?oNgyDYZTKRoS`utn~Hx6;|rMz|TG*CVb|C*IJz?cNPV{^=knlI#H)%H46D4_|uy z@u0)HHGy5y+I{*N94y#&nS|hNXPFC~ri(wKz@82*mc8PzEXn*7WJWjo6P4KzZ00vB zqKLd`e2%5U65m_;Sbo-cw=kHeIxV;CI4m2{pDaH1O#TyOCn0pRF@eGq8ARPA*Ktbz zwpZIJ{f;8Y!JZ*UtS>!;m z#2Y~cga7>kq105-p=-!x^j74mizXjN5#L`?VXtI`^}Fcsu19+-UXlN zM;#Zpx~GWfu8V9H)7;$`en3TzTt!}2?TbiPkxh~QF?!!IF?zc0{Z-Q`ti!ugjEiF= z#)FlqR>oX2NkAg8sc22r;M>!<_=A_%T!Weg!kT5y+Bhr9JVxX_g*C}*3uA5eQd>vg zCQs#+9J2nZ>>=SS1R;4Wlxl=H?MBB-(0;KV8j`G#S|gl{9@PD%RdIXul2l8gS?H(N zgU)~Y49wA#skf0?`cAcpXNhv#tLq|1ThghwV#IO-c&eSh@5V6(eQ%z?%F4c7-+s_r zuh(!|;ckptJwwb1==IqF;XC>6?dIzkc~x}%#$U~Bc6Lz1CPbo4#ynxP0-`U z3s~Cb@3iFO_m!1Tl}lHuUA{;@-Lvm9-YSXb+~EA%hj?X?@~pckj@*55)O?VknyAr3>$@%PTHjJ9!FUAryuW?E0v!hvy5gb$R+EXHBn%)^ypW zcD?u)-S)s=C!lcbgaGG|IEO1cOz9BLSy`vGKb^a<^hPSoe-7)<^;^|?L!e`Xzk}30 zeBoNG|Ge?_;r9a$XxXotk>6F8XQrvVJWafFYG-&}=RI`eRBAdfoHOkzkX7sxWN%BZ zNZvnq@|pk6ptp~Sd-$SFKkX{2%M-1S577u*XtrB*Tl6ZjI@<|&BpkBFQIjx{i?--o zO_RpIJDldd$%|{H_od@kxacG1X%G6xna+BiI)GESKwz$jPGZ03=H8Z-8@aYdD^=Fy z36JG3g++~(?P!L@yzg!66!P#ymekdFgC`BI!M-xK+peR~zoBOQ*n%Vx`YAm}_t4{R zdKH!2tKUUA0I0^8(28tk(H>ffxMy;{uVK|cX#BsYvj6XMF_fg2^7&Fu%;HUSaWMjg zRnvXHim?!xnJoQE9@2KypcGd9dfvdzi?AU3HfLZ+t}fU{9!<*8T&XwSSbnEjP?F)h ziN5_HUHb)z?0}-L-QQOkthw6VLf)89uMV8wLfC}1N>JpB!eq8m3NUX;U8CtCWEfsm zZ!8u%kXM|nOQg2|Dh~LaM(u{O-nx%+m~(Ywb(+C|4I#D0`e!HU2F?HrZUcn7`9T~2 zv^qtdGx9LWvG7b~5a9b=4p%R&&_p*8^CE~6l&7nWqSzvH3V8uG6?^@i^Uo>3e6Cdv zFodUvcvwvVdklk?N#(jQm2_{AhnTSo#EU=qoRw0A;f$)9^Qq5kd0^vk&58>h3@GVm z6>EDG@dh&3>#=MJ$L{vID+Ee!4iMV_i;U&nIf|kfAmrr%s{eFftfLM#GI^up{1asi zfaG{Mzpupx0nJ3!yk|6@YVzFF$3Jc5F*d+?0HKrt=PdvLUhJ{;6=}tSl*aolH$53J zT{q8vG=ln{R^oqJiT}7(qAa||zhDpM>Ri24OWKheqkAdBB430or_ehj3iUB!t|un z3IPd6=E0ubZXyba0HN+Q5RrYyYgiYfuauu=(#Pl}98502-^o_8#a@8Fy_T{+{_srJ z+ao5ANJ2~Z(3JmnjRYY7Gtu6q9!%vgbSqLhw48oz?ziYhHLN9*8wZn8z1m#QJ-$_Q z9{4NDu=12`BL5SgCjGpaPnn%Eo_|3p^|s4zr2`%Mmvp_NA};~2JH@yJLjat5P6Twk zct0iR`0FnPUd$^@yIYfC&_NjG^7beL9r|jUs~_Dc>+S}D3 zEb&VAK9x)R0)0!lTZuMP5^AVlh`@(tx?AyqPuh-((4z6jQZV+>p0kL)u1uiAoHEYp?pD65tY?QY1OP6XrHG@P*xuF2x>y^z3yW8`sS}f|TVU{R z{2WkyJu*Mq@@+#!EB=Y9e
-

gp_hash_table Interface

- -

A concrete general-probing hash-based associative - container.

- -

Defined in: assoc_container.hpp

- -

Template Parameters

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterDescriptionDefault Value
-
-typename Key
-
-
-

Key type.

-
-
-
-typename Mapped
-
-
-

Mapped type.

-
-
-
-class Hash_Fn 
-
-
-

Hash functor.

-
-
-__gnu_cxx::hash<Key>
-
if using gcc; -
-stdext::hash_value<Key>
-
if using Visual C++ .net -
-
-class Eq_Fn 
-
-
-

Equivalence functor.

-
-
-std::equal_to<Key>
-
-
-
-class Comb_Probe_Fn 
-
-
-

Combining probe functor.

- -

If Hash_Fn is - null_hash_fn, and Probe_Fn is null_probe_fn, then this is the - ranged-probe functor; otherwise, this is the - range-hashing functor.

- -

(See Design::Hash-Based - Containers::Hash Policies.)

-
direct_mask_range_hashing
-
-class Probe_Fn 
-
-
-

Probe functor.

-
- If Comb_Probe_Fn - is direct_mask_range_hashing, then -
-linear_probe_fn<
-  typename Comb_Probe_Fn::size_type>
-
otherwise, -
-quadratic_probe_fn<
-  typename Comb_Probe_Fn::size_type>
-
-
-
-class Resize_Policy 
-
-
-

Resize policy.

-
- If Comb_Probe_Fn - is direct_mask_range_hashing, - then -
-hash_standard_resize_policy<
-  hash_exponential_size_policy<
-    typename Comb_Probe_Fn::size_type>,
-  hash_load_check_resize_trigger<
-    typename Comb_Probe_Fn::size_type>,
-  false,
-  typename Comb_Probe_Fn::size_type>
-
otherwise, -
-hash_standard_resize_policy<
-  hash_exponential_size_policy<
-    typename Comb_Probe_Fn::size_type>,
-  hash_load_check_resize_trigger<
-    typename Comb_Probe_Fn::size_type>,
-  false,
-  typename Comb_Probe_Fn::size_type>
-
-
-
-bool Store_Hash 
-
-
-

Indicates whether the hash value will be stored along - with each key.

- -

If hash_fn is null_hash_fn, then the container - will not compile if this value is - true

-
-
-false
-
-
-
-class Allocator 
-
-
-

Allocator type.

-
-
-std::allocator<char>
-
-
- -

Base Classes

- - - - - - - - - - - - - -
ClassDerivation Type
-
-basic_hash_table
-
-
-

public

-
- -

Public Types and - Constants

- -

Policy Definitions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeDefinitionDescription
-
-hash_fn
-
-
-
-Hash_Fn
-
-
-

Hash functor type.

-
-
-eq_fn
-
-
-
-Eq_Fn
-
-
-

Equivalence functor type.

-
-
-comb_probe_fn
-
-
-
-Comb_Probe_Fn
-
-
-

Combining probe functor type.

-
-
-probe_fn
-
-
-
-Probe_Fn
-
-
-

Probe functor type.

-
-
-resize_policy
-
-
-
-Resize_Policy
-
-
-

Resize policy type.

-
- -

Public Methods

- -

Constructors, Destructor, and - Related

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-  gp_hash_table
-  ()
-
-
-

Default constructor.

-
-
-  gp_hash_table
-  (const hash_fn &r_hash_fn)
-
-
-

Constructor taking some policy objects. r_hash_fn will be copied by the - hash_fn object of - the container object.

-
-
-  gp_hash_table
-  (const hash_fn &r_hash_fn, 
-    const eq_fn &r_eq_fn)
-
-
-

Constructor taking some policy objects. r_hash_fn will be copied by the - hash_fn object of - the container object, and r_eq_fn will be copied by the - eq_fn object of the - container object.

-
-
-  gp_hash_table
-  (const hash_fn &r_hash_fn, 
-    const eq_fn &r_eq_fn, 
-    const comb_probe_fn &r_comb_probe_fn)
-
-
-

Constructor taking some policy objects. r_hash_fn will be copied by the - hash_fn object of - the container object, r_eq_fn will be copied by the - eq_fn object of the - container object, and r_comb_probe_fn will be copied by - the comb_probe_fn - object of the container object.

-
-
-  gp_hash_table
-  (const hash_fn &r_hash_fn, 
-    const eq_fn &r_eq_fn, 
-    const comb_probe_fn &r_comb_probe_fn,
-    const probe_fn &r_probe_fn)
-
-
-

Constructor taking some policy objects. r_hash_fn will be copied by the - hash_fn object of - the container object, r_eq_fn will be copied by the - eq_fn object of the - container object, r_comb_probe_fn will be copied by - the comb_probe_fn - object of the container object, and r_probe_fn will be copied by the - probe_fn object - of the container object.

-
-
-  gp_hash_table
-  (const hash_fn &r_hash_fn, 
-    const eq_fn &r_eq_fn, 
-    const comb_probe_fn &r_comb_probe_fn, 
-    const probe_fn &r_probe_fn,
-    const resize_policy &r_resize_policy)
-
-
-

Constructor taking some policy objects. r_hash_fn will be copied by the - hash_fn object of - the container object, r_eq_fn will be copied by the - eq_fn object of the - container object, r_comb_probe_fn will be copied by - the comb_probe_fn - object of the container object, r_probe_fn will be copied by the - probe_fn object - of the container object, and r_resize_policy will be copied by - the Resize_Policy - object of the container object.

-
-
-template<
-    class It>
-  gp_hash_table
-  (It first_it, 
-    It last_it)
-
-
-

Constructor taking iterators to a range of - value_types. The value_types between first_it and last_it will be inserted into the - container object.

-
-
-template<
-    class It>
-  gp_hash_table
-  (It first_it, 
-    It last_it,
-    const hash_fn &r_hash_fn)
-
-
-

Constructor taking iterators to a range of value_types - and some policy objects. The value_types between - first_it and - last_it will be inserted - into the container object. r_hash_fn will be copied by the - hash_fn object of - the container object.

-
-
-template<
-    class It>
-  gp_hash_table
-  (It first_it, 
-    It last_it,
-    const hash_fn &r_hash_fn, 
-    const eq_fn &r_eq_fn)
-
-
-

Constructor taking iterators to a range of value_types - and some policy objects. The value_types between - first_it and - last_it will be inserted - into the container object. r_hash_fn will be copied by the - hash_fn object of - the container object, and r_eq_fn will be copied by the - eq_fn object of the - container object.

-
-
-template<
-    class It>
-  gp_hash_table
-  (It first_it, 
-    It last_it,
-    const hash_fn &r_hash_fn, 
-    const eq_fn &r_eq_fn, 
-    const comb_probe_fn &r_comb_probe_fn)
-
-
-

Constructor taking iterators to a range of value_types - and some policy objects. The value_types between - first_it and - last_it will be inserted - into the container object. r_hash_fn will be copied by the - hash_fn object of - the container object, r_eq_fn will be copied by the - eq_fn object of the - container object, and r_comb_probe_fn will be copied by - the comb_probe_fn - object of the container object.

-
-
-template<
-    class It>
-  gp_hash_table
-  (It first_it, 
-    It last_it,
-    const hash_fn &r_hash_fn, 
-    const eq_fn &r_eq_fn, 
-    const comb_probe_fn &r_comb_probe_fn,
-    const probe_fn &r_probe_fn)
-
-
-

Constructor taking iterators to a range of value_types - and some policy objects. The value_types between - first_it and - last_it will be inserted - into the container object. r_hash_fn will be copied by the - hash_fn object of - the container object, r_eq_fn will be copied by the - eq_fn object of the - container object, r_comb_probe_fn will be copied by - the comb_probe_fn - object of the container object, and r_probe_fn will be copied by the - probe_fn object - of the container object.

-
-
-template<
-    class It>
-  gp_hash_table
-  (It first_it, 
-    It last_it,
-    const hash_fn &r_hash_fn, 
-    const eq_fn &r_eq_fn, 
-    const comb_probe_fn &r_comb_probe_fn, 
-    const probe_fn &r_probe_fn,      
-    const resize_policy &r_resize_policy)
-
-
-

Constructor taking iterators to a range of value_types - and some policy objects. The value_types between - first_it and - last_it will be inserted - into the container object. r_hash_fn will be copied by the - hash_fn object of - the container object, r_eq_fn will be copied by the - eq_fn object of the - container object, r_comb_probe_fn will be copied by - the comb_probe_fn - object of the container object, r_probe_fn will be copied by the - probe_fn object - of the container object, and r_resize_policy will be copied by - the resize_policy - object of the container object.

-
-
-  gp_hash_table
-  (const gp_hash_table &other)
-
-
-

Copy constructor.

-
-
-virtual 
-  ~gp_hash_table
-  ()
-
-
-

Destructor.

-
-
-gp_hash_table &
-  operator=
-  (const gp_hash_table &other)
-
-
-

Assignment operator.

-
-
-void
-  swap
-  (gp_hash_table &other)
-
-
-

Swaps content.

-
- -

Policy Access Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-comb_probe_fn &
-  get_comb_probe_fn
-  ()
-
-
-

Access to the comb_probe_fn - object.

-
-
-const comb_probe_fn &
-  get_comb_probe_fn
-  () const
-
-
-

Const access to the comb_probe_fn - object.

-
-
-probe_fn &
-  get_probe_fn
-  ()
-
-
-

Access to the probe_fn object.

-
-
-const probe_fn &
-  get_probe_fn
-  () const
-
-
-

Const access to the probe_fn object.

-
-
-

cc_hash_table Interface

- -

A concrete collision-chaining hash-based associative - container.

- -

Defined in: assoc_container.hpp

- -

Template Parameters

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterDescriptionDefault Value
-
-typename Key
-
-
-

Key type.

-
-
-
-typename Mapped
-
-
-

Mapped type.

-
-
-
-class Hash_Fn 
-
-
-

Hash functor.

-
-
-__gnu_cxx::hash<Key>
-
if using gcc; -
-stdext::hash_value<Key>
-
if using Visual C++ .net -
-
-class Eq_Fn 
-
-
-

Equivalence functor.

-
-
-std::equal_to<Key>
-
-
-
-class Comb_Hash_Fn 
-
-
-

Combining hash functor.

- -

If Hash_Fn is - not null_hash_fn, then this is the - ranged-hash functor; otherwise, this is the range-hashing - functor.

- -

(See Design::Hash-Based - Containers::Hash Policies.)

-
-
-direct_mask_range_hashing
-
-
-
-class Resize_Policy 
-
-
-

Resize policy.

-
- If Comb_Hash_Fn - is direct_mask_range_hashing, - then -
-hash_standard_resize_policy<
-  hash_exponential_size_policy<
-    typename Comb_Hash_Fn::size_type>,
-  hash_load_check_resize_trigger<
-    typename Comb_Hash_Fn::size_type>,
-  false,
-  typename Comb_Hash_Fn::size_type>
-
otherwise, -
-hash_standard_resize_policy<
-  hash_exponential_size_policy<
-    typename Comb_Hash_Fn::size_type>,
-  hash_load_check_resize_trigger<
-    typename Comb_Hash_Fn::size_type>,
-  false,
-  typename Comb_Hash_Fn::size_type>
-
-
-
-bool Store_Hash 
-
-
-

Indicates whether the hash value will be stored along - with each key.

- -

If hash_fn is null_hash_fn, then the container - will not compile if this value is - true

-
-
-false
-
-
-
-class Allocator 
-
-
-

Allocator type.

-
-
-std::allocator<char>
-
-
- -

Base Classes

- - - - - - - - - - - - - -
ClassDerivation Type
-
-basic_hash_table
-
-
-

public

-
- -

Public Types and - Constants

- -

Policy Definitions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeDefinitionDescription
-
-hash_fn
-
-
-
-Hash_Fn
-
-
-

Hash functor type.

-
-
-eq_fn
-
-
-
-Eq_Fn
-
-
-

Equivalence functor type.

-
-
-resize_policy
-
-
-
-Resize_Policy
-
-
-

Resize policy type.

-
-
-comb_hash_fn
-
-
-
-Comb_Hash_Fn
-
-
-

Combining hash functor type.

-
- -

Public Methods

- -

Constructors, Destructor, and - Related

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-  cc_hash_table
-  ()
-
-
-

Default constructor.

-
-
-  cc_hash_table
-  (const hash_fn &r_hash_fn)
-
-
-

Constructor taking some policy objects. r_hash_fn will be copied by the - Hash_Fn object of - the container object.

-
-
-  cc_hash_table
-  (const hash_fn &r_hash_fn, 
-    const eq_fn &r_eq_fn)
-
-
-

Constructor taking some policy objects. r_hash_fn will be copied by the - hash_fn object of - the container object, and r_eq_fn will be copied by the - eq_fn object of the - container object.

-
-
-  cc_hash_table
-  (const hash_fn &r_hash_fn, 
-    const eq_fn &r_eq_fn, 
-    const comb_hash_fn &r_comb_hash_fn)
-
-
-

Constructor taking some policy objects. r_hash_fn will be copied by the - hash_fn object of - the container object, r_eq_fn will be copied by the - eq_fn object of the - container object, and r_comb_hash_fn will be copied by the - comb_hash_fn - object of the container object.

-
-
-  cc_hash_table
-  (const hash_fn &r_hash_fn, 
-    const eq_fn &r_eq_fn, 
-    const comb_hash_fn &r_comb_hash_fn, 
-    const resize_policy &r_resize_policy)
-
-
-

Constructor taking some policy objects. r_hash_fn will be copied by the - hash_fn object of - the container object, r_eq_fn will be copied by the - eq_fn object of the - container object, r_comb_hash_fn will be copied by the - comb_hash_fn - object of the container object, and r_resize_policy will be copied by - the resize_policy - object of the container object.

-
-
-template<
-    class It>
-  cc_hash_table
-  (It first_it, 
-    It last_it)
-
-
-

Constructor taking iterators to a range of - value_types. The value_types between first_it and last_it will be inserted into the - container object.

-
-
-template<
-    class It>
-  cc_hash_table
-  (It first_it, 
-    It last_it,
-    const hash_fn &r_hash_fn)
-
-
-

Constructor taking iterators to a range of value_types - and some policy objects. The value_types between - first_it and - last_it will be inserted - into the container object.

-
-
-template<
-    class It>
-  cc_hash_table
-  (It first_it, 
-    It last_it,
-    const hash_fn &r_hash_fn, 
-    const eq_fn &r_eq_fn)
-
-
-

Constructor taking iterators to a range of value_types - and some policy objects The value_types between - first_it and - last_it will be inserted - into the container object. r_hash_fn will be copied by the - hash_fn object of - the container object, and r_eq_fn will be copied by the - eq_fn object of the - container object.

-
-
-template<
-    class It>
-  cc_hash_table
-  (It first_it, 
-    It last_it,
-    const hash_fn &r_hash_fn, 
-    const eq_fn &r_eq_fn, 
-    const comb_hash_fn &r_comb_hash_fn)
-
-
-

Constructor taking iterators to a range of value_types - and some policy objects The value_types between - first_it and - last_it will be inserted - into the container object. r_hash_fn will be copied by the - hash_fn object of - the container object, r_eq_fn will be copied by the - eq_fn object of the - container object, and r_comb_hash_fn will be copied by the - comb_hash_fn - object of the container object.

-
-
-template<
-    class It>
-  cc_hash_table
-  (It first_it, 
-    It last_it,
-    const hash_fn &r_hash_fn, 
-    const eq_fn &r_eq_fn, 
-    const comb_hash_fn &r_comb_hash_fn, 
-    const resize_policy &r_resize_policy)
-
-
-

Constructor taking iterators to a range of value_types - and some policy objects The value_types between - first_it and - last_it will be inserted - into the container object. r_hash_fn will be copied by the - hash_fn object of - the container object, r_eq_fn will be copied by the - eq_fn object of the - container object, r_comb_hash_fn will be copied by the - comb_hash_fn - object of the container object, and r_resize_policy will be copied by - the resize_policy - object of the container object.

-
-
-  cc_hash_table
-  (const cc_hash_table &other)
-
-
-

Copy constructor.

-
-
-virtual 
-  ~cc_hash_table
-  ()
-
-
-

Destructor.

-
-
-cc_hash_table &
-  operator=
-  (const cc_hash_table &other)
-
-
-

Assignment operator.

-
-
-void
-  swap
-  (cc_hash_table &other)
-
-
-

Swaps content.

-
- -

Policy Access Methods

- - - - - - - - - - - - - - - - - - - -
MethodDescription
-
-comb_hash_fn &
-  get_comb_hash_fn
-  ()
-
-
-

Access to the comb_hash_fn - object.

-
-
-const comb_hash_fn &
-  get_comb_hash_fn
-  () const
-
-
-

Const access to the comb_hash_fn - object.

-
-