diff options
author | bkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-07-29 22:31:30 +0000 |
---|---|---|
committer | bkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-07-29 22:31:30 +0000 |
commit | 535683cbab5dea3b278601f27d99ba33dc9d8635 (patch) | |
tree | 1eb8f8218adde319094ed8529dd5eb269987ffa2 /libstdc++-v3 | |
parent | ea3d31769cf585f752316f15b385e72def1b925e (diff) | |
download | ppe42-gcc-535683cbab5dea3b278601f27d99ba33dc9d8635.tar.gz ppe42-gcc-535683cbab5dea3b278601f27d99ba33dc9d8635.zip |
2011-07-29 Benjamin Kosnik <bkoz@redhat.com>
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@176952 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3')
444 files changed, 36092 insertions, 30433 deletions
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 <bkoz@redhat.com> + + 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 <paolo.carlini@oracle.com> 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 Binary files differdeleted file mode 100644 index 268980706ab..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/PythonPoweredSmall.gif +++ /dev/null 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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>Acknowledgments</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1>Acknowledgments</h1> - - <ol> - <li>This library was partially written at <a href= - "http://www.haifa.il.ibm.com/">IBM's Haifa Research - Labs</a>.</li> - - <li>The library is based heavily on policy-based design and - uses many useful techniques from [<a href= - "references.html#alexandrescu01modern">alexandrescu01modern</a>].</li> - - <li>Two ideas are borrowed from the SGI-STL implementation - [<a href="references.html#sgi_stl">sgi_stl</a>]: - - <ol> - <li>The prime-based resize policies use a list of primes - taken from the SGI-STL implementation.</li> - - <li>The red-black trees contain both a root node and a - header node (containing metadata), connected in a way - that forward and reverse iteration can be performed - efficiently.</li> - </ol> - </li> - - <li>Some test utilities borrow ideas from [<a href= - "references.html#boost_timer">boost_timer</a>].</li> - - <li>We would like to thank Scott Meyers for useful comments - (without attributing to him any flaws in the design or - implementation of the library).</li> - - <li>Much of the documentation is <a href= - "http://www.python.org/"><img src="PythonPoweredSmall.gif" - align="middle" width="55" height="22" alt="[Python Powered]" - border="0" /></a> (especially through <a href= - "http://home.gna.org/pychart/">PyChart</a>, <a href= - "http://www.crummy.com/software/BeautifulSoup/">Beautiful - Soup</a>, and <a href= - "http://starship.python.net/crew/aaron_watters/kjbuckets/">kjbuckets</a>) - and uses <a href="http://tidy.sourceforge.net/"><img src= - "checked_by_tidy.gif" align="middle" width="55" height="45" - alt="[HTML tidy]" border="0" /></a>. The CSS-driven menus are - slightly modified from <a href= - "http://www.brothercake.com/scripts/navmeister/page.php">Brothercake</a> - (hopefully without introducing errors).</li> - </ol> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/assoc_container_tag_cd.png b/libstdc++-v3/doc/html/ext/pb_ds/assoc_container_tag_cd.png Binary files differdeleted file mode 100644 index 16cc6da870d..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/assoc_container_tag_cd.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/assoc_container_tag_cd.svg b/libstdc++-v3/doc/html/ext/pb_ds/assoc_container_tag_cd.svg deleted file mode 100644 index 02be6241647..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/assoc_container_tag_cd.svg +++ /dev/null @@ -1,491 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://web.resource.org/cc/" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="11in" - height="8.5in" - id="svg2" - sodipodi:version="0.32" - inkscape:version="0.43" - version="1.0" - sodipodi:docbase="/mnt/share/src/policy_based_data_structures/pb_ds_images" - sodipodi:docname="assoc_tag_diagram_2.svg" - inkscape:export-filename="/mnt/share/src/policy_based_data_structures/pb_ds_images/assoc_tag_diagram_2.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> - <defs - id="defs4"> - <marker - inkscape:stockid="Arrow1Mstart" - orient="auto" - refY="0.0" - refX="0.0" - id="Arrow1Mstart" - style="overflow:visible"> - <path - id="path3311" - d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " - style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none" - transform="scale(0.4)" /> - </marker> - <marker - inkscape:stockid="Arrow2Sstart" - orient="auto" - refY="0" - refX="0" - id="Arrow2Sstart" - style="overflow:visible"> - <path - id="path3319" - style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " - transform="matrix(0.3,0,0,0.3,-1.5,0)" /> - </marker> - <marker - inkscape:stockid="Arrow1Sstart" - orient="auto" - refY="0" - refX="0" - id="Arrow1Sstart" - style="overflow:visible"> - <path - id="path3337" - d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z " - style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" - transform="scale(0.2,0.2)" /> - </marker> - <marker - inkscape:stockid="Arrow2Send" - orient="auto" - refY="0" - refX="0" - id="Arrow2Send" - style="overflow:visible"> - <path - id="path3316" - style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " - transform="matrix(-0.3,0,0,-0.3,1.5,0)" /> - </marker> - <marker - inkscape:stockid="Arrow2Mend" - orient="auto" - refY="0" - refX="0" - id="Arrow2Mend" - style="overflow:visible"> - <path - id="path3322" - style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " - transform="matrix(-0.6,0,0,-0.6,3,0)" /> - </marker> - <marker - inkscape:stockid="Arrow1Lend" - orient="auto" - refY="0" - refX="0" - id="Arrow1Lend" - style="overflow:visible"> - <path - id="path3346" - d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z " - style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" - transform="scale(-0.8,-0.8)" /> - </marker> - <marker - inkscape:stockid="Arrow2Lstart" - orient="auto" - refY="0" - refX="0" - id="Arrow2Lstart" - style="overflow:visible"> - <path - id="path3331" - style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " - transform="matrix(1.1,0,0,1.1,-5.5,0)" /> - </marker> - <marker - inkscape:stockid="Arrow2Lend" - orient="auto" - refY="0" - refX="0" - id="Arrow2Lend" - style="overflow:visible"> - <path - id="path3328" - style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " - transform="matrix(-1.1,0,0,-1.1,5.5,0)" /> - </marker> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="2" - inkscape:cx="613.85775" - inkscape:cy="310.05621" - inkscape:document-units="in" - inkscape:current-layer="layer1" - showguides="true" - inkscape:guide-bbox="true" - inkscape:window-width="1278" - inkscape:window-height="973" - inkscape:window-x="0" - inkscape:window-y="0" - gridtolerance="0.125in" - guidetolerance="0.125in"> - <sodipodi:guide - orientation="horizontal" - position="629" - id="guide1307" /> - <sodipodi:guide - orientation="horizontal" - position="449" - id="guide1309" /> - <sodipodi:guide - orientation="horizontal" - position="269" - id="guide1311" /> - <sodipodi:guide - orientation="vertical" - position="496" - id="guide1313" /> - <sodipodi:guide - orientation="vertical" - position="361" - id="guide1315" /> - <sodipodi:guide - orientation="vertical" - position="226" - id="guide1317" /> - <sodipodi:guide - orientation="vertical" - position="631" - id="guide1319" /> - <sodipodi:guide - orientation="vertical" - position="766" - id="guide1321" /> - <sodipodi:guide - orientation="vertical" - position="91" - id="guide1345" /> - <sodipodi:guide - orientation="vertical" - position="901" - id="guide1347" /> - <sodipodi:guide - orientation="horizontal" - position="539" - id="guide3390" /> - <sodipodi:guide - orientation="horizontal" - position="359" - id="guide3392" /> - <sodipodi:guide - orientation="vertical" - position="280.5" - id="guide3324" /> - <sodipodi:guide - orientation="vertical" - position="172" - id="guide3326" /> - <sodipodi:guide - orientation="vertical" - position="427" - id="guide3328" /> - <sodipodi:guide - orientation="vertical" - position="711.5" - id="guide3340" /> - <sodipodi:guide - orientation="horizontal" - position="179" - id="guide1395" /> - </sodipodi:namedview> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:creator> - <cc:Agent> - <dc:title>Benjamin Kosnik</dc:title> - </cc:Agent> - </dc:creator> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1"> - <rect - y="562.32806" - x="237.8916" - height="23.200001" - width="80.769417" - id="rect1495" - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.94391561;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.94391561;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - id="rect1497" - width="80.769417" - height="23.200001" - x="132.8916" - y="562.32806" /> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.94391561;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - id="rect1493" - width="80.769417" - height="23.200001" - x="21.891602" - y="562.32806" /> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - id="rect1425" - width="141.64481" - height="23.200001" - x="209.57762" - y="382.56177" /> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - id="rect3378" - width="141.64481" - height="23.200001" - x="640.77765" - y="382.56177" /> - <text - xml:space="preserve" - style="font-size:9.60000038;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;stroke-miterlimit:4;stroke-dasharray:none" - x="710.40002" - y="397.09772" - id="use1337" - sodipodi:linespacing="100%"><tspan - sodipodi:role="line" - id="tspan1391" - x="710.40003" - y="397.09772">basic_hash_table_tag</tspan></text> - <text - xml:space="preserve" - style="font-size:9.60000038;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" - x="280" - y="397.09772" - id="text1339" - sodipodi:linespacing="100%"><tspan - sodipodi:role="line" - id="tspan1385" - x="280" - y="397.09772">basic_tree_tag</tspan></text> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - id="rect3418" - width="141.64481" - height="23.200001" - x="101.57762" - y="472.5618" /> - <rect - y="472.5618" - x="317.57761" - height="23.200001" - width="141.64481" - id="rect3420" - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - <text - xml:space="preserve" - style="font-size:9.60000038;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" - x="171.20001" - y="486.29773" - id="text3394" - sodipodi:linespacing="100%"><tspan - sodipodi:role="line" - id="tspan1387" - x="171.20001" - y="486.29773">tree_tag</tspan></text> - <text - sodipodi:linespacing="100%" - id="text3400" - y="486.29773" - x="388.39999" - style="font-size:9.60000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" - xml:space="preserve"><tspan - sodipodi:role="line" - id="tspan1389" - x="388.39999" - y="486.29773">trie_tag</tspan></text> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - id="rect3380" - width="141.64481" - height="23.200001" - x="425.57764" - y="292.56177" /> - <text - xml:space="preserve" - style="font-size:9.60000038;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans" - x="495.20001" - y="307.09772" - id="text1323" - sodipodi:linespacing="100%"><tspan - sodipodi:role="line" - id="tspan1384" - x="495.20001" - y="307.09772">associative_container_tag</tspan></text> - <path - style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="M 170.97058,472.5 L 170.97058,451 L 387.51871,450 L 387.51871,472.5" - id="path2244" /> - <path - style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="M 280.5,450.53297 L 280.5,410.62445" - id="path3332" /> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - id="rect3422" - width="141.64481" - height="23.200001" - x="533.57764" - y="472.5618" /> - <rect - y="472.5618" - x="748.77765" - height="23.200001" - width="141.64481" - id="rect3424" - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - <text - sodipodi:linespacing="100%" - id="text3406" - y="486.29773" - x="601.20001" - style="font-size:9.60000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans" - xml:space="preserve"><tspan - sodipodi:role="line" - id="tspan1393" - x="601.20001" - y="486.29773">cc_hash_table_tag</tspan></text> - <text - xml:space="preserve" - style="font-size:9.60000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans" - x="818" - y="486.29773" - id="text3412" - sodipodi:linespacing="100%"><tspan - sodipodi:role="line" - id="tspan1395" - x="818" - y="486.29773">gp_hash_table_tag</tspan></text> - <path - id="path3353" - d="M 601.47058,472.5 L 601.47058,451 L 818.01871,450 L 818.01871,472.5" - style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" /> - <path - id="path3355" - d="M 711,450.53297 L 711,410.62445" - style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - <path - id="path3344" - d="M 281.18218,383.28102 L 281.18218,361.78102 L 711.79281,360.78102 L 711.79281,383.28102" - style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" /> - <rect - y="383.1962" - x="425.625" - height="23.200001" - width="141.64481" - id="rect3376" - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - <text - sodipodi:linespacing="100%" - id="use1329" - y="397.73215" - x="497.24741" - style="font-size:9.60000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" - xml:space="preserve"><tspan - sodipodi:role="line" - id="tspan1382" - x="497.24741" - y="397.73215">list_update_tag</tspan></text> - <path - id="path3347" - d="M 497.79886,384.13056 L 497.79886,323.40547" - style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - <text - xml:space="preserve" - style="font-size:9.60000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans" - x="61.152512" - y="577.07874" - id="text1423" - sodipodi:linespacing="100%"><tspan - sodipodi:role="line" - id="tspan1418" - x="61.152512" - y="577.07874">rb_tree_tag</tspan></text> - <text - sodipodi:linespacing="100%" - id="text1427" - y="577.07874" - x="277.95251" - style="font-size:9.60000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans" - xml:space="preserve"><tspan - sodipodi:role="line" - id="tspan1414" - x="277.95252" - y="577.07874">splay_tree_tag</tspan></text> - <path - style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="M 61.42308,563.28102 L 61.42308,541.78102 L 277.97121,540.78102 L 277.97121,563.28102" - id="path1431" /> - <path - style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="M 170.9525,561.5357 L 170.9525,503.81235" - id="path1433" /> - <rect - y="562.17499" - x="347.8916" - height="23.200001" - width="80.769417" - id="rect1469" - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.94391561;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - <text - sodipodi:linespacing="100%" - id="text1471" - y="576.71094" - x="388.80002" - style="font-size:9.60000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" - xml:space="preserve"><tspan - sodipodi:role="line" - id="tspan1412" - x="388.80002" - y="576.71094">pat_trie_tag</tspan></text> - <path - id="path1475" - d="M 389.35146,563.10936 L 389.35146,502.38427" - style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - <text - xml:space="preserve" - style="font-size:9.60000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans" - x="173.95251" - y="577.07874" - id="text1487" - sodipodi:linespacing="100%"><tspan - sodipodi:role="line" - id="tspan1416" - x="173.95251" - y="577.07874">ov_tree_tag</tspan></text> - </g> -</svg> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/assoc_container_traits.html b/libstdc++-v3/doc/html/ext/pb_ds/assoc_container_traits.html 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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>container_traits Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>container_traits</tt> Interface</h1> - - <p>Traits of an associative-container based on its underlying - data structure.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Template Parameters</a></h2> - - <table class="c1" width="100%" border="1" summary= - "Template Parameters"> - <tr> - <td width="20%" align="left"><b>Parameter</b></td> - - <td width="50%" align="left"><b>Description</b></td> - - <td width="30%" align="left"><b>Default Value</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="Cntnr59189" id="Cntnr59189"><b>class</b> Cntnr</a> -</pre> - </td> - - <td> - <p>Container type.</p> - </td> - - <td>-</td> - </tr> - </table> - - <h2><a name="link2" id="link2">Public Types and - Constants</a></h2> - - <h3><a name="link3" id="link3">Container Attributes</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="invalidation_guarantee3793555937" id= -"invalidation_guarantee3793555937">invalidation_guarantee</a> -</pre> - </td> - - <td> - <pre> -Invalidation guarantee. -</pre> - </td> - - <td> - <p>Invalidation-guarantee type.</p> - - <p>This is either <a href= - "basic_invalidation_guarantee.html"><span class= - "c2"><tt>basic_invalidation_guarantee</tt></span></a>, - <a href="point_invalidation_guarantee.html"><span class= - "c2"><tt>point_invalidation_guarantee</tt></span></a>, or - <a href="range_invalidation_guarantee.html"><span class= - "c2"><tt>range_invalidation_guarantee</tt></span></a></p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="order_preserving1910229172" id= -"order_preserving1910229172">order_preserving</a> -</pre> - </td> - - <td> - <pre> -True only if Cntnr objects guarantee storing keys by order. -</pre> - </td> - - <td> - <p>Order-preserving indicator.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="erase_can_throw153323856" id= -"erase_can_throw153323856">erase_can_throw</a> -</pre> - </td> - - <td> - <pre> -True only if erasing a key can throw. -</pre> - </td> - - <td> - <p>Erase-throw indicator.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="reverse_iteration894617078" id= -"reverse_iteration894617078">reverse_iteration</a> -</pre> - </td> - - <td> - <pre> -True only reverse iterators are supported. -</pre> - </td> - - <td> - <p>Reverse iteration indicator.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="split_join_can_throw3200477759" id= -"split_join_can_throw3200477759">split_join_can_throw</a> -</pre> - </td> - - <td> - <pre> -True only if split or join operations can throw. -</pre> - </td> - - <td> - <p>Split-join throw indicator.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/assoc_design.html b/libstdc++-v3/doc/html/ext/pb_ds/assoc_design.html deleted file mode 100644 index 6c501e26bbd..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/assoc_design.html +++ /dev/null @@ -1,46 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>Associative Containers</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1>Associative-Container Design</h1> - - <ol> - <li><a href="ds_gen.html">Data-Structure Genericity</a></li> - - <li class="c1">Genericity discusses generic manipulation of - containers based on different underlying - data structures.</li> - - <li class="c1">Genericity discusses generic manipulation of - containers with different mapping semantics.</li> - - <li><a href="tree_based_containers.html">Tree-Based - Containers</a> describes the design and policies of - tree-based containers.</li> - - <li><a href="trie_based_containers.html">Trie-Based - Containers</a> describes the design and policies of - trie-based containers.</li> - - <li><a href="hash_based_containers.html">Hash-Based - Containers</a> describes the design and policies of - hash-based containers.</li> - - <li><a href="lu_based_containers.html">List-Based - Containers</a> describes the design and policies of - list-based containers with update policies.</li> - </ol> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/assoc_examples.html b/libstdc++-v3/doc/html/ext/pb_ds/assoc_examples.html deleted file mode 100644 index b64c747454c..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/assoc_examples.html +++ /dev/null @@ -1,151 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>Examples</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1>Associative-Container Examples</h1> - - <h2><a name="basic_usage" id="basic_usage">Basic Use</a></h2> - - <ol> - <li> - <a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/basic_map.cc"><tt>basic_map.cc</tt></a> - Basic use of "maps".</li> - - <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/basic_set.cc"><tt>basic_set.cc</tt></a> - Basic use of "sets".</li> - - <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/erase_if.cc"><tt>erase_if.cc</tt></a> - Conditionally erasing values from a container object.</li> - </ol> - - <h2><a name="generics" id="generics">Generics</a></h2> - - <ol> - <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/assoc_container_traits.cc"><tt>assoc_container_traits.cc</tt></a> - Using <a href= - "assoc_container_traits.html"><tt>container_traits</tt></a> to query - about underlying data structure behavior.</li> - - <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/hash_find_neg.cc"><tt>hash_find_neg.cc</tt></a> - A non-compiling example showing wrong use of finding keys in - hash-based containers.</li> - </ol> - - <h2><a name="hash_based" id="hash_based">Hash-Based - Containers</a></h2> - - - <h3><a name="resize_related" id="resize_related">Resize - Related</a></h3> - - - <ol> - <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/hash_initial_size.cc"><tt>hash_initial_size.cc</tt></a> - Setting the initial size of a hash-based container - object.</li> - - <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/hash_resize_neg.cc"><tt>hash_resize_neg.cc</tt></a> - A non-compiling example showing how not to resize a - hash-based container object.</li> - - <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/hash_resize.cc"><tt>hash_resize.cc</tt></a> - Resizing the size of a hash-based container object.</li> - - <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/hash_illegal_resize.cc"><tt>hash_illegal_resize.cc</tt></a> - Showing an illegal resize of a hash-based container - object.</li> - - <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/hash_load_set_change.cc"><tt>hash_load_set_change.cc</tt></a> - Changing the load factors of a hash-based container - object.</li> - </ol> - - <h3><a name="hash_related" id="hash_related">Hash-Function - Related</a></h3> - - - <ol> - <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/hash_mod.cc"><tt>hash_mod.cc</tt></a> - Using a modulo range-hashing function for the case of an - unknown skewed key distribution.</li> - - <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/hash_shift_mask.cc"><tt>shift_mask.cc</tt></a> - Writing a range-hashing functor for the case of a known - skewed key distribution.</li> - - <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/store_hash.cc"><tt>store_hash.cc</tt></a> - Storing the hash value along with each key.</li> - - <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/ranged_hash.cc"><tt>ranged_hash.cc</tt></a> - Writing a ranged-hash functor.</li> - </ol> - - <h2><a name="tree_like_based" id= "tree_like_based">Tree-Like Containers (Trees and - Tries)</a></h2> - - - <h3><a name="node_invariants" id= - "node_invariants">Node-Invariants</a></h3> - - - <ol> - <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/tree_order_statistics.cc"><tt>tree_order_statistics.cc</tt></a> - Using trees for order statistics.</li> - - <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/tree_intervals.cc"><tt>tree_intervals.cc</tt></a> - Augmenting trees to support operations on line - intervals.</li> - </ol> - - <h3><a name="split_join" id="split_join">Split and - Join</a></h3> - - - <ol> - <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/tree_join.cc"><tt>tree_join.cc</tt></a> - Joining two tree-based container objects.</li> - - <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/trie_split.cc"><tt>trie_split.cc</tt></a> - Splitting a PATRICIA trie container object.</li> - - <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/tree_order_statistics_join.cc"><tt>tree_order_statistics_join.cc</tt></a> - Order statistics while joining two tree-based container - objects.</li> - </ol> - - <h2><a name="trie_based" id="trie_based">Trie-Based - Containers</a></h2> - - - <ol> - <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/trie_dna.cc"><tt>trie_dna.cc</tt></a> - Using a PATRICIA trie for DNA strings.</li> - - <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/trie_prefix_search.cc"><tt>trie_prefix_search.cc</tt></a> - Using a PATRICIA trie for finding all entries whose key - matches a given prefix.</li> - </ol> - - <h2><a name="mmaps" id="mmaps">"Multimaps" and - "Multisets".</a></h2> - <ol> - <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/basic_multimap.cc"><tt>basic_multimap.cc</tt></a> - Basic use of "multimaps".</li> - - <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/basic_multiset.cc"><tt>basic_multiset.cc</tt></a> - Basic use of "multisets".</li> - </ol> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/assoc_performance_tests.html b/libstdc++-v3/doc/html/ext/pb_ds/assoc_performance_tests.html 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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> -<title>Associative-Container Performance Tests</title> -<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /> -</head> -<body> -<div id="page"> -<h1><a name="assoc" id="assoc">Associative-Container - Performance Tests</a></h1> -<h2><a name="settings" id="settings">Settings</a></h2> -<p>This section describes performance tests and their results. - In the following, <a href="#gcc"><u>g++</u></a>, <a href="#msvc"><u>msvc++</u></a>, and <a href="#local"><u>local</u></a> (the build used for generating this - documentation) stand for three different builds:</p> -<div id="gcc_settings_div"> -<div class="c1"> -<h3><a name="gcc" id="gcc"><u>g++</u></a></h3> -<ul> -<li>CPU speed - cpu MHz : 2660.644</li> -<li>Memory - MemTotal: 484412 kB</li> -<li>Platform - - Linux-2.6.12-9-386-i686-with-debian-testing-unstable</li> -<li>Compiler - g++ (GCC) 4.0.2 20050808 (prerelease) - (Ubuntu 4.0.1-4ubuntu9) Copyright (C) 2005 Free Software - Foundation, Inc. This is free software; see the source - for copying conditions. There is NO warranty; not even - for MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE.</li> -</ul> -</div> -<div class="c2"></div> -</div> -<div id="msvc_settings_div"> -<div class="c1"> -<h3><a name="msvc" id="msvc"><u>msvc++</u></a></h3> -<ul> -<li>CPU speed - cpu MHz : 2660.554</li> -<li>Memory - MemTotal: 484412 kB</li> -<li>Platform - Windows XP Pro</li> -<li>Compiler - Microsoft (R) 32-bit C/C++ Optimizing - Compiler Version 13.10.3077 for 80x86 Copyright (C) - Microsoft Corporation 1984-2002. All rights - reserved.</li> -</ul> -</div> -<div class="c2"></div> -</div> -<div id="local_settings_div"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h3><a name = "local"><u>local</u></a></h3><ul> -<li>CPU speed - cpu MHz : 2250.000</li> -<li>Memory - MemTotal: 2076248 kB</li> -<li>Platform - Linux-2.6.16-1.2133_FC5-i686-with-redhat-5-Bordeaux</li> -<li>Compiler - g++ (GCC) 4.1.1 20060525 (Red Hat 4.1.1-1) -Copyright (C) 2006 Free Software Foundation, Inc. -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -</li> -</ul> -</div><div style = "width: 100%; height: 20px"></div></div> -<h2><a name="assoc_tests" id="assoc_tests">Tests</a></h2> -<h3><a name="hash_based" id="hash_based">Hash-Based - Containers</a></h3> -<ol> -<li><a href="hash_text_find_find_timing_test.html">Hash-Based - Text <tt>find</tt> Find Timing Test</a></li> -<li><a href="hash_random_int_find_find_timing_test.html">Hash-Based - Random-Integer <tt>find</tt> Find Timing Test</a></li> -<li><a href="hash_random_int_subscript_find_timing_test.html">Hash-Based - Random-Integer Subscript Find Timing Test</a></li> -<li><a href="hash_random_int_subscript_insert_timing_test.html">Hash-Based - Random-Integer Subscript Insert Timing Test</a></li> -<li><a href="hash_zlob_random_int_find_find_timing_test.html">Hash-Based - Skewed-Distribution Random-Integer <tt>find</tt> Find Timing - Test</a></li> -<li><a href="hash_random_int_erase_mem_usage_test.html">Hash-Based Erase - Memory Use Test</a></li> -</ol> -<h3><a name="tree_like_based" id="tree_like_based">Tree-Like-Based Containers</a></h3> -<ol> -<li><a href="tree_text_insert_timing_test.html">Tree-Based - and Trie-Based Text Insert Timing Test</a></li> -<li><a href="tree_text_find_find_timing_test.html">Tree-Based - and Trie-Based Text <tt>find</tt> Find Timing Test</a></li> -<li><a href="tree_text_lor_find_find_timing_test.html">Tree-Based - Locality-of-Reference Text <tt>find</tt> Find Timing - Test</a></li> -<li><a href="tree_random_int_find_find_timing_test.html">Tree-Based - Random-Integer <tt>find</tt> Find Timing Test</a></li> -<li><a href="tree_split_join_timing_test.html">Tree Split and - Join Timing Test</a></li> -<li><a href="tree_order_statistics_timing_test.html">Tree - Order-Statistics Timing Test</a></li> -</ol> -<h3><a name="multimaps" id="multimaps">Multimaps</a></h3> -<ol> -<li><a href="multimap_text_find_timing_test_small.html">"Multimap" - Text Find Timing Test with <u>Small</u> Average Secondary-Key - to Primary-Key Ratio</a></li> -<li><a href="multimap_text_find_timing_test_large.html">"Multimap" - Text Find Timing Test with <u>Large</u> Average Secondary-Key - to Primary-Key Ratio</a></li> -<li><a href="multimap_text_insert_timing_test_small.html">"Multimap" - Text Insert Timing Test with <u>Small</u> Average - Secondary-Key to Primary-Key Ratio</a></li> -<li><a href="multimap_text_insert_timing_test_large.html">"Multimap" - Text Insert Timing Test with <u>Large</u> Average - Secondary-Key to Primary-Key Ratio</a></li> -<li><a href="multimap_text_insert_mem_usage_test_small.html">"Multimap" - Text Insert Memory-Use Test with <u>Small</u> Average - Secondary-Key to Primary-Key Ratio</a></li> -<li><a href="multimap_text_insert_mem_usage_test_large.html">"Multimap" - Text Insert Memory-Use Test with <u>Large</u> Average - Secondary-Key to Primary-Key Ratio</a></li> -</ol> -<h2><a name="assoc_observations" id="assoc_observations">Observations</a></h2> -<h3><a name="dss_family_choice" id="dss_family_choice">Underlying Data-Structure Families</a></h3> -<p>In general, hash-based containers (see <a href="hash_based_containers.html">Design::Associative - Containers::Hash-Based Containers</a>) have better timing - performance than containers based on different underlying-data - structures. The main reason to choose a tree-based (see - <a href="tree_based_containers.html">Design::Associative - Containers::Tree-Based Containers</a>) or trie-based container - (see <a href="trie_based_containers.html">Design::Associative - Containers::Trie-Based Containers</a>) is if a byproduct of the - tree-like structure is required: either order-preservation, or - the ability to utilize node invariants (see <a href="tree_based_containers.html#invariants">Design::Associative - Containers::Tree-Based Containers::Node Invariants</a> and - <a href="trie_based_containers.html#invariants">Design::Associative - Containers::Trie-Based Containers::Node Invariants</a>). If - memory-use is the major factor, an ordered-vector tree (see - <a href="tree_based_containers.html">Design::Associative - Containers::Tree-Based Containers</a>) gives optimal results - (albeit with high modificiation costs), and a list-based - container (see <a href="lu_based_containers.html">Design::Associative - Containers::List-Based Containers</a>) gives reasonable - results.</p> -<h3><a name="hash_based_types" id="hash_based_types">Hash-Based - Container Types</a></h3> -<p>Hash-based containers are typically either collision - chaining or probing (see <a href="hash_based_containers.html">Design::Associative - Containers::Hash-Based Containers</a>). Collision-chaining - containers are more flexible internally, and so offer better - timing performance. Probing containers, if used for simple - value-types, manage memory more efficiently (they perform far - fewer allocation-related calls). In general, therefore, a - collision-chaining table should be used. A probing container, - conversely, might be used efficiently for operations such as - eliminating duplicates in a sequence, or counting the number of - occurrences within a sequence. Probing containers might be more - useful also in multithreaded applications where each thread - manipulates a hash-based container: in the STL, allocators have - class-wise semantics (see [<a href="references.html#meyers96more">meyers96more</a>] - Item 10); a - probing container might incur less contention in this case.</p> -<h3><a name="hash_based_policies" id="hash_based_policies">Hash-Based Containers' Policies</a></h3> -<p>In hash-based containers, the range-hashing scheme (see - <a href="hash_based_containers.html#hash_policies">Design::Associative - Containers::Hash-Based Containers::Hash Policies</a>) seems to - affect performance more than other considerations. In most - settings, a mask-based scheme works well (or can be made to - work well). If the key-distribution can be estimated a-priori, - a simple hash function can produce nearly uniform hash-value - distribution. In many other cases (<i>e.g.</i>, text hashing, - floating-point hashing), the hash function is powerful enough - to generate hash values with good uniformity properties - [<a href="references.html#knuth98sorting">knuth98sorting</a>]; - a modulo-based scheme, taking into account all bits of the hash - value, appears to overlap the hash function in its effort.</p> -<p>The range-hashing scheme determines many of the other - policies (see <a href="hash_based_containers.html#policy_interaction">Design::Hash-Based - Containers::Policy Interaction</a>). A mask-based scheme works - well with an exponential-size policy (see <a href="hash_based_containers.html#resize_policies">Design::Associative - Containers::Hash-Based Containers::Resize Policies</a>) ; for - probing-based containers, it goes well with a linear-probe - function (see <a href="hash_based_containers.html#hash_policies">Design::Associative - Containers::Hash-Based Containers::Hash Policies</a>).</p> -<p>An orthogonal consideration is the trigger policy (see - <a href="hash_based_containers.html#resize_policies">Design::Associative - Containers::Hash-Based Containers::Resize Policies</a>). This - presents difficult tradeoffs. <i>E.g.</i>, different load - factors in a load-check trigger policy yield a - space/amortized-cost tradeoff.</p> -<h3><a name="tree_like_based_types" id="tree_like_based_types">Tree-Like-Based Container - Types</a></h3> -<p>In general, there are several families of tree-based - underlying data structures: balanced node-based trees - (<i>e.g.</i>, red-black or AVL trees), high-probability - balanced node-based trees (<i>e.g.</i>, random treaps or - skip-lists), competitive node-based trees (<i>e.g.</i>, splay - trees), vector-based "trees", and tries. (Additionally, there - are disk-residing or network-residing trees, such as B-Trees - and their numerous variants. An interface for this would have - to deal with the execution model and ACID guarantees; this is - out of the scope of this library.) Following are some - observations on their application to different settings.</p> -<p>Of the balanced node-based trees, this library includes a - red-black tree (see <a href="tree_based_containers.html">Design::Associative - Containers::Tree-Based Containers</a>), as does STL (in - practice). This type of tree is the "workhorse" of tree-based - containers: it offers both reasonable modification and - reasonable lookup time. Unfortunately, this data structure - stores a huge amount of metadata. Each node must contain, - besides a value, three pointers and a boolean. This type might - be avoided if space is at a premium [<a href="references.html#austern00noset">austern00noset</a>].</p> -<p>High-probability balanced node-based trees suffer the - drawbacks of deterministic balanced trees. Although they are - fascinating data structures, preliminary tests with them showed - their performance was worse than red-black trees. The library - does not contain any such trees, therefore.</p> -<p>Competitive node-based trees have two drawbacks. They are - usually somewhat unbalanced, and they perform a large number of - comparisons. Balanced trees perform one comparison per each - node they encounter on a search path; a splay tree performs two - comparisons. If the keys are complex objects, <i>e.g.</i>, - <tt>std::string</tt>, this can increase the running time. - Conversely, such trees do well when there is much locality of - reference. It is difficult to determine in which case to prefer - such trees over balanced trees. This library includes a splay - tree (see <a href="tree_based_containers.html">Design::Associative - Containers::Tree-Based Containers</a>).</p> -<p>Ordered-vector trees (see <a href="tree_based_containers.html">Design::Associative - Containers::Tree-Based Containers</a>) use very little space - [<a href="references.html#austern00noset">austern00noset</a>]. - They do not have any other advantages (at least in this - implementation).</p> -<p>Large-fan-out PATRICIA tries (see <a href="trie_based_containers.html">Design::Associative - Containers::Trie-Based Containers</a>) have excellent lookup - performance, but they do so through maintaining, for each node, - a miniature "hash-table". Their space efficiency is low, and - their modification performance is bad. These tries might be - used for semi-static settings, where order preservation is - important. Alternatively, red-black trees cross-referenced with - hash tables can be used. [<a href="references.html#okasaki98mereable">okasaki98mereable</a>] - discusses small-fan-out PATRICIA tries for integers, but the - cited results seem to indicate that the amortized cost of - maintaining such trees is higher than that of balanced trees. - Moderate-fan-out trees might be useful for sequences where each - element has a limited number of choices, <i>e.g.</i>, DNA - strings (see <a href="assoc_examples.html#trie_based">Examples::Associative - Containers::Trie-Based Containers</a>).</p> -<h3><a name="msc" id="msc">Mapping-Semantics - Considerations</a></h3> -<p>Different mapping semantics were discussed in <a href="motivation.html#assoc_mapping_semantics">Motivation::Associative - Containers::Alternative to Multiple Equivalent Keys</a> and - <a href="tutorial.html#assoc_ms">Tutorial::Associative - Containers::Associative Containers Others than Maps</a>. We - will focus here on the case where a keys can be composed into - primary keys and secondary keys. (In the case where some keys - are completely identical, it is trivial that one should use an - associative container mapping values to size types.) In this - case there are (at least) five possibilities:</p> -<ol> -<li>Use an associative container that allows equivalent-key - values (such as <tt>std::multimap</tt>)</li> -<li>Use a unique-key value associative container that maps - each primary key to some complex associative container of - secondary keys, say a tree-based or hash-based container (see - <a href="tree_based_containers.html">Design::Associative - Containers::Tree-Based Containers</a> and <a href="hash_based_containers.html">Design::Associative - Containers::Hash-Based Containers</a>)</li> -<li>Use a unique-key value associative container that maps - each primary key to some simple associative container of - secondary keys, say a list-based container (see <a href="lu_based_containers.html">Design::Associative - Containers::List-Based Containers</a>)</li> -<li>Use a unique-key value associative container that maps - each primary key to some non-associative container - (<i>e.g.</i>, <tt>std::vector</tt>)</li> -<li>Use a unique-key value associative container that takes - into account both primary and secondary keys.</li> -</ol> -<p>We do not think there is a simple answer for this (excluding - option 1, which we think should be avoided in all cases).</p> -<p>If the expected ratio of secondary keys to primary keys is - small, then 3 and 4 seem reasonable. Both types of secondary - containers are relatively lightweight (in terms of memory use - and construction time), and so creating an entire container - object for each primary key is not too expensive. Option 4 - might be preferable to option 3 if changing the secondary key - of some primary key is frequent - one cannot modify an - associative container's key, and the only possibility, - therefore, is erasing the secondary key and inserting another - one instead; a non-associative container, conversely, can - support in-place modification. The actual cost of erasing a - secondary key and inserting another one depends also on the - allocator used for secondary associative-containers (The tests - above used the standard allocator, but in practice one might - choose to use, <i>e.g.</i>, [<a href="references.html#boost_pool">boost_pool</a>]). Option 2 is - definitely an overkill in this case. Option 1 loses out either - immediately (when there is one secondary key per primary key) - or almost immediately after that. Option 5 has the same - drawbacks as option 2, but it has the additional drawback that - finding all values whose primary key is equivalent to some key, - might be linear in the total number of values stored (for - example, if using a hash-based container).</p> -<p>If the expected ratio of secondary keys to primary keys is - large, then the answer is more complicated. It depends on the - distribution of secondary keys to primary keys, the - distribution of accesses according to primary keys, and the - types of operations most frequent.</p> -<p>To be more precise, assume there are <i>m</i> primary keys, - primary key <i>i</i> is mapped to <i>n<sub>i</sub></i> - secondary keys, and each primary key is mapped, on average, to - <i>n</i> secondary keys (<i>i.e.</i>, - <i><b>E</b>(n<sub>i</sub>) = n</i>).</p> -<p>Suppose one wants to find a specific pair of primary and - secondary keys. Using 1 with a tree based container - (<tt>std::multimap</tt>), the expected cost is - <i><b>E</b>(Θ(log(m) + n<sub>i</sub>)) = Θ(log(m) + - n)</i>; using 1 with a hash-based container - (<tt>std::tr1::unordered_multimap</tt>), the expected cost is - <i>Θ(n)</i>. Using 2 with a primary hash-based container - and secondary hash-based containers, the expected cost is - <i>O(1)</i>; using 2 with a primary tree-based container and - secondary tree-based containers, the expected cost is (using - the Jensen inequality [<a href="references.html#motwani95random">motwani95random</a>]) - <i><b>E</b>(O(log(m) + log(n<sub>i</sub>)) = O(log(m)) + - <b>E</b>(O(log(n<sub>i</sub>)) = O(log(m)) + O(log(n))</i>, - assuming that primary keys are accessed equiprobably. 3 and 4 - are similar to 1, but with lower constants. Using 5 with a - hash-based container, the expected cost is <i>O(1)</i>; using 5 - with a tree based container, the cost is - <i><b>E</b>(Θ(log(mn))) = Θ(log(m) + - log(n))</i>.</p> -<p>Suppose one needs the values whose primary key matches some - given key. Using 1 with a hash-based container, the expected - cost is <i>Θ(n)</i>, but the values will not be ordered - by secondary keys (which may or may not be required); using 1 - with a tree-based container, the expected cost is - <i>Θ(log(m) + n)</i>, but with high constants; again the - values will not be ordered by secondary keys. 2, 3, and 4 are - similar to 1, but typically with lower constants (and, - additionally, if one uses a tree-based container for secondary - keys, they will be ordered). Using 5 with a hash-based - container, the cost is <i>Θ(mn)</i>.</p> -<p>Suppose one wants to assign to a primary key all secondary - keys assigned to a different primary key. Using 1 with a - hash-based container, the expected cost is <i>Θ(n)</i>, - but with very high constants; using 1 with a tree-based - container, the cost is <i>Θ(nlog(mn))</i>. Using 2, 3, - and 4, the expected cost is <i>Θ(n)</i>, but typically - with far lower costs than 1. 5 is similar to 1.</p> -</div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/assoc_regression_tests.html b/libstdc++-v3/doc/html/ext/pb_ds/assoc_regression_tests.html 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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>Associative-Container Regression Tests</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> -<base href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/regression/"> - </head> - -<body> - <div id="page"> - <h1>Associative-Container Regression Tests</h1> - - <h2><a name="assoc_desc" id="assoc_desc">Description</a></h2> - - <p>The library contains a single comprehensive regression test. - For a given container type in <tt>pb_ds</tt>, the test creates - an object of the container type and an object of the - corresponding STL type (<i>e.g.</i>, <tt>std::set</tt>). It - then performs a random sequence of methods with random - arguments (<i>e.g.</i>, inserts, erases, and so forth) on both - objects. At each operation, the test checks the return value of - the method, and optionally both compares <tt>pb_ds</tt>'s - object with the STL's object as well as performing other - consistency checks on <tt>pb_ds</tt>'s object (<i>e.g.</i>, - order preservation, when applicable, or node invariants, when - applicable).</p> - - <p>Additionally, the test integrally checks exception safety - and resource leaks. This is done as follows. A special - allocator type, written for the purpose of the test, both - randomly throws an exceptions when allocations are performed, - and tracks allocations and de-allocations. The exceptions thrown - at allocations simulate memory-allocation failures; the - tracking mechanism checks for memory-related bugs (<i>e.g.</i>, - resource leaks and multiple de-allocations). Both - <tt>pb_ds</tt>'s containers and the containers' value-types are - configured to use this allocator.</p> - - <p>Due to compiler constraints, the test is split into the - several sources, each checking only some containers.</p> - - <h2><a name="assoc_tests" id="assoc_tests">Tests</a></h2> - - <h3><a name="assoc_tests_set" id="assoc_tests_set">"Set" - Tests</a></h3> - - <p>The following check all "set" types:</p> - - <ol> - <li><a href= - "hash_no_data_map_rand.cc"><tt>hash_no_data_map_rand.cc</tt></a> - checks all hash-based "set" types.</li> - - <li><a href= - "list_update_no_data_map_rand.cc"><tt>list_update_no_data_map_rand.cc</tt></a> - checks all list-based "set" types.</li> - - <li><a href= - "tree_no_data_map_rand.cc"><tt>tree_no_data_map_rand.cc</tt></a> - checks all tree-based "set" types.</li> - - <li><a href= - "trie_no_data_map_rand.cc"><tt>trie_no_data_map_rand.cc</tt></a> - checks all PATRICIA-trie-based "set" types.</li> - </ol> - - <h3><a name="assoc_tests_map" id="assoc_tests_map">"Map" - Tests</a></h3> - - <p>The following check all "map" types:</p> - - <ol> - <li><a href= "hash_data_map_rand.cc"><tt>hash_data_map_rand.cc</tt></a> - checks all hash-based "map" types.</li> - - <li><a href= "list_update_data_map_rand.cc"><tt>list_update_data_map_rand.cc</tt></a> - checks all list-based "map" types.</li> - - <li><a href= "tree_data_map_rand.cc"><tt>tree_data_map_rand.cc</tt></a> - checks all tree-based "map" types.</li> - - <li><a href= "trie_data_map_rand.cc"><tt>trie_data_map_rand.cc</tt></a> - checks all PATRICIA-trie-based "map" types.</li> - </ol> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/assoc_tests.html b/libstdc++-v3/doc/html/ext/pb_ds/assoc_tests.html deleted file mode 100644 index 6e4474945d3..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/assoc_tests.html +++ /dev/null @@ -1,24 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>Associative-Container Tests</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1>Associative-Container Tests</h1> - - <p><a href="assoc_regression_tests.html">Associative-Container - Regression Tests</a> describes the regression tests; <a href= - "assoc_performance_tests.html">Associative-Container - Performance Tests</a> describes the performance tests.</p> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/associative_container_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/associative_container_tag.html 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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>associative_container_tag Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>associative_container_tag</tt> Interface</h1> - - <p>Basic associative-container data structure tag.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Base Classes</a></h2> - - <table class="c1" width="100%" border="1" summary="Bases"> - <tr> - <td width="80%" align="left"><b>Class</b></td> - - <td width="20%" align="left"><b>Derivation Type</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="container_tag.html"><span class= -"c2"><tt>container_tag</tt></span></a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>basic_hash_table Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>basic_hash_table</tt> Interface</h1> - - <p>An abstract basic hash-based associative container.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/assoc_container.hpp"><tt>assoc_container.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Template Parameters</a></h2> - - <table class="c1" width="100%" border="1" summary= - "Template Parameters"> - <tr> - <td width="20%" align="left"><b>Parameter</b></td> - - <td width="50%" align="left"><b>Description</b></td> - - <td width="30%" align="left"><b>Default Value</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="Key2501" id="Key2501"><b>typename</b> Key</a> -</pre> - </td> - - <td> - <p>Key type.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Mapped318655" id="Mapped318655"><b>typename</b> Mapped</a> -</pre> - </td> - - <td> - <p>Mapped type.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Hash_Fn1515835" id= -"Hash_Fn1515835"><b>class</b> Hash_Fn</a> -</pre> - </td> - - <td> - <p>Hash functor.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Eq_Fn60085" id="Eq_Fn60085"><b>class</b> Eq_Fn</a> -</pre> - </td> - - <td> - <p>Equivalence functor.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Resize_Policy566860465" id= -"Resize_Policy566860465"><b>class</b> Resize_Policy</a> -</pre> - </td> - - <td> - <p>Resize policy.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Store_Hash218262104" id= -"Store_Hash218262104"><b>bool</b> Store_Hash</a> -</pre> - </td> - - <td> - <p>Indicates whether the hash value will be stored along - with each key.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Tag278938" id="Tag278938"><b>class</b> Tag</a> -</pre> - </td> - - <td> - <p>Mapped-structure tag.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Allocator35940069" id= -"Allocator35940069"><b>class</b> Allocator</a> -</pre> - </td> - - <td> - <p>Allocator type.</p> - </td> - - <td>-</td> - </tr> - </table> - - <h2><a name="link2" id="link2">Base Classes</a></h2> - - <table class="c1" width="100%" border="1" summary="Bases"> - <tr> - <td width="80%" align="left"><b>Class</b></td> - - <td width="20%" align="left"><b>Derivation Type</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="#Resize_Policy566860465"><tt>Resize_Policy</tt></a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a href="container_base.html"><span class= -"c2"><tt>container_base</tt></span></a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - </table> - - <h2><a name="link3" id="link3">Public Types and - Constants</a></h2> - - <h3><a name="link4" id="link4">Policy Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="hash_fn2015995" id="hash_fn2015995">hash_fn</a> -</pre> - </td> - - <td> - <pre> -<a href="#Hash_Fn1515835"><tt>Hash_Fn</tt></a> -</pre> - </td> - - <td> - <p>Hash functor type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="eq_fn80245" id="eq_fn80245">eq_fn</a> -</pre> - </td> - - <td> - <pre> -<a href="#Eq_Fn60085"><tt>Eq_Fn</tt></a> -</pre> - </td> - - <td> - <p>Equivalence functor type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="resize_policy4084493169" id= -"resize_policy4084493169">resize_policy</a> -</pre> - </td> - - <td> - <pre> -<a href="#Resize_Policy566860465"><tt>Resize_Policy</tt></a> -</pre> - </td> - - <td> - <p>Resize policy type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="store_hash280766104" id= -"store_hash280766104">store_hash</a> -</pre> - </td> - - <td> - <pre> -<a href="#Store_Hash218262104"><tt>Store_Hash</tt></a> -</pre> - </td> - - <td> - <p>Indicates whether a hash value is stored with each - entry.</p> - </td> - </tr> - </table> - - <h2><a name="link5" id="link5">Public Methods</a></h2> - - <h3><a name="link6" id="link6">Constructors, Destructor, and - Related</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> - ~basic_hash_table - () -</pre> - </td> - - <td> - <p>Destructor.</p> - </td> - </tr> - </table> - - <h3><a name="link7" id="link7">Policy Access Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="#hash_fn2015995"><tt>hash_fn</tt></a> & - get_hash_fn - () -</pre> - </td> - - <td> - <p>Access to the <a href= - "#hash_fn2015995"><tt>hash_fn</tt></a> object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>const</b> <a href="#hash_fn2015995"><tt>hash_fn</tt></a> & - get_hash_fn - () <b>const</b> -</pre> - </td> - - <td> - <p>Const access to the <a href= - "#hash_fn2015995"><tt>hash_fn</tt></a> object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a href="#eq_fn80245"><tt>eq_fn</tt></a> & - get_eq_fn - () -</pre> - </td> - - <td> - <p>Access to the <a href="#eq_fn80245"><tt>eq_fn</tt></a> - object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>const</b> <a href="#eq_fn80245"><tt>eq_fn</tt></a> & - get_eq_fn - () <b>const</b> -</pre> - </td> - - <td> - <p>Const access to the <a href= - "#eq_fn80245"><tt>eq_fn</tt></a> object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a href="#resize_policy4084493169"><tt>resize_policy</tt></a> & - get_resize_policy - () -</pre> - </td> - - <td> - <p>Access to the <a href= - "#resize_policy4084493169"><tt>resize_policy</tt></a> - object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>const</b> <a href= -"#resize_policy4084493169"><tt>resize_policy</tt></a> & - get_resize_policy - () <b>const</b> -</pre> - </td> - - <td> - <p>Const access to the <a href= - "#resize_policy4084493169"><tt>resize_policy</tt></a> - object.</p> - </td> - </tr> - </table> - - <h2><a name="link8" id="link8">Private Methods</a></h2> - - <h3><a name="link9" id="link9">Resize Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> <b>void</b> - do_resize - (size_type new_size) -</pre> - </td> - - <td> - <p>Resizes the container object to <span class= - "c1"><tt>new_size</tt></span>.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/basic_hash_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/basic_hash_tag.html 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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>basic_hash_tag Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>basic_hash_tag</tt> Interface</h1> - - <p>Basic hash data structure tag.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Base Classes</a></h2> - - <table class="c1" width="100%" border="1" summary="Bases"> - <tr> - <td width="80%" align="left"><b>Class</b></td> - - <td width="20%" align="left"><b>Derivation Type</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="associative_container_tag.html"><span class= -"c2"><tt>associative_container_tag</tt></span></a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/basic_invalidation_guarantee.html b/libstdc++-v3/doc/html/ext/pb_ds/basic_invalidation_guarantee.html 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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>basic_invalidation_guarantee Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>basic_invalidation_guarantee</tt> Interface</h1> - - <p>Signifies a basic invalidation guarantee that any iterator, - pointer, or reference to a container object's mapped value type - is valid as long as the container is not modified.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/basic_tree.html b/libstdc++-v3/doc/html/ext/pb_ds/basic_tree.html deleted file mode 100644 index 3811707fa06..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/basic_tree.html +++ /dev/null @@ -1,660 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>basic_tree Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>basic_tree</tt> Interface</h1> - - <p>An abstract basic tree-like-based associative container.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/assoc_container.hpp"><tt>assoc_container.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Template Parameters</a></h2> - - <table class="c1" width="100%" border="1" summary= - "Template Parameters"> - <tr> - <td width="20%" align="left"><b>Parameter</b></td> - - <td width="50%" align="left"><b>Description</b></td> - - <td width="30%" align="left"><b>Default Value</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="Key2501" id="Key2501"><b>typename</b> Key</a> -</pre> - </td> - - <td> - <p>Key type.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Mapped318655" id="Mapped318655"><b>typename</b> Mapped</a> -</pre> - </td> - - <td> - <p>Mapped type.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Tag278938" id="Tag278938"><b>class</b> Tag</a> -</pre> - </td> - - <td> - <p>Mapped-structure tag.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Node_Update841554648" id= -"Node_Update841554648"><b>class</b> Node_Update</a> -</pre> - </td> - - <td> - <p>Node updater.</p> - - <p>Restores node-invariants when invalidated.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Policy_Tl42017403" id= -"Policy_Tl42017403"><b>class</b> Policy_Tl</a> -</pre> - </td> - - <td> - <p>Policy typelist.</p> - - <p>Contains subclasses' policies.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Allocator35940069" id= -"Allocator35940069"><b>class</b> Allocator</a> -</pre> - </td> - - <td> - <p>Allocator type.</p> - </td> - - <td>-</td> - </tr> - </table> - - <h2><a name="link2" id="link2">Base Classes</a></h2> - - <table class="c1" width="100%" border="1" summary="Bases"> - <tr> - <td width="80%" align="left"><b>Class</b></td> - - <td width="20%" align="left"><b>Derivation Type</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="#Node_Update841554648"><tt>Node_Update</tt></a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a href="container_base.html"><span class= -"c2"><tt>container_base</tt></span></a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - </table> - - <h2><a name="link3" id="link3">Public Types and - Constants</a></h2> - - <h3><a name="link4" id="link4">Key-Type Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="const_key_reference3185471705" id= -"const_key_reference3185471705">const_key_reference</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href="container_base.html"><span class= -"c2"><tt>container_base</tt></span></a>::const_key_reference -</pre> - </td> - - <td> - <p>Const key reference type.</p> - </td> - </tr> - </table> - - <h3><a name="link5" id="link5">Policy Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="node_update2404554648" id= -"node_update2404554648">node_update</a> -</pre> - </td> - - <td> - <pre> -<a href="#Node_Update841554648"><tt>Node_Update</tt></a> -</pre> - </td> - - <td> - <p>Node updater type.</p> - </td> - </tr> - </table> - - <h3><a name="link6" id="link6">Iterator Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="const_iterator98626788" id= -"const_iterator98626788">const_iterator</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href="container_base.html"><span class= -"c2"><tt>container_base</tt></span></a>::const_iterator -</pre> - </td> - - <td> - <p>Const range-type iterator.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="iterator10418194" id="iterator10418194">iterator</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href="container_base.html"><span class= -"c2"><tt>container_base</tt></span></a>::iterator -</pre> - </td> - - <td> - <p>Range-type iterator.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="const_reverse_iterator4151293083" id= -"const_reverse_iterator4151293083">const_reverse_iterator</a> -</pre> - </td> - - <td> - <pre> -Const reverse range-type iterator. -</pre> - </td> - - <td> - <p>Const reverse range-type <a href= - "#iterator10418194"><tt>iterator</tt></a>.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="reverse_iterator1896910345" id= -"reverse_iterator1896910345">reverse_iterator</a> -</pre> - </td> - - <td> - <pre> -Reverse range-type iterator.<br /> -If <a href="#Mapped318655"><tt>Mapped</tt></a> is <a href= -"null_mapped_type.html"><span class= -"c2"><tt>null_mapped_type</tt></span></a>, then this is synonymous to <a href="#const_reverse_iterator4151293083"><tt>const_reverse_iterator</tt></a> -</pre> - </td> - - <td> - <p>Reverse range-type <a href= - "#iterator10418194"><tt>iterator</tt></a>.</p> - </td> - </tr> - </table> - - <h2><a name="link7" id="link7">Public Methods</a></h2> - - <h3><a name="link8" id="link8">Constructors, Destructor, and - Related</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> - ~basic_tree - () -</pre> - </td> - - <td> - <p>Destructor.</p> - </td> - </tr> - </table> - - <h3><a name="link9" id="link9">Policy Access Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="#node_update2404554648"><tt>node_update</tt></a> & - get_node_update - () -</pre> - </td> - - <td> - <p>Access to the <a href= - "#node_update2404554648"><tt>node_update</tt></a> - object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>const</b> <a href= -"#node_update2404554648"><tt>node_update</tt></a> & - get_node_update - () <b>const</b> -</pre> - </td> - - <td> - <p>Const access to the <a href= - "#node_update2404554648"><tt>node_update</tt></a> - object.</p> - </td> - </tr> - </table> - - <h3><a name="link10" id="link10">Find Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="#iterator10418194"><tt>iterator</tt></a> - lower_bound - (<a href= -"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key) -</pre> - </td> - - <td> - <p>Returns an <a href= - "#iterator10418194"><tt>iterator</tt></a> corresponding - to the entry whose key is the smallest one at least as - large as <span class="c1"><tt>r_key</tt></span>.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a href="#const_iterator98626788"><tt>const_iterator</tt></a> - lower_bound - (<a href= -"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key) <b>const</b> -</pre> - </td> - - <td> - <p>Returns a <tt><b>const</b></tt> <a href= - "#iterator10418194"><tt>iterator</tt></a> corresponding - to the entry whose key is the smallest one at least as - large as <span class="c1"><tt>r_key</tt></span>.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a href="#iterator10418194"><tt>iterator</tt></a> - upper_bound - (<a href= -"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key) -</pre> - </td> - - <td> - <p>Returns an <a href= - "#iterator10418194"><tt>iterator</tt></a> corresponding - to the entry whose key is the smallest one larger than - <span class="c1"><tt>r_key</tt></span>.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a href="#const_iterator98626788"><tt>const_iterator</tt></a> - upper_bound - (<a href= -"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key) <b>const</b> -</pre> - </td> - - <td> - <p>Returns a <a href= - "#const_iterator98626788"><tt>const_iterator</tt></a> - corresponding to the entry whose key is the smallest one - larger than <span class="c1"><tt>r_key</tt></span>.</p> - </td> - </tr> - </table> - - <h3><a name="link11" id="link11">Erase Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="#iterator10418194"><tt>iterator</tt></a> - erase - (<a href="#iterator10418194"><tt>iterator</tt></a> it) -</pre> - </td> - - <td> - <p>Erases the value_type corresponding to the <a href= - "#iterator10418194"><tt>iterator</tt></a> <span class= - "c1"><tt>it</tt></span>. Returns the <a href= - "#iterator10418194"><tt>iterator</tt></a> corresponding - to the next value_type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a href="#reverse_iterator1896910345"><tt>reverse_iterator</tt></a> - erase - (<a href= -"#reverse_iterator1896910345"><tt>reverse_iterator</tt></a> it) -</pre> - </td> - - <td> - <p>Erases the value_type corresponding to the <a href= - "#reverse_iterator1896910345"><tt>reverse_iterator</tt></a> - <span class="c1"><tt>it</tt></span>. Returns the <a href= - "#reverse_iterator1896910345"><tt>reverse_iterator</tt></a> - corresponding to the previous value_type.</p> - </td> - </tr> - </table> - - <h3><a name="link12" id="link12">Iteration Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="#reverse_iterator1896910345"><tt>reverse_iterator</tt></a> - rbegin - () -</pre> - </td> - - <td> - <p>Returns a <a href= - "#reverse_iterator1896910345"><tt>reverse_iterator</tt></a> - corresponding to the last value_type in the - container.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a href= -"#const_reverse_iterator4151293083"><tt>const_reverse_iterator</tt></a> - rbegin - () <b>const</b> -</pre> - </td> - - <td> - <p>Returns a <a href= - "#const_reverse_iterator4151293083"><tt>const_reverse_iterator</tt></a> - corresponding to the last value_type in the - container.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a href="#reverse_iterator1896910345"><tt>reverse_iterator</tt></a> - rend - () -</pre> - </td> - - <td> - <p>Returns a <a href= - "#reverse_iterator1896910345"><tt>reverse_iterator</tt></a> - corresponding to the just-before-first value_type in the - container.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a href= -"#const_reverse_iterator4151293083"><tt>const_reverse_iterator</tt></a> - rend - () <b>const</b> -</pre> - </td> - - <td> - <p>Returns a <a href= - "#const_reverse_iterator4151293083"><tt>const_reverse_iterator</tt></a> - corresponding to the just-before-first value_type in the - container.</p> - </td> - </tr> - </table> - - <h3><a name="link13" id="link13">Split and join - Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - join - (<span class= -"c2"><tt>basic_tree</tt></span> &other) -</pre> - </td> - - <td> - <p>Joins two trees. When this function returns, - <span class="c1"><tt>other</tt></span> will be - empty.</p> - - <p>When calling this method, <span class= - "c1"><tt>other</tt></span>'s keys must be all larger or - all smaller than this object's keys, and <span class= - "c1"><tt>other</tt></span>'s policies must be - equivalent to this object's policies.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - split - (<a href= -"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key, - <span class= -"c2"><tt>basic_tree</tt></span> &other) -</pre> - </td> - - <td> - <p>Splits into two trees. When this function returns, - <span class="c1"><tt>other</tt></span> will contain - only keys larger than <span class= - "c1"><tt>r_key</tt></span>.</p> - - <p>When calling this method, <span class= - "c1"><tt>other</tt></span>'s policies must be - equivalent to this object's policies.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/basic_tree_assoc_container_const_node_iterator.html b/libstdc++-v3/doc/html/ext/pb_ds/basic_tree_assoc_container_const_node_iterator.html 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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>tree::const_node_iterator - Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt><span class= - "c2"><tt>tree</tt></span>::const_node_iterator</tt> - Interface</h1> - - <p>Const node iterator.</p> - - <p>This is an &qout;iterator to an iterator&qout; - it - iterates over nodes, and de-referencing it returns one of the - tree's iterators</p> - - <h2><a name="link1" id="link1">Public Types and - Constants</a></h2> - - <h3><a name="link2" id="link2">Iterator Definitions</a></h3> - - <table class="c2" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="iterator_category2821876439" id= -"iterator_category2821876439">iterator_category</a> -</pre> - </td> - - <td> - <pre> -trivial_iterator_tag -</pre> - </td> - - <td> - <p>Category.</p> - - <p>This tag identifies that the iterator has none of the - STL's iterators' movement abilities.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="difference_type868028452" id= -"difference_type868028452">difference_type</a> -</pre> - </td> - - <td> - <pre class="c1"> -void -</pre> - </td> - - <td> - <p>Difference type.</p> - </td> - </tr> - </table> - - <h3><a name="link3" id="link3">Value-Type Definitions</a></h3> - - <p>Note that a node iterator's value type is actually a tree - iterator.</p> - - <table class="c2" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="value_type279018186" id= -"value_type279018186">value_type</a> -</pre> - </td> - - <td> - <pre> -<a href= -"container_base.html#const_iterator98626788"><span class="c2"><tt>container_base</tt></span>::const_iterator</a> -</pre> - </td> - - <td> - <p>Iterator's value type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="reference54418471" id="reference54418471">reference</a> -</pre> - </td> - - <td> - <pre> -<a href= -"container_base.html#const_iterator98626788"><span class="c2"><tt>container_base</tt></span>::const_iterator</a> -</pre> - </td> - - <td> - <p>Iterator's reference type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="const_reference495461441" id= -"const_reference495461441">const_reference</a> -</pre> - </td> - - <td> - <pre> -<a href= -"container_base.html#const_iterator98626788"><span class="c2"><tt>container_base</tt></span>::const_iterator</a> -</pre> - </td> - - <td> - <p>Iterator's const <a href= - "#reference54418471"><tt>reference</tt></a> type.</p> - </td> - </tr> - </table> - - <h3><a name="link4" id="link4">Metadata Definitions</a></h3> - - <p>These are only defined if <a href= - "basic_tree.html#Node_Update841554648"><span class="c2"> - <tt>basic_tree</tt></span>::Node_Update</a> - is not <a href="null_tree_node_update.html"><span class= - "c2"><tt>null_tree_node_update</tt></span></a></p> - - <table class="c2" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="metadata_type2849297114" id= -"metadata_type2849297114">metadata_type</a> -</pre> - </td> - - <td> - <pre> -<tt><b>typename</b></tt> <a href= -"basic_tree.html#Node_Update841554648"><span class="c2"><tt>basic_tree</tt></span>::Node_Update</a><tt>::metadata_type</tt> -</pre> - </td> - - <td> - <p>Metadata type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="const_metadata_reference1108857465" id= -"const_metadata_reference1108857465">const_metadata_reference</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> Allocator::<b>template</b> rebind< - <a href= -"#metadata_type2849297114"><tt>metadata_type</tt></a>>::other::<a href="#const_reference495461441"><tt>const_reference</tt></a> -</pre> - </td> - - <td> - <p>Const metadata <a href= - "#reference54418471"><tt>reference</tt></a> type.</p> - </td> - </tr> - </table> - - <h2><a name="link5" id="link5">Public Methods</a></h2> - - <h3><a name="link6" id="link6">Constructors, Destructor, and - Related</a></h3> - - <table class="c2" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> - const_node_iterator - () -</pre> - </td> - - <td> - <p>Default constructor.</p> - </td> - </tr> - </table> - - <h3><a name="link7" id="link7">Access Methods</a></h3> - - <table class="c2" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href= -"#const_reference495461441"><tt>const_reference</tt></a> - <b>operator</b>* - () <b>const</b> -</pre> - </td> - - <td> - <p>Access.</p> - </td> - </tr> - </table> - - <h3><a name="link8" id="link8">Metadata Access Methods</a></h3> - - <p>These are only defined if <a href= - "basic_tree.html#Node_Update841554648"><span class="c2"> - <tt>basic_tree</tt></span>::Node_Update</a> - is not <a href="null_tree_node_update.html"><span class= - "c2"><tt>null_tree_node_update</tt></span></a></p> - - <table class="c2" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href= -"#const_metadata_reference1108857465"><tt>const_metadata_reference</tt></a> - get_metadata - () <b>const</b> -</pre> - </td> - - <td> - <p>Metadata access.</p> - </td> - </tr> - </table> - - <h3><a name="link9" id="link9">Movement Methods</a></h3> - - <table class="c2" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <span class="c2"><tt>const_node_iterator</tt></span> - get_l_child - () <b>const</b> -</pre> - </td> - - <td> - <p>Returns the const node iterator associated with the - left node.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <span class="c2"><tt>const_node_iterator</tt></span> - get_r_child - () <b>const</b> -</pre> - </td> - - <td> - <p>Returns the const node iterator associated with the - right node.</p> - </td> - </tr> - </table> - - <h3><a name="link10" id="link10">Comparison Methods</a></h3> - - <table class="c2" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>bool</b> - <b>operator</b>== - (<b>const</b> <span class= -"c2"><tt>const_node_iterator</tt></span> &other) <b>const</b> -</pre> - </td> - - <td> - <p>Compares to a different iterator object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>bool</b> - <b>operator</b>!= - (<b>const</b> <span class= -"c2"><tt>const_node_iterator</tt></span> &other) <b>const</b> -</pre> - </td> - - <td> - <p>Compares (negatively) to a different iterator - object.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/basic_tree_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/basic_tree_tag.html 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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>basic_tree_tag Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>basic_tree_tag</tt> Interface</h1> - - <p>Basic tree-like data structure tag.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Base Classes</a></h2> - - <table class="c1" width="100%" border="1" summary="Bases"> - <tr> - <td width="80%" align="left"><b>Class</b></td> - - <td width="20%" align="left"><b>Derivation Type</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="associative_container_tag.html"><span class= -"c2"><tt>associative_container_tag</tt></span></a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/binary_heap_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/binary_heap_tag.html 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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>binary_heap_tag Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>binary_heap_tag</tt> Interface</h1> - - <p>Binary-heap (array-based) data structure tag.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Base Classes</a></h2> - - <table class="c1" width="100%" border="1" summary="Bases"> - <tr> - <td width="80%" align="left"><b>Class</b></td> - - <td width="20%" align="left"><b>Derivation Type</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="priority_queue_tag.html"><span class= -"c2"><tt>priority_queue_tag</tt></span></a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/binary_priority_queue_random_int_push_timing_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/binary_priority_queue_random_int_push_timing_test_gcc.png Binary files differdeleted file mode 100644 index 07f0953a661..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/binary_priority_queue_random_int_push_timing_test_gcc.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index c69cf1e7641..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/binary_priority_queue_random_int_push_timing_test_local.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index b8a3b237124..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/binary_priority_queue_random_int_push_timing_test_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/binomial_heap_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/binomial_heap_tag.html deleted file mode 100644 index fde6a913bad..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/binomial_heap_tag.html +++ /dev/null @@ -1,47 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>binomial_heap_tag Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>binomial_heap_tag</tt> Interface</h1> - - <p>Binomial-heap data structure tag.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Base Classes</a></h2> - - <table class="c1" width="100%" border="1" summary="Bases"> - <tr> - <td width="80%" align="left"><b>Class</b></td> - - <td width="20%" align="left"><b>Derivation Type</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="priority_queue_tag.html"><span class= -"c2"><tt>priority_queue_tag</tt></span></a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_max_collision_check_resize_trigger.html b/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_max_collision_check_resize_trigger.html 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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>cc_hash_max_collision_check_resize_trigger - Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>cc_hash_max_collision_check_resize_trigger</tt> - Interface</h1> - - <p>A resize trigger policy based on collision checks. It keeps - the simulated load factor lower than some given load - factor.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/hash_policy.hpp"><tt>hash_policy.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Template Parameters</a></h2> - - <table class="c1" width="100%" border="1" summary= - "Template Parameters"> - <tr> - <td width="20%" align="left"><b>Parameter</b></td> - - <td width="50%" align="left"><b>Description</b></td> - - <td width="30%" align="left"><b>Default Value</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="External_Load_Access1313998607" id= -"External_Load_Access1313998607"><b>bool</b> External_Load_Access </a> -</pre> - </td> - - <td> - <p>Specifies whether the load factor can be accessed - externally. The two options have different trade-offs in - terms of flexibility, genericity, and encapsulation.</p> - </td> - - <td><tt><b>false</b></tt></td> - </tr> - - <tr> - <td> - <pre> -<a name="Size_Type42920436" id= -"Size_Type42920436"><b>typename</b> Size_Type </a> -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - - <td>size_t</td> - </tr> - </table> - - <h2><a name="link2" id="link2">Public Types and - Constants</a></h2> - - <h3><a name="link3" id="link3">General Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="size_type55424436" id="size_type55424436">size_type</a> -</pre> - </td> - - <td> - <pre> -<a href="#Size_Type42920436"><tt>Size_Type</tt></a> -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="external_load_access3976598639" id= -"external_load_access3976598639">external_load_access</a> -</pre> - </td> - - <td> - <pre> -<a href= -"#External_Load_Access1313998607"><tt>External_Load_Access</tt></a> -</pre> - </td> - - <td> - <p>Indicates whether loads can be accessed externally</p> - </td> - </tr> - </table> - - <h2><a name="link4" id="link4">Public Methods</a></h2> - - <h3><a name="link5" id="link5">Constructors, Destructor, and - Related</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> - cc_hash_max_collision_check_resize_trigger - (float load = 0.5) -</pre> - </td> - - <td> - <p>Default constructor, or constructor taking - <span class="c1"><tt>load</tt></span>, a load factor - which it will attempt to maintain.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - swap - (<span class= -"c2"><tt>cc_hash_max_collision_check_resize_trigger</tt></span> &other) -</pre> - </td> - - <td> - <p>Swaps content.</p> - </td> - </tr> - </table> - - <h3><a name="link6" id="link6">Load Access Methods</a></h3> - - <p>These methods are only available if the external access - parameter is set.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> float - get_load - () <b>const</b> -</pre> - </td> - - <td> - <p>Returns the current load.</p> - - <p>Calling this method will not compile when <a href= - "#External_Load_Access1313998607"><tt>External_Load_Access</tt></a> - == <tt><b>false</b></tt>.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - set_load - (float load) -</pre> - </td> - - <td> - <p>Sets the <span class="c1"><tt>load</tt></span>; does - not resize the container.</p> - - <p>It is the responsibility of the user to pass an - appropriate <span class="c1"><tt>load</tt></span> to this - function. Calling this method will not compile when - <a href= - "#External_Load_Access1313998607"><tt>External_Load_Access</tt></a> - == <tt><b>false</b></tt>.</p> - </td> - </tr> - </table> - - <h2><a name="link7" id="link7">Protected Methods</a></h2> - - <h3><a name="link8" id="link8">Insert Search - Notifications.</a></h3> - - <p>Notifications called during an insert operation.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_insert_search_start - () -</pre> - </td> - - <td> - <p>Notifies a search started.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_insert_search_collision - () -</pre> - </td> - - <td> - <p>Notifies a search encountered a collision.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_insert_search_end - () -</pre> - </td> - - <td> - <p>Notifies a search ended.</p> - </td> - </tr> - </table> - - <h3><a name="link9" id="link9">Find Search - Notifications.</a></h3> - - <p>Notifications called during a find operation.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_find_search_start - () -</pre> - </td> - - <td> - <p>Notifies a search started.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_find_search_collision - () -</pre> - </td> - - <td> - <p>Notifies a search encountered a collision.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_find_search_end - () -</pre> - </td> - - <td> - <p>Notifies a search ended.</p> - </td> - </tr> - </table> - - <h3><a name="link10" id="link10">Erase Search - Notifications.</a></h3> - - <p>Notifications called during an insert operation.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_erase_search_start - () -</pre> - </td> - - <td> - <p>Notifies a search started.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_erase_search_collision - () -</pre> - </td> - - <td> - <p>Notifies a search encountered a collision.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_erase_search_end - () -</pre> - </td> - - <td> - <p>Notifies a search ended.</p> - </td> - </tr> - </table> - - <h3><a name="link11" id="link11">Content Change - Notifications</a></h3> - - <p>Notifications called when the content of the table changes - in a way that can affect the resize policy.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_inserted - (<a href="#size_type55424436"><tt>size_type</tt></a> num_entries) -</pre> - </td> - - <td> - <p>Notifies an element was inserted.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_erased - (<a href="#size_type55424436"><tt>size_type</tt></a> num_entries) -</pre> - </td> - - <td> - <p>Notifies an element was erased.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - notify_cleared - () -</pre> - </td> - - <td> - <p>Notifies the table was cleared.</p> - </td> - </tr> - </table> - - <h3><a name="link12" id="link12">Size Change - Notifications</a></h3> - - <p>Notifications called when the table changes size.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - notify_resized - (<a href="#size_type55424436"><tt>size_type</tt></a> new_size) -</pre> - </td> - - <td> - <p>Notifies the table was resized as a result of this - object's signifying that a resize is needed.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - notify_externally_resized - (<a href="#size_type55424436"><tt>size_type</tt></a> new_size) -</pre> - </td> - - <td> - <p>Notifies the table was resized externally.</p> - </td> - </tr> - </table> - - <h3><a name="link13" id="link13">Queries</a></h3> - - <p>Called to query whether/how to resize.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>bool</b> - is_resize_needed - () <b>const</b> -</pre> - </td> - - <td> - <p>Queries whether a resize is needed.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>bool</b> - is_grow_needed - (<a href= -"#size_type55424436"><tt>size_type</tt></a> size, <a href= -"#size_type55424436"><tt>size_type</tt></a> num_entries) <b>const</b> -</pre> - </td> - - <td> - <p>Queries whether a grow is needed.</p> - - <p>This method is called only if this object indicated is - needed.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_find_timing_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_find_timing_test_gcc.png Binary files differdeleted file mode 100644 index 85b9eca4ff6..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_find_timing_test_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_find_timing_test_local.png b/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_find_timing_test_local.png Binary files differdeleted file mode 100644 index 40404c87518..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_find_timing_test_local.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index d1234aa11d8..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_find_timing_test_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_find_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_find_gcc.png Binary files differdeleted file mode 100644 index 1db2cc0c6a8..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_find_gcc.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index bb5f30b68b9..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_find_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_find_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_find_msvc.png Binary files differdeleted file mode 100644 index 0b51d9432a9..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_find_msvc.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 6e494038125..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_insert_gcc.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 8dc7735c113..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_insert_local.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 39c96ad8daf..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_insert_msvc.png +++ /dev/null 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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>cc_hash_table Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>cc_hash_table</tt> Interface</h1> - - <p>A concrete collision-chaining hash-based associative - container.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/assoc_container.hpp"><tt>assoc_container.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Template Parameters</a></h2> - - <table class="c1" width="100%" border="1" summary= - "Template Parameters"> - <tr> - <td width="20%" align="left"><b>Parameter</b></td> - - <td width="50%" align="left"><b>Description</b></td> - - <td width="30%" align="left"><b>Default Value</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="Key2501" id="Key2501"><b>typename</b> Key</a> -</pre> - </td> - - <td> - <p>Key type.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Mapped318655" id="Mapped318655"><b>typename</b> Mapped</a> -</pre> - </td> - - <td> - <p>Mapped type.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Hash_Fn1515835" id= -"Hash_Fn1515835"><b>class</b> Hash_Fn </a> -</pre> - </td> - - <td> - <p>Hash functor.</p> - </td> - - <td> - <pre> -__gnu_cxx::hash<<a href="#Key2501"><tt>Key</tt></a>> -</pre>if using gcc; - <pre> -stdext::hash_value<<a href="#Key2501"><tt>Key</tt></a>> -</pre>if using Visual C++ .net - </td> - </tr> - - <tr> - <td> - <pre> -<a name="Eq_Fn60085" id="Eq_Fn60085"><b>class</b> Eq_Fn </a> -</pre> - </td> - - <td> - <p>Equivalence functor.</p> - </td> - - <td> - <pre> -std::equal_to<<a href="#Key2501"><tt>Key</tt></a>> -</pre> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="Comb_Hash_Fn320611039" id= -"Comb_Hash_Fn320611039"><b>class</b> Comb_Hash_Fn </a> -</pre> - </td> - - <td> - <p>Combining hash functor.</p> - - <p>If <a href="#Hash_Fn1515835"><tt>Hash_Fn</tt></a> is - not <a href="null_hash_fn.html"><span class= - "c2"><tt>null_hash_fn</tt></span></a>, then this is the - ranged-hash functor; otherwise, this is the range-hashing - functor.</p> - - <p>(See <a href= - "hash_based_containers.html#hash_policies">Design::Hash-Based - Containers::Hash Policies</a>.)</p> - </td> - - <td> - <pre> -<a href="direct_mask_range_hashing.html"><span class= -"c2"><tt>direct_mask_range_hashing</tt></span></a> -</pre> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="Resize_Policy566860465" id= -"Resize_Policy566860465"><b>class</b> Resize_Policy </a> -</pre> - </td> - - <td> - <p>Resize policy.</p> - </td> - - <td> - If <tt><a href= - "#Comb_Hash_Fn320611039"><tt>Comb_Hash_Fn</tt></a></tt> - is <tt><a href= - "direct_mask_range_hashing.html"><span class= - "c2"><tt>direct_mask_range_hashing</tt></span></a></tt>, - then - <pre> -<a href="hash_standard_resize_policy.html"><span class= -"c2"><tt>hash_standard_resize_policy</tt></span></a>< - <a href="hash_exponential_size_policy.html"><span class= -"c2"><tt>hash_exponential_size_policy</tt></span></a>< - <b>typename</b> <a href= -"#Comb_Hash_Fn320611039"><tt>Comb_Hash_Fn</tt></a>::size_type>, - <a href="hash_load_check_resize_trigger.html"><span class= -"c2"><tt>hash_load_check_resize_trigger</tt></span></a>< - <b>typename</b> <a href= -"#Comb_Hash_Fn320611039"><tt>Comb_Hash_Fn</tt></a>::size_type>, - <b>false</b>, - <b>typename</b> <a href= -"#Comb_Hash_Fn320611039"><tt>Comb_Hash_Fn</tt></a>::size_type> -</pre>otherwise, - <pre> -<a href="hash_standard_resize_policy.html"><span class= -"c2"><tt>hash_standard_resize_policy</tt></span></a>< - <a href="hash_exponential_size_policy.html"><span class= -"c2"><tt>hash_exponential_size_policy</tt></span></a>< - <b>typename</b> <a href= -"#Comb_Hash_Fn320611039"><tt>Comb_Hash_Fn</tt></a>::size_type>, - <a href="hash_load_check_resize_trigger.html"><span class= -"c2"><tt>hash_load_check_resize_trigger</tt></span></a>< - <b>typename</b> <a href= -"#Comb_Hash_Fn320611039"><tt>Comb_Hash_Fn</tt></a>::size_type>, - <b>false</b>, - <b>typename</b> <a href= -"#Comb_Hash_Fn320611039"><tt>Comb_Hash_Fn</tt></a>::size_type> -</pre> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="Store_Hash218262104" id= -"Store_Hash218262104"><b>bool</b> Store_Hash </a> -</pre> - </td> - - <td> - <p>Indicates whether the hash value will be stored along - with each key.</p> - - <p>If <tt><a href= - "#hash_fn2015995"><tt>hash_fn</tt></a></tt> is <a href= - "null_hash_fn.html"><span class= - "c2"><tt>null_hash_fn</tt></span></a>, then the container - will not compile if this value is - <tt><b>true</b></tt></p> - </td> - - <td> - <pre> -<tt><b>false</b></tt> -</pre> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="Allocator35940069" id= -"Allocator35940069"><b>class</b> Allocator </a> -</pre> - </td> - - <td> - <p>Allocator type.</p> - </td> - - <td> - <pre> -std::allocator<<b>char</b>> -</pre> - </td> - </tr> - </table> - - <h2><a name="link2" id="link2">Base Classes</a></h2> - - <table class="c1" width="100%" border="1" summary="Bases"> - <tr> - <td width="80%" align="left"><b>Class</b></td> - - <td width="20%" align="left"><b>Derivation Type</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="basic_hash_table.html"><span class= -"c2"><tt>basic_hash_table</tt></span></a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - </table> - - <h2><a name="link3" id="link3">Public Types and - Constants</a></h2> - - <h3><a name="link4" id="link4">Policy Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="hash_fn2015995" id="hash_fn2015995">hash_fn</a> -</pre> - </td> - - <td> - <pre> -<a href="#Hash_Fn1515835"><tt>Hash_Fn</tt></a> -</pre> - </td> - - <td> - <p>Hash functor type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="eq_fn80245" id="eq_fn80245">eq_fn</a> -</pre> - </td> - - <td> - <pre> -<a href="#Eq_Fn60085"><tt>Eq_Fn</tt></a> -</pre> - </td> - - <td> - <p>Equivalence functor type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="resize_policy4084493169" id= -"resize_policy4084493169">resize_policy</a> -</pre> - </td> - - <td> - <pre> -<a href="#Resize_Policy566860465"><tt>Resize_Policy</tt></a> -</pre> - </td> - - <td> - <p>Resize policy type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="comb_hash_fn1883611199" id= -"comb_hash_fn1883611199">comb_hash_fn</a> -</pre> - </td> - - <td> - <pre> -<a href="#Comb_Hash_Fn320611039"><tt>Comb_Hash_Fn</tt></a> -</pre> - </td> - - <td> - <p>Combining hash functor type.</p> - </td> - </tr> - </table> - - <h2><a name="link5" id="link5">Public Methods</a></h2> - - <h3><a name="link6" id="link6">Constructors, Destructor, and - Related</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> - cc_hash_table - () -</pre> - </td> - - <td> - <p>Default constructor.</p> - </td> - </tr> - - <tr> - <td> - <pre> - cc_hash_table - (<b>const</b> <a href= -"#hash_fn2015995"><tt>hash_fn</tt></a> &r_hash_fn) -</pre> - </td> - - <td> - <p>Constructor taking some policy objects. <span class= - "c1"><tt>r_hash_fn</tt></span> will be copied by the - <a href="#Hash_Fn1515835"><tt>Hash_Fn</tt></a> object of - the container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> - cc_hash_table - (<b>const</b> <a href= -"#hash_fn2015995"><tt>hash_fn</tt></a> &r_hash_fn, - <b>const</b> <a href= -"#eq_fn80245"><tt>eq_fn</tt></a> &r_eq_fn) -</pre> - </td> - - <td> - <p>Constructor taking some policy objects. <span class= - "c1"><tt>r_hash_fn</tt></span> will be copied by the - <a href="#hash_fn2015995"><tt>hash_fn</tt></a> object of - the container object, and <span class= - "c1"><tt>r_eq_fn</tt></span> will be copied by the - <a href="#eq_fn80245"><tt>eq_fn</tt></a> object of the - container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> - cc_hash_table - (<b>const</b> <a href= -"#hash_fn2015995"><tt>hash_fn</tt></a> &r_hash_fn, - <b>const</b> <a href= -"#eq_fn80245"><tt>eq_fn</tt></a> &r_eq_fn, - <b>const</b> <a href= -"#comb_hash_fn1883611199"><tt>comb_hash_fn</tt></a> &r_comb_hash_fn) -</pre> - </td> - - <td> - <p>Constructor taking some policy objects. <span class= - "c1"><tt>r_hash_fn</tt></span> will be copied by the - <a href="#hash_fn2015995"><tt>hash_fn</tt></a> object of - the container object, <span class= - "c1"><tt>r_eq_fn</tt></span> will be copied by the - <a href="#eq_fn80245"><tt>eq_fn</tt></a> object of the - container object, and <span class= - "c1"><tt>r_comb_hash_fn</tt></span> will be copied by the - <a href= - "#comb_hash_fn1883611199"><tt>comb_hash_fn</tt></a> - object of the container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> - cc_hash_table - (<b>const</b> <a href= -"#hash_fn2015995"><tt>hash_fn</tt></a> &r_hash_fn, - <b>const</b> <a href= -"#eq_fn80245"><tt>eq_fn</tt></a> &r_eq_fn, - <b>const</b> <a href= -"#comb_hash_fn1883611199"><tt>comb_hash_fn</tt></a> &r_comb_hash_fn, - <b>const</b> <a href= -"#resize_policy4084493169"><tt>resize_policy</tt></a> &r_resize_policy) -</pre> - </td> - - <td> - <p>Constructor taking some policy objects. <span class= - "c1"><tt>r_hash_fn</tt></span> will be copied by the - <a href="#hash_fn2015995"><tt>hash_fn</tt></a> object of - the container object, <span class= - "c1"><tt>r_eq_fn</tt></span> will be copied by the - <a href="#eq_fn80245"><tt>eq_fn</tt></a> object of the - container object, <span class= - "c1"><tt>r_comb_hash_fn</tt></span> will be copied by the - <a href= - "#comb_hash_fn1883611199"><tt>comb_hash_fn</tt></a> - object of the container object, and <span class= - "c1"><tt>r_resize_policy</tt></span> will be copied by - the <a href= - "#resize_policy4084493169"><tt>resize_policy</tt></a> - object of the container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>template</b>< - <b>class</b> It> - cc_hash_table - (It first_it, - It last_it) -</pre> - </td> - - <td> - <p>Constructor taking iterators to a range of - value_types. The value_types between <span class= - "c1"><tt>first_it</tt></span> and <span class= - "c1"><tt>last_it</tt></span> will be inserted into the - container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>template</b>< - <b>class</b> It> - cc_hash_table - (It first_it, - It last_it, - <b>const</b> <a href= -"#hash_fn2015995"><tt>hash_fn</tt></a> &r_hash_fn) -</pre> - </td> - - <td> - <p>Constructor taking iterators to a range of value_types - and some policy objects. The value_types between - <span class="c1"><tt>first_it</tt></span> and - <span class="c1"><tt>last_it</tt></span> will be inserted - into the container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>template</b>< - <b>class</b> It> - cc_hash_table - (It first_it, - It last_it, - <b>const</b> <a href= -"#hash_fn2015995"><tt>hash_fn</tt></a> &r_hash_fn, - <b>const</b> <a href= -"#eq_fn80245"><tt>eq_fn</tt></a> &r_eq_fn) -</pre> - </td> - - <td> - <p>Constructor taking iterators to a range of value_types - and some policy objects The value_types between - <span class="c1"><tt>first_it</tt></span> and - <span class="c1"><tt>last_it</tt></span> will be inserted - into the container object. <span class= - "c1"><tt>r_hash_fn</tt></span> will be copied by the - <a href="#hash_fn2015995"><tt>hash_fn</tt></a> object of - the container object, and <span class= - "c1"><tt>r_eq_fn</tt></span> will be copied by the - <a href="#eq_fn80245"><tt>eq_fn</tt></a> object of the - container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>template</b>< - <b>class</b> It> - cc_hash_table - (It first_it, - It last_it, - <b>const</b> <a href= -"#hash_fn2015995"><tt>hash_fn</tt></a> &r_hash_fn, - <b>const</b> <a href= -"#eq_fn80245"><tt>eq_fn</tt></a> &r_eq_fn, - <b>const</b> <a href= -"#comb_hash_fn1883611199"><tt>comb_hash_fn</tt></a> &r_comb_hash_fn) -</pre> - </td> - - <td> - <p>Constructor taking iterators to a range of value_types - and some policy objects The value_types between - <span class="c1"><tt>first_it</tt></span> and - <span class="c1"><tt>last_it</tt></span> will be inserted - into the container object. <span class= - "c1"><tt>r_hash_fn</tt></span> will be copied by the - <a href="#hash_fn2015995"><tt>hash_fn</tt></a> object of - the container object, <span class= - "c1"><tt>r_eq_fn</tt></span> will be copied by the - <a href="#eq_fn80245"><tt>eq_fn</tt></a> object of the - container object, and <span class= - "c1"><tt>r_comb_hash_fn</tt></span> will be copied by the - <a href= - "#comb_hash_fn1883611199"><tt>comb_hash_fn</tt></a> - object of the container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>template</b>< - <b>class</b> It> - cc_hash_table - (It first_it, - It last_it, - <b>const</b> <a href= -"#hash_fn2015995"><tt>hash_fn</tt></a> &r_hash_fn, - <b>const</b> <a href= -"#eq_fn80245"><tt>eq_fn</tt></a> &r_eq_fn, - <b>const</b> <a href= -"#comb_hash_fn1883611199"><tt>comb_hash_fn</tt></a> &r_comb_hash_fn, - <b>const</b> <a href= -"#resize_policy4084493169"><tt>resize_policy</tt></a> &r_resize_policy) -</pre> - </td> - - <td> - <p>Constructor taking iterators to a range of value_types - and some policy objects The value_types between - <span class="c1"><tt>first_it</tt></span> and - <span class="c1"><tt>last_it</tt></span> will be inserted - into the container object. <span class= - "c1"><tt>r_hash_fn</tt></span> will be copied by the - <a href="#hash_fn2015995"><tt>hash_fn</tt></a> object of - the container object, <span class= - "c1"><tt>r_eq_fn</tt></span> will be copied by the - <a href="#eq_fn80245"><tt>eq_fn</tt></a> object of the - container object, <span class= - "c1"><tt>r_comb_hash_fn</tt></span> will be copied by the - <a href= - "#comb_hash_fn1883611199"><tt>comb_hash_fn</tt></a> - object of the container object, and <span class= - "c1"><tt>r_resize_policy</tt></span> will be copied by - the <a href= - "#resize_policy4084493169"><tt>resize_policy</tt></a> - object of the container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> - cc_hash_table - (<b>const</b> <span class= -"c2"><tt>cc_hash_table</tt></span> &other) -</pre> - </td> - - <td> - <p>Copy constructor.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> - ~cc_hash_table - () -</pre> - </td> - - <td> - <p>Destructor.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<span class="c2"><tt>cc_hash_table</tt></span> & - <b>operator</b>= - (<b>const</b> <span class= -"c2"><tt>cc_hash_table</tt></span> &other) -</pre> - </td> - - <td> - <p>Assignment operator.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - swap - (<span class= -"c2"><tt>cc_hash_table</tt></span> &other) -</pre> - </td> - - <td> - <p>Swaps content.</p> - </td> - </tr> - </table> - - <h3><a name="link7" id="link7">Policy Access Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="#comb_hash_fn1883611199"><tt>comb_hash_fn</tt></a> & - get_comb_hash_fn - () -</pre> - </td> - - <td> - <p>Access to the <a href= - "#comb_hash_fn1883611199"><tt>comb_hash_fn</tt></a> - object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>const</b> <a href= -"#comb_hash_fn1883611199"><tt>comb_hash_fn</tt></a> & - get_comb_hash_fn - () <b>const</b> -</pre> - </td> - - <td> - <p>Const access to the <a href= - "#comb_hash_fn1883611199"><tt>comb_hash_fn</tt></a> - object.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/cc_hash_tag.html 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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>cc_hash_tag Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>cc_hash_tag</tt> Interface</h1> - - <p>Collision-chaining hash data structure tag.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Base Classes</a></h2> - - <table class="c1" width="100%" border="1" summary="Bases"> - <tr> - <td width="80%" align="left"><b>Class</b></td> - - <td width="20%" align="left"><b>Derivation Type</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="basic_hash_tag.html"><span class= -"c2"><tt>basic_hash_tag</tt></span></a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/ccgp_hash_random_int_subscript_timing_test_insert_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/ccgp_hash_random_int_subscript_timing_test_insert_gcc.png Binary files differdeleted file mode 100644 index fde6b41bf94..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/ccgp_hash_random_int_subscript_timing_test_insert_gcc.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 2b8c0e76d5f..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/ccgp_hash_random_int_subscript_timing_test_insert_local.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 11dca77fcfe..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/ccgp_hash_random_int_subscript_timing_test_insert_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/checked_by_tidy.gif b/libstdc++-v3/doc/html/ext/pb_ds/checked_by_tidy.gif Binary files differdeleted file mode 100644 index 47c2c4859c5..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/checked_by_tidy.gif +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/concepts.html b/libstdc++-v3/doc/html/ext/pb_ds/concepts.html deleted file mode 100644 index 9f6c2246254..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/concepts.html +++ /dev/null @@ -1,118 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>Concepts</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1>Concepts</h1> - - <h2><a name="concepts_find_and_range_iterators" id= - "concepts_find_and_range_iterators">Point and Range Methods and - Iterators</a></h2> - - <p>A point-type iterator is an iterator that refers to a - specific element, <i>e.g.</i> as returned through an - associative-container's <tt>find</tt> method; a range-type - iterator is an iterator that is used to go over a sequence of - elements, <i>e.g.</i>, as returned by a container's - <tt>find</tt> method. A point-type method is a method that - returns a point-type iterator; a range-type method is a method - that returns a range-type iterator.</p> - - <p>For most containers, these types are synonymous; for - self-organizing containers, such as hash-based containers or - priority queues, these are inherently different (in any - implementation, including that of the STL), but in - <tt>pb_ds</tt> this is made explicit - they are distinct - types.</p> - - - <h2><a name="invalidation_guarantees" id= - "invalidation_guarantees">Invalidation Guarantees</a></h2> - - <p>If one manipulates a container object, then iterators - previously obtained from it can be invalidated. In some cases a - previously-obtained iterator cannot be de-referenced; in other - cases, the iterator's next or previous element might have - changed unpredictably. This corresponds exactly to the question - whether a point-type or range-type iterator (see previous - concept) is valid or not. In <tt>pb_ds</tt> one can query a - container (in compile time) what are its invalidation - guarantees.</p> - - <h2><a name="prm_sec" id="prm_sec">Primary and Secondary Keys - and Associative Containers</a></h2> - - <p>In <tt>pb_ds</tt> there are no associative containers which - allow multiple values with equivalent keys (such as the STL's - <tt>std::multimap</tt>, for example). Instead, one maps the - unique part of a key - the primary key, into an - associative-container of the (originally) non-unique parts of - the key - the secondary key. A primary associative-container is - an associative container of primary keys; a secondary - associative-container is an associative container of secondary - keys.</p> - - - <h2><a name="concepts_null_policies" id= - "concepts_null_policies">Null Policy Classes</a></h2> - - <p>Associative containers are typically parametrized by - various policies. For example, a hash-based associative - container is parametrized by a hash-functor, transforming each - key into an non-negative numerical type. Each such value is - then further mapped into a position within the table. The - mapping of a key into a position within the table is therefore - a two-step process.</p> - - <p>In some cases, instantiations are <i>redundant</i>. For - example, when the keys are integers, it is possible to use a - <i>redundant</i> hash policy, which transforms each key into - its value.</p> - - <p>In some other cases, these policies are <i>irrelevant</i>. - For example, a hash-based associative container might transform - keys into positions within a table by a different method than - the two-step method described above. In such a case, the hash - functor is simply irrelevant.</p> - - <p><tt>pb_ds</tt> uses special pre-defined "null policies" - classes for these cases. Some null policies in <tt>pb_ds</tt> - are:</p> - - <ol> - <li><a href= - "null_mapped_type.html"><tt>null_mapped_type</tt></a></li> - - <li><a href= - "null_tree_node_update.html"><tt>null_tree_node_update</tt></a></li> - - <li><a href= - "null_trie_node_update.html"><tt>null_trie_node_update</tt></a></li> - - <li><a href= - "null_hash_fn.html"><tt>null_hash_fn</tt></a></li> - - <li><a href= - "null_probe_fn.html"><tt>null_probe_fn</tt></a></li> - </ol> - - <p>A "set" in <tt>pb_ds</tt>, for example, is an associative - container with its <tt>Data_Parameter</tt> instantiated by - <a href="null_mapped_type.html"><tt>null_mapped_type</tt></a>. - <a href= - "tree_based_containers.html#invariants">Design::Tree-Based - Containers::Node Invariants</a> explains another case where a - null policy is needed.</p> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/contact.html b/libstdc++-v3/doc/html/ext/pb_ds/contact.html deleted file mode 100644 index 3d506c975c7..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/contact.html +++ /dev/null @@ -1,22 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>Contact</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1>Contact</h1> - - <p>For anything relevant, please write to <a href= - "mailto:pbassoc@gmail.com">pbassoc@gmail.com</a></p> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/container_base.html b/libstdc++-v3/doc/html/ext/pb_ds/container_base.html deleted file mode 100644 index 359e02459b8..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/container_base.html +++ /dev/null @@ -1,1063 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>container_base Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>container_base</tt> Interface</h1> - - <p>An abstract basic associative container.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/assoc_container.hpp"><tt>assoc_container.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Template Parameters</a></h2> - - <table class="c1" width="100%" border="1" summary= - "Template Parameters"> - <tr> - <td width="20%" align="left"><b>Parameter</b></td> - - <td width="50%" align="left"><b>Description</b></td> - - <td width="30%" align="left"><b>Default Value</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="Key2501" id="Key2501"><b>typename</b> Key</a> -</pre> - </td> - - <td> - <p>Key type.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Mapped318655" id="Mapped318655"><b>typename</b> Mapped</a> -</pre> - </td> - - <td> - <p>Mapped type.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Tag278938" id="Tag278938"><b>class</b> Tag</a> -</pre> - </td> - - <td> - <p>Data structure tag.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Policy_Tl42017403" id= -"Policy_Tl42017403"><b>class</b> Policy_Tl</a> -</pre> - </td> - - <td> - <p>Policy typelist.</p> - - <p>Contains subclasses' policies.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Allocator35940069" id= -"Allocator35940069"><b>class</b> Allocator</a> -</pre> - </td> - - <td> - <p>Allocator type.</p> - </td> - - <td>-</td> - </tr> - </table> - - <h2><a name="link2" id="link2">Public Types and - Constants</a></h2> - - <h3><a name="link3" id="link3">General Container - Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="size_type55424436" id="size_type55424436">size_type</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#Allocator35940069"><tt>Allocator</tt></a>::size_type -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="difference_type868028452" id= -"difference_type868028452">difference_type</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#Allocator35940069"><tt>Allocator</tt></a>::difference_type -</pre> - </td> - - <td> - <p>Difference type.</p> - </td> - </tr> - </table> - - <h3><a name="link4" id="link4">Categories</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="container_category1247973216" id= -"container_category1247973216">container_category</a> -</pre> - </td> - - <td> - <pre> -<a href="#Tag278938"><tt>Tag</tt></a> -</pre> - </td> - - <td> - <p>The underlying mapped-structure tag of the - container.</p> - - <p>This is one of:</p> - - <ol> - <li><a href="cc_hash_tag.html"><span class= - "c2"><tt>cc_hash_tag</tt></span></a></li> - - <li><a href="gp_hash_tag.html"><span class= - "c2"><tt>gp_hash_tag</tt></span></a></li> - - <li><a href="rb_tree_tag.html"><span class= - "c2"><tt>rb_tree_tag</tt></span></a></li> - - <li><a href="ov_tree_tag.html"><span class= - "c2"><tt>ov_tree_tag</tt></span></a></li> - - <li><a href="splay_tree_tag.html"><span class= - "c2"><tt>splay_tree_tag</tt></span></a></li> - - <li><a href="pat_trie_tag.html"><span class= - "c2"><tt>pat_trie_tag</tt></span></a></li> - - <li><a href="list_update_tag.html"><span class= - "c2"><tt>list_update_tag</tt></span></a></li> - </ol> - </td> - </tr> - </table> - - <h3><a name="link5" id="link5">Policy Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="allocator48440069" id="allocator48440069">allocator</a> -</pre> - </td> - - <td> - <pre> -<a href="#Allocator35940069"><tt>Allocator</tt></a> -</pre> - </td> - - <td> - <p><a href="#Allocator35940069"><tt>Allocator</tt></a> - type.</p> - </td> - </tr> - </table> - - <h3><a name="link6" id="link6">Key-Type Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="key_type10393186" id="key_type10393186">key_type</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind< - <a href="#Key2501"><tt>Key</tt></a>>::other::value_type -</pre> - </td> - - <td> - <p><a href="#Key2501"><tt>Key</tt></a> type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="key_reference2411522399" id= -"key_reference2411522399">key_reference</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind< - <a href= -"#key_type10393186"><tt>key_type</tt></a>>::other::reference -</pre> - </td> - - <td> - <p><a href="#Key2501"><tt>Key</tt></a> reference - type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="const_key_reference3185471705" id= -"const_key_reference3185471705">const_key_reference</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind< - <a href= -"#key_type10393186"><tt>key_type</tt></a>>::other::const_reference -</pre> - </td> - - <td> - <p>Const key reference type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="key_pointer1299054769" id= -"key_pointer1299054769">key_pointer</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind< - <a href= -"#key_type10393186"><tt>key_type</tt></a>>::other::pointer -</pre> - </td> - - <td> - <p><a href="#Key2501"><tt>Key</tt></a> pointer type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="const_key_pointer3735194427" id= -"const_key_pointer3735194427">const_key_pointer</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind< - <a href= -"#key_type10393186"><tt>key_type</tt></a>>::other::const_pointer -</pre> - </td> - - <td> - <p>Const key pointer type.</p> - </td> - </tr> - </table> - - <h3><a name="link7" id="link7">Mapped-Type Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="mapped_type1308374436" id= -"mapped_type1308374436">mapped_type</a> -</pre> - </td> - - <td> - <pre> -<a href="#Mapped318655"><tt>Mapped</tt></a> -</pre> - </td> - - <td> - <p><a href="#Mapped318655"><tt>Mapped</tt></a> type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="mapped_reference4153801225" id= -"mapped_reference4153801225">mapped_reference</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind< - <a href= -"#mapped_type1308374436"><tt>mapped_type</tt></a>>::other::reference -</pre> - </td> - - <td> - <p><a href="#Mapped318655"><tt>Mapped</tt></a> reference - type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="const_mapped_reference2113216667" id= -"const_mapped_reference2113216667">const_mapped_reference</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind< - <a href= -"#mapped_type1308374436"><tt>mapped_type</tt></a>>::other::const_reference -</pre> - </td> - - <td> - <p>Const mapped reference type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="mapped_pointer337953771" id= -"mapped_pointer337953771">mapped_pointer</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind< - <a href= -"#mapped_type1308374436"><tt>mapped_type</tt></a>>::other::pointer -</pre> - </td> - - <td> - <p><a href="#Mapped318655"><tt>Mapped</tt></a> pointer - type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="const_mapped_pointer4207700301" id= -"const_mapped_pointer4207700301">const_mapped_pointer</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind< - <a href= -"#mapped_type1308374436"><tt>mapped_type</tt></a>>::other::const_pointer -</pre> - </td> - - <td> - <p>Const mapped pointer type.</p> - </td> - </tr> - </table> - - <h3><a name="link8" id="link8">Value-Type Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="value_type279018186" id= -"value_type279018186">value_type</a> -</pre> - </td> - - <td> - <pre> -<br /> -If <a href="#Mapped318655"><tt>Mapped</tt></a> is <a href= -"null_mapped_type.html"><span class= -"c2"><tt>null_mapped_type</tt></span></a>, then <a href= -"#Key2501"><tt>Key</tt></a><br /> -Otherwise, <a href="#Mapped318655"><tt>Mapped</tt></a> -</pre> - </td> - - <td> - <p>Value type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="reference54418471" id="reference54418471">reference</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind< - <a href= -"#value_type279018186"><tt>value_type</tt></a>>::other::reference -</pre> - </td> - - <td> - <p>Value reference type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="const_reference495461441" id= -"const_reference495461441">const_reference</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind< - <a href= -"#value_type279018186"><tt>value_type</tt></a>>::other::const_reference -</pre> - </td> - - <td> - <p>Const value <a href= - "#reference54418471"><tt>reference</tt></a> type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="pointer2179769" id="pointer2179769">pointer</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind< - <a href= -"#value_type279018186"><tt>value_type</tt></a>>::other::pointer -</pre> - </td> - - <td> - <p>Value pointer type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="const_pointer878814947" id= -"const_pointer878814947">const_pointer</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind< - <a href= -"#value_type279018186"><tt>value_type</tt></a>>::other::const_pointer -</pre> - </td> - - <td> - <p>Const Value <a href= - "#pointer2179769"><tt>pointer</tt></a> type.</p> - </td> - </tr> - </table> - - <h3><a name="link9" id="link9">Iterator Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="const_point_iterator2364676009" id= -"const_point_iterator2364676009">const_point_iterator</a> -</pre> - </td> - - <td> - <pre> -Const point-type iterator. -</pre> - </td> - - <td> - <p>Const point-type iterator.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="point_iterator2789896775" id= -"point_iterator2789896775">point_iterator</a> -</pre> - </td> - - <td> - <pre> -<br /> -Point-type iterator.<br /> -If <a href="#Mapped318655"><tt>Mapped</tt></a> is <a href= -"null_mapped_type.html"><span class= -"c2"><tt>null_mapped_type</tt></span></a>, then this is synonymous to <a href="#const_point_iterator2364676009"><tt>const_point_iterator</tt></a> -</pre> - </td> - - <td> - <p>Point-type iterator.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="const_iterator98626788" id= -"const_iterator98626788">const_iterator</a> -</pre> - </td> - - <td> - <pre> -Const range-type iterator. -</pre> - </td> - - <td> - <p>Const range-type iterator.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="iterator10418194" id="iterator10418194">iterator</a> -</pre> - </td> - - <td> - <pre> -<br /> -Range-type iterator.<br /> -If <a href="#Mapped318655"><tt>Mapped</tt></a> is <a href= -"null_mapped_type.html"><span class= -"c2"><tt>null_mapped_type</tt></span></a>, then this is synonymous to <a href="#const_iterator98626788"><tt>const_iterator</tt></a> -</pre> - </td> - - <td> - <p>Range-type iterator.</p> - </td> - </tr> - </table> - - <h2><a name="link10" id="link10">Public Methods</a></h2> - - <h3><a name="link11" id="link11">Constructors, Destructor, and - Related</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> - ~container_base - () -</pre> - </td> - - <td> - <p>Destructor.</p> - </td> - </tr> - </table> - - <h3><a name="link12" id="link12">Information Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a> - size - () <b>const</b> -</pre> - </td> - - <td> - <p>Returns the number of distinct <a href= - "#value_type279018186"><tt>value_type</tt></a> objects - the container object is storing.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a> - max_size - () <b>const</b> -</pre> - </td> - - <td> - <p>Returns an upper bound on the number of distinct - <a href="#value_type279018186"><tt>value_type</tt></a> - objects this container can store.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>bool</b> - empty - () <b>const</b> -</pre> - </td> - - <td> - <p>Returns whether the container object is not storing - any <a href= - "#value_type279018186"><tt>value_type</tt></a> - objects.</p> - </td> - </tr> - </table> - - <h3><a name="link13" id="link13">Insert Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -std::pair<<a href= -"#point_iterator2789896775"><tt>point_iterator</tt></a>, <b>bool</b>> - insert - (<a href= -"#const_reference495461441"><tt>const_reference</tt></a> r_val) -</pre> - </td> - - <td> - <p>Inserts a <a href= - "#value_type279018186"><tt>value_type</tt></a> object. If - no <a href="#value_type279018186"><tt>value_type</tt></a> - with <span class="c1"><tt>r_val</tt></span>'s key was in - the container object, inserts and returns (<a href= - "#point_iterator2789896775"><tt>point_iterator</tt></a> - object associated with <span class= - "c1"><tt>r_val</tt></span>, <tt><b>true</b></tt>); - otherwise just returns (<a href= - "#point_iterator2789896775"><tt>point_iterator</tt></a> - object associated with <span class= - "c1"><tt>r_val</tt></span>'s key, - <tt><b>false</b></tt>).</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a href="#mapped_reference4153801225"><tt>mapped_reference</tt></a> - <b>operator</b>[] - (<a href= -"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key) -</pre> - </td> - - <td> - <p>Subscript operator.</p> - </td> - </tr> - </table> - - <h3><a name="link14" id="link14">Find Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="#point_iterator2789896775"><tt>point_iterator</tt></a> - find - (<a href= -"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key) -</pre> - </td> - - <td> - <p>Returns the <a href= - "#point_iterator2789896775"><tt>point_iterator</tt></a> - corresponding to the <a href= - "#value_type279018186"><tt>value_type</tt></a> with - <span class="c1"><tt>r_key</tt></span> as its key, or the - <a href= - "#point_iterator2789896775"><tt>point_iterator</tt></a> - corresponding to the just-after-last entry if no such - <a href= - "#value_type279018186"><tt>value_type</tt></a>.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a href= -"#const_point_iterator2364676009"><tt>const_point_iterator</tt></a> - find - (<a href= -"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key) <b>const</b> -</pre> - </td> - - <td> - <p>Returns the <a href= - "#const_point_iterator2364676009"><tt>const_point_iterator</tt></a> - corresponding to the <a href= - "#value_type279018186"><tt>value_type</tt></a> with - <span class="c1"><tt>r_key</tt></span> as its key, or the - <a href= - "#const_point_iterator2364676009"><tt>const_point_iterator</tt></a> - corresponding to the just-after-last entry if no such - <a href= - "#value_type279018186"><tt>value_type</tt></a>.</p> - </td> - </tr> - </table> - - <h3><a name="link15" id="link15">Erase Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>bool</b> - erase - (<a href= -"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key) -</pre> - </td> - - <td> - <p>Erases the <a href= - "#value_type279018186"><tt>value_type</tt></a> associated - with <span class="c1"><tt>r_key</tt></span>. returns - <tt><b>false</b></tt> iff <span class= - "c1"><tt>r_key</tt></span> was not contained.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>template</b>< - <b>class</b> Pred> -<a href="#size_type55424436"><tt>size_type</tt></a> - erase_if - (Pred prd) -</pre> - </td> - - <td> - <p>Erases any <a href= - "#value_type279018186"><tt>value_type</tt></a> satisfying - the predicate <span class="c1"><tt>prd</tt></span> (this - is transactional, either all matching <a href= - "#value_type279018186"><tt>value_type</tt></a>s are - erased, or, if an exception is thrown (for types whose - erase can throw an exception) none); returns the number - of <a href= - "#value_type279018186"><tt>value_type</tt></a>s - erased.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - clear - () -</pre> - </td> - - <td> - <p>Clears the container object.</p> - </td> - </tr> - </table> - - <h3><a name="link16" id="link16">Iteration Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="#iterator10418194"><tt>iterator</tt></a> - begin - () -</pre> - </td> - - <td> - <p>Returns an <a href= - "#iterator10418194"><tt>iterator</tt></a> corresponding - to the first <a href= - "#value_type279018186"><tt>value_type</tt></a> in the - container.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a href="#const_iterator98626788"><tt>const_iterator</tt></a> - begin - () <b>const</b> -</pre> - </td> - - <td> - <p>Returns a <a href= - "#const_iterator98626788"><tt>const_iterator</tt></a> - corresponding to the first <a href= - "#value_type279018186"><tt>value_type</tt></a> in the - container.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a href="#iterator10418194"><tt>iterator</tt></a> - end - () -</pre> - </td> - - <td> - <p>Returns an <a href= - "#iterator10418194"><tt>iterator</tt></a> corresponding - to the just-after-last <a href= - "#value_type279018186"><tt>value_type</tt></a> in the - container.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a href="#const_iterator98626788"><tt>const_iterator</tt></a> - end - () <b>const</b> -</pre> - </td> - - <td> - <p>Returns a <a href= - "#const_iterator98626788"><tt>const_iterator</tt></a> - corresponding to the just-after-last <a href= - "#value_type279018186"><tt>value_type</tt></a> in the - container.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/container_cd.png b/libstdc++-v3/doc/html/ext/pb_ds/container_cd.png Binary files differdeleted file mode 100644 index 52553278cac..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/container_cd.png +++ /dev/null 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 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://web.resource.org/cc/" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="11in" - height="8.5in" - id="svg2" - sodipodi:version="0.32" - inkscape:version="0.43" - version="1.0" - sodipodi:docbase="/mnt/share/src/policy_based_data_structures/current/pb_ds/doc" - sodipodi:docname="container_cd.svg" - inkscape:export-filename="/mnt/share/src/policy_based_data_structures/current/pb_ds/doc/container_cd.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> - <defs - id="defs4"> - <marker - inkscape:stockid="Arrow1Mstart" - orient="auto" - refY="0.0" - refX="0.0" - id="Arrow1Mstart" - style="overflow:visible"> - <path - id="path3311" - d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " - style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none" - transform="scale(0.4)" /> - </marker> - <marker - inkscape:stockid="Arrow2Sstart" - orient="auto" - refY="0" - refX="0" - id="Arrow2Sstart" - style="overflow:visible"> - <path - id="path3319" - style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " - transform="matrix(0.3,0,0,0.3,-1.5,0)" /> - </marker> - <marker - inkscape:stockid="Arrow1Sstart" - orient="auto" - refY="0" - refX="0" - id="Arrow1Sstart" - style="overflow:visible"> - <path - id="path3337" - d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z " - style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" - transform="scale(0.2,0.2)" /> - </marker> - <marker - inkscape:stockid="Arrow2Send" - orient="auto" - refY="0" - refX="0" - id="Arrow2Send" - style="overflow:visible"> - <path - id="path3316" - style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " - transform="matrix(-0.3,0,0,-0.3,1.5,0)" /> - </marker> - <marker - inkscape:stockid="Arrow2Mend" - orient="auto" - refY="0" - refX="0" - id="Arrow2Mend" - style="overflow:visible"> - <path - id="path3322" - style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " - transform="matrix(-0.6,0,0,-0.6,3,0)" /> - </marker> - <marker - inkscape:stockid="Arrow1Lend" - orient="auto" - refY="0" - refX="0" - id="Arrow1Lend" - style="overflow:visible"> - <path - id="path3346" - d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z " - style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" - transform="scale(-0.8,-0.8)" /> - </marker> - <marker - inkscape:stockid="Arrow2Lstart" - orient="auto" - refY="0" - refX="0" - id="Arrow2Lstart" - style="overflow:visible"> - <path - id="path3331" - style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " - transform="matrix(1.1,0,0,1.1,-5.5,0)" /> - </marker> - <marker - inkscape:stockid="Arrow2Lend" - orient="auto" - refY="0" - refX="0" - id="Arrow2Lend" - style="overflow:visible"> - <path - id="path3328" - style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " - transform="matrix(-1.1,0,0,-1.1,5.5,0)" /> - </marker> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="2" - inkscape:cx="396.81316" - inkscape:cy="280" - inkscape:document-units="in" - inkscape:current-layer="layer1" - showguides="true" - inkscape:guide-bbox="true" - inkscape:window-width="1278" - inkscape:window-height="973" - inkscape:window-x="0" - inkscape:window-y="0" - gridtolerance="0.125in" - guidetolerance="0.125in"> - <sodipodi:guide - orientation="horizontal" - position="629" - id="guide1307" /> - <sodipodi:guide - orientation="horizontal" - position="449" - id="guide1309" /> - <sodipodi:guide - orientation="horizontal" - position="269" - id="guide1311" /> - <sodipodi:guide - orientation="vertical" - position="496" - id="guide1313" /> - <sodipodi:guide - orientation="vertical" - position="361" - id="guide1315" /> - <sodipodi:guide - orientation="vertical" - position="226" - id="guide1317" /> - <sodipodi:guide - orientation="vertical" - position="631" - id="guide1319" /> - <sodipodi:guide - orientation="vertical" - position="766" - id="guide1321" /> - <sodipodi:guide - orientation="vertical" - position="91" - id="guide1345" /> - <sodipodi:guide - orientation="vertical" - position="901" - id="guide1347" /> - <sodipodi:guide - orientation="horizontal" - position="539" - id="guide3390" /> - <sodipodi:guide - orientation="horizontal" - position="359" - id="guide3392" /> - <sodipodi:guide - orientation="vertical" - position="280.5" - id="guide3324" /> - <sodipodi:guide - orientation="vertical" - position="172" - id="guide3326" /> - <sodipodi:guide - orientation="vertical" - position="388" - id="guide3328" /> - <sodipodi:guide - orientation="vertical" - position="711.5" - id="guide3340" /> - </sodipodi:namedview> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:creator> - <cc:Agent> - <dc:title>Benjamin Kosnik</dc:title> - </cc:Agent> - </dc:creator> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1"> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - id="rect1425" - width="141.64481" - height="23.200001" - x="209.57762" - y="382.56177" /> - <rect - y="382.56177" - x="425.57761" - height="23.200001" - width="141.64481" - id="rect3376" - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - id="rect3378" - width="141.64481" - height="23.200001" - x="640.77765" - y="382.56177" /> - <text - sodipodi:linespacing="100%" - id="use1329" - y="397.09772" - x="497.20001" - style="font-size:9.60000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" - xml:space="preserve"><tspan - sodipodi:role="line" - id="tspan1703" - x="497.20001" - y="397.09772">list_update</tspan><tspan - sodipodi:role="line" - id="tspan1705" - x="497.20001" - y="406.69772" /></text> - <text - xml:space="preserve" - style="font-size:9.60000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans" - x="712.40002" - y="397.09772" - id="use1337" - sodipodi:linespacing="100%"><tspan - sodipodi:role="line" - id="tspan1707" - x="712.40002" - y="397.09772">basic_hash_table</tspan></text> - <text - xml:space="preserve" - style="font-size:9.60000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" - x="282" - y="397.09772" - id="text1339" - sodipodi:linespacing="100%"><tspan - sodipodi:role="line" - id="tspan1701" - x="282" - y="397.09772">basic_tree</tspan></text> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - id="rect3418" - width="141.64481" - height="23.200001" - x="101.57762" - y="472.5618" /> - <rect - y="472.5618" - x="317.57761" - height="23.200001" - width="141.64481" - id="rect3420" - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - id="rect3422" - width="141.64481" - height="23.200001" - x="533.57764" - y="472.5618" /> - <rect - y="472.5618" - x="748.77765" - height="23.200001" - width="141.64481" - id="rect3424" - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - <text - xml:space="preserve" - style="font-size:9.60000038;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" - x="171.20001" - y="486.29773" - id="text3394" - sodipodi:linespacing="100%"><tspan - sodipodi:role="line" - id="tspan1715" - x="171.20001" - y="486.29773">tree</tspan><tspan - sodipodi:role="line" - id="tspan1717" - x="171.20001" - y="495.89773" /></text> - <text - sodipodi:linespacing="100%" - id="text3400" - y="486.29773" - x="386.39999" - style="font-size:9.60000038;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" - xml:space="preserve"><tspan - sodipodi:role="line" - id="tspan1709" - x="386.39999" - y="486.29773">trie</tspan><tspan - sodipodi:role="line" - id="tspan1711" - x="386.39999" - y="495.89773" /></text> - <text - sodipodi:linespacing="100%" - id="text3406" - y="486.29773" - x="601.20001" - style="font-size:9.60000038px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans" - xml:space="preserve"><tspan - sodipodi:role="line" - id="tspan1713" - x="601.20001" - y="486.29773">cc_hash_table</tspan></text> - <text - xml:space="preserve" - style="font-size:9.60000038;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans" - x="818" - y="486.29773" - id="text3412" - sodipodi:linespacing="100%"><tspan - sodipodi:role="line" - id="tspan1719" - x="818" - y="486.29773">gp_hash_table</tspan></text> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - id="rect3380" - width="141.64481" - height="23.200001" - x="425.57764" - y="292.56177" /> - <text - xml:space="preserve" - style="font-size:9.60000038;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans" - x="497.20001" - y="307.09772" - id="text1323" - sodipodi:linespacing="100%" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90" - inkscape:export-filename="/mnt/share/src/policy_based_data_structures/pb_ds_images/container_diagram.png"><tspan - sodipodi:role="line" - id="tspan1369" - x="497.20001" - y="307.09772">container_base</tspan></text> - <path - style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.97031623px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - d="M 170.97058,472.5 L 170.97058,451 L 387.51871,450 L 387.51871,472.5" - id="path2244" /> - <path - style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="M 280.5,450.53297 L 280.5,410.62445" - id="path3332" /> - <path - id="path3353" - d="M 601.47058,472.5 L 601.47058,451 L 818.01871,450 L 818.01871,472.5" - style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.97031623px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> - <path - id="path3355" - d="M 711,450.53297 L 711,410.62445" - style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - <path - id="path3344" - d="M 281.18218,383.28102 L 281.18218,361.78102 L 711.79281,360.78102 L 711.79281,383.28102" - style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.3682909px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> - <path - id="path3347" - d="M 497.75146,383.49616 L 497.75146,322.77107" - style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - </g> -</svg> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/container_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/container_tag.html deleted file mode 100644 index de187a94dab..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/container_tag.html +++ /dev/null @@ -1,24 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>container _tag Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>container _tag</tt> Interface</h1> - - <p>Basic data structure tag.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/counter_lu_policy.html b/libstdc++-v3/doc/html/ext/pb_ds/counter_lu_policy.html 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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>counter_lu_policy Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>counter_lu_policy</tt> Interface</h1> - - <p>A list-update policy that moves elements to the front of the - list based on the counter algorithm.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/list_update_policy.hpp"><tt>list_update_policy.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Template Parameters</a></h2> - - <table class="c1" width="100%" border="1" summary= - "Template Parameters"> - <tr> - <td width="20%" align="left"><b>Parameter</b></td> - - <td width="50%" align="left"><b>Description</b></td> - - <td width="30%" align="left"><b>Default Value</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="Max_Count39887466" id= -"Max_Count39887466">size_t Max_Count </a> -</pre> - </td> - - <td> - <p>Maximum count.</p> - - <p>When some element is accessed this number of times, it - will be moved to the front of the list.</p> - </td> - - <td>5</td> - </tr> - - <tr> - <td> - <pre> -<a name="Allocator35940069" id= -"Allocator35940069"><b>class</b> Allocator </a> -</pre> - </td> - - <td> - <p>Allocator type.</p> - - <p>This is used only for definitions, e.g., the size - type.</p> - </td> - - <td> - <pre> -std::allocator<<b>char</b>> -</pre> - </td> - </tr> - </table> - - <h2><a name="link2" id="link2">Public Types and - Constants</a></h2> - - <h3><a name="link3" id="link3">Policy Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="allocator48440069" id="allocator48440069">allocator</a> -</pre> - </td> - - <td> - <pre> -<a href="#Allocator35940069"><tt>Allocator</tt></a> -</pre> - </td> - - <td> - <p><a href="#Allocator35940069"><tt>Allocator</tt></a> - type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="max_count52407466" id="max_count52407466">max_count</a> -</pre> - </td> - - <td> - <pre> -<a href="#Max_Count39887466"><tt>Max_Count</tt></a> -} -</pre> - </td> - - <td> - <p>Maximum count.</p> - </td> - </tr> - </table> - - <h3><a name="link4" id="link4">General Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="size_type55424436" id="size_type55424436">size_type</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#allocator48440069"><tt>allocator</tt></a>::size_type -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - </tr> - </table> - - <h3><a name="link5" id="link5">Metadata-Type - Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="metadata_type2849297114" id= -"metadata_type2849297114">metadata_type</a> -</pre> - </td> - - <td> - <pre> -Some class containing a counter. -</pre> - </td> - - <td> - <p>Metadata on which this functor operates.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="metadata_reference583863863" id= -"metadata_reference583863863">metadata_reference</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#Allocator35940069"><tt>Allocator</tt></a>::<b>template</b> rebind< - <a href= -"#metadata_type2849297114"><tt>metadata_type</tt></a>>::other::reference -</pre> - </td> - - <td> - <p>Reference to metadata on which this functor - operates.</p> - </td> - </tr> - </table> - - <h2><a name="link6" id="link6">Public Methods</a></h2> - - <h3><a name="link7" id="link7">Metadata Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="#metadata_type2849297114"><tt>metadata_type</tt></a> - <b>operator</b>() - () <b>const</b> -</pre> - </td> - - <td> - <p>Creates a metadata object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>bool</b> - <b>operator</b>() - (<a href= -"#metadata_reference583863863"><tt>metadata_reference</tt></a> r_metadata) <b>const</b> -</pre> - </td> - - <td> - <p>Decides whether a metadata object should be moved to - the front of the list.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/design.html b/libstdc++-v3/doc/html/ext/pb_ds/design.html deleted file mode 100644 index e83bd4dd20a..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/design.html +++ /dev/null @@ -1,96 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>Design</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1>Design</h1> - - <p>The <tt>pb_ds</tt> namespace contains:</p> - - <ol> - <li>Exception classes (see <a href= - "interface.html#exceptions_common">Interface::Exceptions::Common</a>)</li> - - <li>Invalidation-guarantee tags (see <a href= - "ds_gen.html#inv_guar">Design::Invalidation Guarantees</a> - and <a href= - "interface.html#ds_inv_tag">Interface::Data-Structure Tags - and Traits::Invalidation-Guarantee Tags</a>).</li> - - <li>Associative Containers (see <a href= - "tree_based_containers.html">Design::Associative - Containers::Tree-Based Containers</a>, <a href= - "trie_based_containers.html">Design::Associative - Containers::Trie-Based Containers</a>, <a href= - "hash_based_containers.html">Design::Associative - Containers::Hash-Based Containers</a>, and <a href= - "lu_based_containers.html">Design::Associative - Containers::List-Based Containers</a>, and <a href= - "interface.html#containers_assoc">Interface::Containers::Associative - Containers</a>).</li> - - <li>Associative Container tags and traits - (see <a href="ds_gen.html">Design::Associative - Containers::Data-Structure Genericity</a>, <a href= - "interface.html#ds_ts_assoc">Interface::Data-Structure Tags - and Traits::Data-Structure Tags::Associative-Containers</a>, - and <a href= - "interface.html#container_traits">Interface::Data-Structure Tags and - Traits::Data-Structure - Traits::Associative-Containers</a>).</li> - - <li>Associative Container policies (see - <a href="tree_based_containers.html">Design::Associative - Containers::Tree-Based Containers</a>, <a href= - "trie_based_containers.html">Design::Associative - Containers::Trie-Based Containers</a>, <a href= - "hash_based_containers.html">Design::Associative - Containers::Hash-Based Containers</a>, and <a href= - "lu_based_containers.html">Design::Associative - Containers::List-Based Containers</a>, and <a href= - "interface.html#ds_policy_classes">Interface::Container - Policy Classes</a>).</li> - - - <li>Mapped types for setting the mapping semantics of - associative containers (see <a href= - "tutorial.html#assoc_ms">Tutorial::Associative - Containers::Associative Containers Others than Maps</a> and - <a href="interface.html#ds_pol">Interface::Mapped-Type - Policies</a>).</li> - - - <li>Priority Queues (see <a href="pq_design.html">Design::Priority - Queues</a> and <a href= - "interface.html#containers_pq">Interface::Containers::Priority - Queues</a>).</li> - - <li>Priority Queue tags and traits - (see <a href="pq_design.html#pq_traits">Design::Priority - Queues::Traits</a>, <a href= - "interface.html#ds_ts_pq">Interface::Data-Structure Tags and - Traits::Data-Structure Tags::Priority Queues</a>, and - <a href="interface.html#container_traits">Interface::Data-Structure - Tags and Traits::Data-Structure Traits::Priority - Queues</a>).</li> - </ol> - - - <p><a href="assoc_design.html">Associative-Container Design</a> - describes associative-container design.</p> - - <p><a href="pq_design.html">Priority-Queue Design</a> describes - priority-queue design.</p> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>direct_mask_range_hashing Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>direct_mask_range_hashing</tt> Interface</h1> - - <p>A mask range-hashing class (uses a bit-mask).</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/hash_policy.hpp"><tt>hash_policy.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Template Parameters</a></h2> - - <table class="c1" width="100%" border="1" summary= - "Template Parameters"> - <tr> - <td width="20%" align="left"><b>Parameter</b></td> - - <td width="50%" align="left"><b>Description</b></td> - - <td width="30%" align="left"><b>Default Value</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="Size_Type42920436" id= -"Size_Type42920436"><b>typename</b> Size_Type </a> -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - - <td>size_t</td> - </tr> - </table> - - <h2><a name="link2" id="link2">Public Types and - Constants</a></h2> - - <h3><a name="link3" id="link3">General Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="size_type55424436" id="size_type55424436">size_type</a> -</pre> - </td> - - <td> - <pre> -<a href="#Size_Type42920436"><tt>Size_Type</tt></a> -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - </tr> - </table> - - <h2><a name="link4" id="link4">Public Methods</a></h2> - - <h3><a name="link5" id="link5">Constructors, Destructor, and - Related</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - swap - (<span class= -"c2"><tt>direct_mask_range_hashing</tt></span> &other) -</pre> - </td> - - <td> - <p>Swaps content.</p> - </td> - </tr> - </table> - - <h2><a name="link6" id="link6">Protected Methods</a></h2> - - <h3><a name="link7" id="link7">Notification Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - notify_resized - (<a href="#size_type55424436"><tt>size_type</tt></a> size) -</pre> - </td> - - <td> - <p>Notifies the policy object that the container's size - has changed to <span class="c1"><tt>size</tt></span>.</p> - </td> - </tr> - </table> - - <h3><a name="link8" id="link8">Operators.</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a> - <b>operator</b>() - (<a href= -"#size_type55424436"><tt>size_type</tt></a> hash) <b>const</b> -</pre> - </td> - - <td> - <p>Transforms the hash value <span class= - "c1"><tt>hash</tt></span> into a ranged-hash value (using - a bit-mask).</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/direct_mod_range_hashing.html b/libstdc++-v3/doc/html/ext/pb_ds/direct_mod_range_hashing.html 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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>direct_mod_range_hashing Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>direct_mod_range_hashing</tt> Interface</h1> - - <p>A mod range-hashing class (uses the modulo function).</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/hash_policy.hpp"><tt>hash_policy.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Template Parameters</a></h2> - - <table class="c1" width="100%" border="1" summary= - "Template Parameters"> - <tr> - <td width="20%" align="left"><b>Parameter</b></td> - - <td width="50%" align="left"><b>Description</b></td> - - <td width="30%" align="left"><b>Default Value</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="Size_Type42920436" id= -"Size_Type42920436"><b>typename</b> Size_Type </a> -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - - <td>size_t</td> - </tr> - </table> - - <h2><a name="link2" id="link2">Public Types and - Constants</a></h2> - - <h3><a name="link3" id="link3">General Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="size_type55424436" id="size_type55424436">size_type</a> -</pre> - </td> - - <td> - <pre> -<a href="#Size_Type42920436"><tt>Size_Type</tt></a> -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - </tr> - </table> - - <h2><a name="link4" id="link4">Public Methods</a></h2> - - <h3><a name="link5" id="link5">Constructors, Destructor, and - Related</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - swap - (<span class= -"c2"><tt>direct_mod_range_hashing</tt></span> &other) -</pre> - </td> - - <td> - <p>Swaps content.</p> - </td> - </tr> - </table> - - <h2><a name="link6" id="link6">Protected Methods</a></h2> - - <h3><a name="link7" id="link7">Notification Methods</a></h3> - - <h3><a name="link8" id="link8">Operators.</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a> - <b>operator</b>() - (<a href= -"#size_type55424436"><tt>size_type</tt></a> hash) <b>const</b> -</pre> - </td> - - <td> - <p>Transforms the hash value <span class= - "c1"><tt>hash</tt></span> into a ranged-hash value (using - a modulo operation).</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/disclaimer.html b/libstdc++-v3/doc/html/ext/pb_ds/disclaimer.html deleted file mode 100644 index 681af4edf72..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/disclaimer.html +++ /dev/null @@ -1,34 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>What, me worry?</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h2>Disclaimer and Copyright</h2> - - <p>Revised 16 February, 2004</p>© Copyright Ami Tavory and - Vladimir Dreizin, IBM-HRL, 2004, and Benjamin Kosnik, Red Hat, - 2004. - - <p>Permission to use, copy, modify, sell, and distribute this - software is hereby granted without fee, provided that the above - copyright notice appears in all copies, and that both that - copyright notice and this permission notice appear in - supporting documentation.</p> - - <p>None of the above authors, nor IBM Haifa Research - Laboratories, Red Hat, or both, make any representation about - the suitability of this software for any purpose. It is - provided "as is" without express or implied warranty.</p> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/ds_gen.html b/libstdc++-v3/doc/html/ext/pb_ds/ds_gen.html deleted file mode 100644 index ec99c4d5f7e..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/ds_gen.html +++ /dev/null @@ -1,344 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>Data-Structure Genericity</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1>Data-Structure Genericity</h1> - - <h2><a name="problem" id="problem">The Basic Problem</a></h2> - - <p>The design attempts to address the following problem. When - writing a function manipulating a generic container object, - what is the behavior of the object? <i>E.g.</i>, suppose one - writes</p> - <pre> -<b>template</b><<b>typename</b> Cntnr> -<b>void</b> -some_op_sequence(Cntnr &r_container) -{ - ... -} -</pre>then one needs to address the following questions in the body -of <tt>some_op_sequence</tt>: - - <ol> - <li>Which types and methods does <tt>Cntnr</tt> support? - Containers based on hash tables can be queries for the - hash-functor type and object; this is meaningless for - tree-based containers. Containers based on trees can be - split, joined, or can erase iterators and return the - following iterator; this cannot be done by hash-based - containers.</li> - - <li>What are the guarantees of <tt>Cntnr</tt>? A container - based on a probing hash-table invalidates all iterators when - it is modified; this is not the case for containers based on - node-based trees. Containers based on a node-based tree can - be split or joined without exceptions; this is not the case - for containers based on vector-based trees.</li> - - <li>How does the container maintain its elements? Tree-based - and Trie-based containers store elements by key order; - others, typically, do not. A container based on a splay trees - or lists with update policies "cache" "frequently accessed" - elements; containers based on most other underlying - data structures do not.</li> - </ol> - - <p>The remainder of this section deals with these issues.</p> - - <h2><a name="ds_hierarchy" id="ds_hierarchy">Container - Hierarchy</a></h2> - - <p>Figure <a href="#cd">Container class hierarchy</a> shows the - container hierarchy.</p> - - <h6 class="c1"><a name="cd" id="cd"><img src="container_cd.png" alt= - "no image" /></a></h6> - - <h6 class="c1">Container class hierarchy.</h6> - - <ol> - <li><a href= - "container_base.html"><tt>container_base</tt></a> is an - abstract base class for associative containers.</li> - - <li>Tree-Like-Based Associative-Containers: - - <ol> - <li><a href= - "basic_tree.html"><tt>basic_tree</tt></a> - is an abstract base class for tree-like-based - associative-containers</li> - - <li><a href= - "tree.html"><tt>tree</tt></a> - is a concrete base class for tree-based - associative-containers</li> - - <li><a href= - "trie.html"><tt>trie</tt></a> - is a concrete base class trie-based - associative-containers</li> - </ol> - </li> - - <li>Hash-Based Associative-Containers: - - <ol> - <li><a href= - "basic_hash_table.html"><tt>basic_hash_table</tt></a> - is an abstract base class for hash-based - associative-containers</li> - - <li><a href= - "cc_hash_table.html"><tt>cc_hash_table</tt></a> - is a concrete collision-chaining hash-based - associative-containers</li> - - <li><a href= - "gp_hash_table.html"><tt>gp_hash_table</tt></a> - is a concrete (general) probing hash-based - associative-containers</li> - </ol> - </li> - - <li>List-Based Associative-Containers: - - <ol> - <li><a href= - "list_update.html"><tt>list_update</tt></a> - - list-based update-policy associative container</li> - </ol> - </li> - </ol> - - <p>The hierarchy is composed naturally so that commonality is - captured by base classes. Thus <tt><b>operator[]</b></tt> is - defined <a href= - "container_base.html"><tt>container_base</tt></a>, since - all containers support it. Conversely <tt>split</tt> is defined - in <a href= - "basic_tree.html"><tt>basic_tree</tt></a>, - since only tree-like containers support it. <a href= - "#container_traits">Data-Structure Tags and Traits</a> discusses how - to query which types and methods each container supports.</p> - - <h2><a name="container_traits" id="container_traits">Data-Structure Tags and - Traits</a></h2> - - <p>Tags and traits are very useful for manipulating generic - types. For example, if <tt>It</tt> is an iterator class, then - <tt><b>typename</b> It::iterator_category</tt> or - <tt><b>typename</b> - std::iterator_traits<It>::iterator_category</tt> will - yield its category, and <tt><b>typename</b> - std::iterator_traits<It>::value_type</tt> will yield its - value type.</p> - - <p><tt>pb_ds</tt> contains a tag hierarchy corresponding to the - hierarchy in Figure <a href="#cd">Class hierarchy</a>. The tag - hierarchy is shown in Figure <a href= - "#tag_cd">Data-structure tag class hierarchy</a>.</p> - - <h6 class="c1"><a name="tag_cd" id="tag_cd"><img src= - "assoc_container_tag_cd.png" alt="no image" /></a></h6> - - <h6 class="c1">Data-structure tag class hierarchy.</h6> - - <p><a href= - "container_base.html"><tt>container_base</tt></a> - publicly defines <tt>container_category</tt> as one of the classes in - Figure <a href="#tag_cd">Data-structure tag class - hierarchy</a>. Given any container <tt>Cntnr</tt>, the tag of - the underlying data structure can be found via - <tt><b>typename</b> Cntnr::container_category</tt>.</p> - - <p>Additionally, a traits mechanism can be used to query a - container type for its attributes. Given any container - <tt>Cntnr</tt>, then <tt><a href= - "assoc_container_traits.html">__gnu_pbds::container_traits</a><Cntnr></tt> - is a traits class identifying the properties of the - container.</p> - - <p>To find if a container can throw when a key is erased (which - is true for vector-based trees, for example), one can - use</p><a href= - "assoc_container_traits.html"><tt>container_traits</tt></a><tt><Cntnr>::erase_can_throw</tt>, - for example. - - <p>Some of the definitions in <a href= - "assoc_container_traits.html"><tt>container_traits</tt></a> are - dependent on other definitions. <i>E.g.</i>, if <a href= - "assoc_container_traits.html"><tt>container_traits</tt></a><tt><Cntnr>::order_preserving</tt> - is <tt><b>true</b></tt> (which is the case for containers based - on trees and tries), then the container can be split or joined; - in this case, <a href= - "assoc_container_traits.html"><tt>container_traits</tt></a><tt><Cntnr>::split_join_can_throw</tt> - indicates whether splits or joins can throw exceptions (which - is true for vector-based trees); otherwise <a href= - "assoc_container_traits.html"><tt>container_traits</tt></a><tt><Cntnr>::split_join_can_throw</tt> - will yield a compilation error. (This is somewhat similar to a - compile-time version of the COM model [<a href= - "references.html#mscom">mscom</a>]).</p> - - <h2><a name="find_range" id="find_range">Point-Type and - Range-Type Methods and Iterators</a></h2> - - <h3><a name="it_unordered" id="it_unordered">Iterators in - Unordered Container Types</a></h3> - - <p><tt>pb_ds</tt> differentiates between two types of methods - and iterators: point-type methods and iterators, and range-type - methods and iterators (see <a href= - "motivation.html#assoc_diff_it">Motivation::Associative - Containers::Differentiating between Iterator Types</a> and - <a href="tutorial.html#assoc_find_range">Tutorial::Associative - Containers::Point-Type and Range-Type Methods and - Iterators</a>). Each associative container's interface includes - the methods:</p> - <pre> -const_point_iterator -find(const_key_reference r_key) const; - -point_iterator -find(const_key_reference r_key); - -std::pair<point_iterator,<b>bool</b>> -insert(const_reference r_val); -</pre> - - <p>The relationship between these iterator types varies between - container types. Figure <a href= - "#point_iterators_cd">Point-type and range-type iterators</a>-A - shows the most general invariant between point-type and - range-type iterators: <tt>iterator</tt>, <i>e.g.</i>, can - always be converted to <tt>point_iterator</tt>. Figure <a href= - "#point_iterators_cd">Point-type and range-type iterators</a>-B - shows invariants for order-preserving containers: point-type - iterators are synonymous with range-type iterators. - Orthogonally, Figure <a href="#point_iterators_cd">Point-type - and range-type iterators</a>-C shows invariants for "set" - containers: iterators are synonymous with const iterators.</p> - - <h6 class="c1"><a name="point_iterators_cd" id= - "point_iterators_cd"><img src="point_iterators_cd.png" alt= - "no image" /></a></h6> - - <h6 class="c1">Point-type and range-type iterators.</h6> - - <p>Note that point-type iterators in self-organizing containers - (<i>e.g.</i>, hash-based associative containers) lack movement - operators, such as <tt><b>operator++</b></tt> - in fact, this - is the reason why <tt>pb_ds</tt> differentiates from the STL's - design on this point.</p> - - <p>Typically, one can determine an iterator's movement - capabilities in the STL using - <tt>std::iterator_traits<It>iterator_category</tt>, which - is a <tt><b>struct</b></tt> indicating the iterator's movement - capabilities. Unfortunately, none of the STL's predefined - categories reflect a pointer's <u>not</u> having any movement - capabilities whatsoever. Consequently, <tt>pb_ds</tt> adds a - type <a href= - "trivial_iterator_tag.html"><tt>trivial_iterator_tag</tt></a> - (whose name is taken from a concept in [<a href= - "references.html#sgi_stl">sgi_stl</a>]), which is the category - of iterators with no movement capabilities. All other STL tags, - such as <tt>forward_iterator_tag</tt> retain their common - use.</p> - - <h3><a name="inv_guar" id="inv_guar">Invalidation - Guarantees</a></h3> - - <p><a href= - "motivation.html#assoc_inv_guar">Motivation::Associative - Containers::Differentiating between Iterator - Types::Invalidation Guarantees</a> posed a problem. Given three - different types of associative containers, a modifying - operation (in that example, <tt>erase</tt>) invalidated - iterators in three different ways: the iterator of one - container remained completely valid - it could be de-referenced - and incremented; the iterator of a different container could - not even be de-referenced; the iterator of the third container - could be de-referenced, but its "next" iterator changed - unpredictably.</p> - - <p>Distinguishing between find and range types allows - fine-grained invalidation guarantees, because these questions - correspond exactly to the question of whether point-type - iterators and range-type iterators are valid. <a href= - "#invalidation_guarantee_cd">Invalidation guarantees class - hierarchy</a> shows tags corresponding to different types of - invalidation guarantees.</p> - - <h6 class="c1"><a name="invalidation_guarantee_cd" id= - "invalidation_guarantee_cd"><img src= - "invalidation_guarantee_cd.png" alt="no image" /></a></h6> - - <h6 class="c1">Invalidation guarantees class hierarchy.</h6> - - <ol> - <li><a href= - "basic_invalidation_guarantee.html"><tt>basic_invalidation_guarantee</tt></a> - corresponds to a basic guarantee that a point-type iterator, - a found pointer, or a found reference, remains valid as long - as the container object is not modified.</li> - - <li><a href= - "point_invalidation_guarantee.html"><tt>point_invalidation_guarantee</tt></a> - corresponds to a guarantee that a point-type iterator, a - found pointer, or a found reference, remains valid even if - the container object is modified.</li> - - <li><a href= - "range_invalidation_guarantee.html"><tt>range_invalidation_guarantee</tt></a> - corresponds to a guarantee that a range-type iterator remains - valid even if the container object is modified.</li> - </ol> - - <p>As shown in <a href= - "tutorial.html#assoc_find_range">Tutorial::Associative - Containers::Point-Type and Range-Type Methods and - Iterators</a>, to find the invalidation guarantee of a - container, one can use</p> - <pre> -<b>typename</b> <a href= -"assoc_container_traits.html">container_traits</a><Cntnr>::invalidation_guarantee -</pre> - - <p>which is one of the classes in Figure <a href= - "#invalidation_guarantee_cd">Invalidation guarantees class - hierarchy</a>.</p> - - <p>Note that this hierarchy corresponds to the logic it - represents: if a container has range-invalidation guarantees, - then it must also have find invalidation guarantees; - correspondingly, its invalidation guarantee (in this case - <a href= - "range_invalidation_guarantee.html"><tt>range_invalidation_guarantee</tt></a>) - can be cast to its base class (in this case <a href= - "point_invalidation_guarantee.html"><tt>point_invalidation_guarantee</tt></a>). - This means that this this hierarchy can be used easily using - standard metaprogramming techniques, by specializing on the - type of <tt>invalidation_guarantee</tt>.</p> - - <p>(These types of problems were addressed, in a more general - setting, in [<a href= - "references.html#meyers96more">meyers96more</a>] - Item 2. In - our opinion, an invalidation-guarantee hierarchy would solve - these problems in all container types - not just associative - containers.)</p> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>Examples</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1>Examples</h1> - - <p><a href="assoc_examples.html">Associative-Container - Examples</a> shows examples for associative containers; - <a href="pq_examples.html">Priority-Queue Examples</a> shows - examples for priority queues.</p> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/exceptions.html b/libstdc++-v3/doc/html/ext/pb_ds/exceptions.html deleted file mode 100644 index a51e8ebe0b0..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/exceptions.html +++ /dev/null @@ -1,46 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - -<title>container_error Interface</title> -<meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> -</head> - -<body> -<div id="page"> -<h1><tt>container_error</tt> Interface</h1> - -<p>Base class for associative-container exceptions.</p> - -<p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/exception.hpp"><tt>exception.hpp</tt></a></p> - -<h2><a name="link1" id="link1">Base Classes</a></h2> - -<table class="c1" width="100%" border="1" summary="Bases"> -<tr> -<td width="80%" align="left"><b>Class</b></td> - -<td width="20%" align="left"><b>Derivation Type</b></td> -</tr> - -<tr> -<td> -<pre> -std::logic_error -</pre> -</td> - -<td> -<p>public</p> -</td> -</tr> -</table> -</div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_find_timing_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_find_timing_test_gcc.png Binary files differdeleted file mode 100644 index d86299b7e3e..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_find_timing_test_gcc.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 299737dd6fc..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_find_timing_test_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_find_timing_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_find_timing_test_msvc.png Binary files differdeleted file mode 100644 index b7082f28605..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_find_timing_test_msvc.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index b9fbe00deff..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_find_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_find_local.png b/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_find_local.png Binary files differdeleted file mode 100644 index 7e4d7fadc62..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_find_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_find_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_find_msvc.png Binary files differdeleted file mode 100644 index 248ff6b8872..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_find_msvc.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index ac4f838fe26..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_insert_gcc.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 587ff1d145c..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_insert_local.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 5f1d740b817..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_insert_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_table.html b/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_table.html deleted file mode 100644 index dd9d725d3b9..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_table.html +++ /dev/null @@ -1,891 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>gp_hash_table Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>gp_hash_table</tt> Interface</h1> - - <p>A concrete general-probing hash-based associative - container.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/assoc_container.hpp"><tt>assoc_container.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Template Parameters</a></h2> - - <table class="c1" width="100%" border="1" summary= - "Template Parameters"> - <tr> - <td width="20%" align="left"><b>Parameter</b></td> - - <td width="50%" align="left"><b>Description</b></td> - - <td width="30%" align="left"><b>Default Value</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="Key2501" id="Key2501"><b>typename</b> Key</a> -</pre> - </td> - - <td> - <p>Key type.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Mapped318655" id="Mapped318655"><b>typename</b> Mapped</a> -</pre> - </td> - - <td> - <p>Mapped type.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Hash_Fn1515835" id= -"Hash_Fn1515835"><b>class</b> Hash_Fn </a> -</pre> - </td> - - <td> - <p>Hash functor.</p> - </td> - - <td> - <pre> -__gnu_cxx::hash<<a href="#Key2501"><tt>Key</tt></a>> -</pre>if using gcc; - <pre> -stdext::hash_value<<a href="#Key2501"><tt>Key</tt></a>> -</pre>if using Visual C++ .net - </td> - </tr> - - <tr> - <td> - <pre> -<a name="Eq_Fn60085" id="Eq_Fn60085"><b>class</b> Eq_Fn </a> -</pre> - </td> - - <td> - <p>Equivalence functor.</p> - </td> - - <td> - <pre> -std::equal_to<<a href="#Key2501"><tt>Key</tt></a>> -</pre> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="Comb_Probe_Fn1603930855" id= -"Comb_Probe_Fn1603930855"><b>class</b> Comb_Probe_Fn </a> -</pre> - </td> - - <td> - <p>Combining probe functor.</p> - - <p>If <a href="#Hash_Fn1515835"><tt>Hash_Fn</tt></a> is - <a href="null_hash_fn.html"><span class= - "c2"><tt>null_hash_fn</tt></span></a>, and <a href= - "#Probe_Fn8454835"><tt>Probe_Fn</tt></a> is <a href= - "null_probe_fn.html"><span class= - "c2"><tt>null_probe_fn</tt></span></a>, then this is the - ranged-probe functor; otherwise, this is the - range-hashing functor.</p> - - <p>(See <a href= - "hash_based_containers.html#hash_policies">Design::Hash-Based - Containers::Hash Policies</a>.)</p> - </td> - - <td><a href="direct_mask_range_hashing.html"><span class= - "c2"><tt>direct_mask_range_hashing</tt></span></a></td> - </tr> - - <tr> - <td> - <pre> -<a name="Probe_Fn8454835" id= -"Probe_Fn8454835"><b>class</b> Probe_Fn </a> -</pre> - </td> - - <td> - <p>Probe functor.</p> - </td> - - <td> - If <tt><a href= - "#Comb_Probe_Fn1603930855"><tt>Comb_Probe_Fn</tt></a></tt> - is <a href="direct_mask_range_hashing.html"><span class= - "c2"><tt>direct_mask_range_hashing</tt></span></a>, then - <pre> -<a href="linear_probe_fn.html"><span class= -"c2"><tt>linear_probe_fn</tt></span></a>< - <b>typename</b> <a href= -"#Comb_Probe_Fn1603930855"><tt>Comb_Probe_Fn</tt></a>::size_type> -</pre>otherwise, - <pre> -<a href="quadratic_probe_fn.html"><span class= -"c2"><tt>quadratic_probe_fn</tt></span></a>< - <b>typename</b> <a href= -"#Comb_Probe_Fn1603930855"><tt>Comb_Probe_Fn</tt></a>::size_type> -</pre> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="Resize_Policy566860465" id= -"Resize_Policy566860465"><b>class</b> Resize_Policy </a> -</pre> - </td> - - <td> - <p>Resize policy.</p> - </td> - - <td> - If <tt><a href= - "#Comb_Probe_Fn1603930855"><tt>Comb_Probe_Fn</tt></a></tt> - is <tt><a href= - "direct_mask_range_hashing.html"><span class= - "c2"><tt>direct_mask_range_hashing</tt></span></a></tt>, - then - <pre> -<a href="hash_standard_resize_policy.html"><span class= -"c2"><tt>hash_standard_resize_policy</tt></span></a>< - <a href="hash_exponential_size_policy.html"><span class= -"c2"><tt>hash_exponential_size_policy</tt></span></a>< - <b>typename</b> <a href= -"#Comb_Probe_Fn1603930855"><tt>Comb_Probe_Fn</tt></a>::size_type>, - <a href="hash_load_check_resize_trigger.html"><span class= -"c2"><tt>hash_load_check_resize_trigger</tt></span></a>< - <b>typename</b> <a href= -"#Comb_Probe_Fn1603930855"><tt>Comb_Probe_Fn</tt></a>::size_type>, - <b>false</b>, - <b>typename</b> <a href= -"#Comb_Probe_Fn1603930855"><tt>Comb_Probe_Fn</tt></a>::size_type> -</pre>otherwise, - <pre> -<a href="hash_standard_resize_policy.html"><span class= -"c2"><tt>hash_standard_resize_policy</tt></span></a>< - <a href="hash_exponential_size_policy.html"><span class= -"c2"><tt>hash_exponential_size_policy</tt></span></a>< - <b>typename</b> <a href= -"#Comb_Probe_Fn1603930855"><tt>Comb_Probe_Fn</tt></a>::size_type>, - <a href="hash_load_check_resize_trigger.html"><span class= -"c2"><tt>hash_load_check_resize_trigger</tt></span></a>< - <b>typename</b> <a href= -"#Comb_Probe_Fn1603930855"><tt>Comb_Probe_Fn</tt></a>::size_type>, - <b>false</b>, - <b>typename</b> <a href= -"#Comb_Probe_Fn1603930855"><tt>Comb_Probe_Fn</tt></a>::size_type> -</pre> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="Store_Hash218262104" id= -"Store_Hash218262104"><b>bool</b> Store_Hash </a> -</pre> - </td> - - <td> - <p>Indicates whether the hash value will be stored along - with each key.</p> - - <p>If <tt><a href= - "#hash_fn2015995"><tt>hash_fn</tt></a></tt> is <a href= - "null_hash_fn.html"><span class= - "c2"><tt>null_hash_fn</tt></span></a>, then the container - will not compile if this value is - <tt><b>true</b></tt></p> - </td> - - <td> - <pre> -<tt><b>false</b></tt> -</pre> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="Allocator35940069" id= -"Allocator35940069"><b>class</b> Allocator </a> -</pre> - </td> - - <td> - <p>Allocator type.</p> - </td> - - <td> - <pre> -std::allocator<<b>char</b>> -</pre> - </td> - </tr> - </table> - - <h2><a name="link2" id="link2">Base Classes</a></h2> - - <table class="c1" width="100%" border="1" summary="Bases"> - <tr> - <td width="80%" align="left"><b>Class</b></td> - - <td width="20%" align="left"><b>Derivation Type</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="basic_hash_table.html"><span class= -"c2"><tt>basic_hash_table</tt></span></a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - </table> - - <h2><a name="link3" id="link3">Public Types and - Constants</a></h2> - - <h3><a name="link4" id="link4">Policy Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="hash_fn2015995" id="hash_fn2015995">hash_fn</a> -</pre> - </td> - - <td> - <pre> -<a href="#Hash_Fn1515835"><tt>Hash_Fn</tt></a> -</pre> - </td> - - <td> - <p>Hash functor type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="eq_fn80245" id="eq_fn80245">eq_fn</a> -</pre> - </td> - - <td> - <pre> -<a href="#Eq_Fn60085"><tt>Eq_Fn</tt></a> -</pre> - </td> - - <td> - <p>Equivalence functor type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="comb_probe_fn828996423" id= -"comb_probe_fn828996423">comb_probe_fn</a> -</pre> - </td> - - <td> - <pre> -<a href="#Comb_Probe_Fn1603930855"><tt>Comb_Probe_Fn</tt></a> -</pre> - </td> - - <td> - <p>Combining probe functor type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="probe_fn10954995" id="probe_fn10954995">probe_fn</a> -</pre> - </td> - - <td> - <pre> -<a href="#Probe_Fn8454835"><tt>Probe_Fn</tt></a> -</pre> - </td> - - <td> - <p>Probe functor type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="resize_policy4084493169" id= -"resize_policy4084493169">resize_policy</a> -</pre> - </td> - - <td> - <pre> -<a href="#Resize_Policy566860465"><tt>Resize_Policy</tt></a> -</pre> - </td> - - <td> - <p>Resize policy type.</p> - </td> - </tr> - </table> - - <h2><a name="link5" id="link5">Public Methods</a></h2> - - <h3><a name="link6" id="link6">Constructors, Destructor, and - Related</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> - gp_hash_table - () -</pre> - </td> - - <td> - <p>Default constructor.</p> - </td> - </tr> - - <tr> - <td> - <pre> - gp_hash_table - (<b>const</b> <a href= -"#hash_fn2015995"><tt>hash_fn</tt></a> &r_hash_fn) -</pre> - </td> - - <td> - <p>Constructor taking some policy objects. <span class= - "c1"><tt>r_hash_fn</tt></span> will be copied by the - <a href="#hash_fn2015995"><tt>hash_fn</tt></a> object of - the container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> - gp_hash_table - (<b>const</b> <a href= -"#hash_fn2015995"><tt>hash_fn</tt></a> &r_hash_fn, - <b>const</b> <a href= -"#eq_fn80245"><tt>eq_fn</tt></a> &r_eq_fn) -</pre> - </td> - - <td> - <p>Constructor taking some policy objects. <span class= - "c1"><tt>r_hash_fn</tt></span> will be copied by the - <a href="#hash_fn2015995"><tt>hash_fn</tt></a> object of - the container object, and <span class= - "c1"><tt>r_eq_fn</tt></span> will be copied by the - <a href="#eq_fn80245"><tt>eq_fn</tt></a> object of the - container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> - gp_hash_table - (<b>const</b> <a href= -"#hash_fn2015995"><tt>hash_fn</tt></a> &r_hash_fn, - <b>const</b> <a href= -"#eq_fn80245"><tt>eq_fn</tt></a> &r_eq_fn, - <b>const</b> <a href= -"#comb_probe_fn828996423"><tt>comb_probe_fn</tt></a> &r_comb_probe_fn) -</pre> - </td> - - <td> - <p>Constructor taking some policy objects. <span class= - "c1"><tt>r_hash_fn</tt></span> will be copied by the - <a href="#hash_fn2015995"><tt>hash_fn</tt></a> object of - the container object, <span class= - "c1"><tt>r_eq_fn</tt></span> will be copied by the - <a href="#eq_fn80245"><tt>eq_fn</tt></a> object of the - container object, and <span class= - "c1"><tt>r_comb_probe_fn</tt></span> will be copied by - the <a href= - "#comb_probe_fn828996423"><tt>comb_probe_fn</tt></a> - object of the container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> - gp_hash_table - (<b>const</b> <a href= -"#hash_fn2015995"><tt>hash_fn</tt></a> &r_hash_fn, - <b>const</b> <a href= -"#eq_fn80245"><tt>eq_fn</tt></a> &r_eq_fn, - <b>const</b> <a href= -"#comb_probe_fn828996423"><tt>comb_probe_fn</tt></a> &r_comb_probe_fn, - <b>const</b> <a href= -"#probe_fn10954995"><tt>probe_fn</tt></a> &r_probe_fn) -</pre> - </td> - - <td> - <p>Constructor taking some policy objects. <span class= - "c1"><tt>r_hash_fn</tt></span> will be copied by the - <a href="#hash_fn2015995"><tt>hash_fn</tt></a> object of - the container object, <span class= - "c1"><tt>r_eq_fn</tt></span> will be copied by the - <a href="#eq_fn80245"><tt>eq_fn</tt></a> object of the - container object, <span class= - "c1"><tt>r_comb_probe_fn</tt></span> will be copied by - the <a href= - "#comb_probe_fn828996423"><tt>comb_probe_fn</tt></a> - object of the container object, and <span class= - "c1"><tt>r_probe_fn</tt></span> will be copied by the - <a href="#probe_fn10954995"><tt>probe_fn</tt></a> object - of the container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> - gp_hash_table - (<b>const</b> <a href= -"#hash_fn2015995"><tt>hash_fn</tt></a> &r_hash_fn, - <b>const</b> <a href= -"#eq_fn80245"><tt>eq_fn</tt></a> &r_eq_fn, - <b>const</b> <a href= -"#comb_probe_fn828996423"><tt>comb_probe_fn</tt></a> &r_comb_probe_fn, - <b>const</b> <a href= -"#probe_fn10954995"><tt>probe_fn</tt></a> &r_probe_fn, - <b>const</b> <a href= -"#resize_policy4084493169"><tt>resize_policy</tt></a> &r_resize_policy) -</pre> - </td> - - <td> - <p>Constructor taking some policy objects. <span class= - "c1"><tt>r_hash_fn</tt></span> will be copied by the - <a href="#hash_fn2015995"><tt>hash_fn</tt></a> object of - the container object, <span class= - "c1"><tt>r_eq_fn</tt></span> will be copied by the - <a href="#eq_fn80245"><tt>eq_fn</tt></a> object of the - container object, <span class= - "c1"><tt>r_comb_probe_fn</tt></span> will be copied by - the <a href= - "#comb_probe_fn828996423"><tt>comb_probe_fn</tt></a> - object of the container object, <span class= - "c1"><tt>r_probe_fn</tt></span> will be copied by the - <a href="#probe_fn10954995"><tt>probe_fn</tt></a> object - of the container object, and <span class= - "c1"><tt>r_resize_policy</tt></span> will be copied by - the <a href= - "#Resize_Policy566860465"><tt>Resize_Policy</tt></a> - object of the container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>template</b>< - <b>class</b> It> - gp_hash_table - (It first_it, - It last_it) -</pre> - </td> - - <td> - <p>Constructor taking iterators to a range of - value_types. The value_types between <span class= - "c1"><tt>first_it</tt></span> and <span class= - "c1"><tt>last_it</tt></span> will be inserted into the - container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>template</b>< - <b>class</b> It> - gp_hash_table - (It first_it, - It last_it, - <b>const</b> <a href= -"#hash_fn2015995"><tt>hash_fn</tt></a> &r_hash_fn) -</pre> - </td> - - <td> - <p>Constructor taking iterators to a range of value_types - and some policy objects. The value_types between - <span class="c1"><tt>first_it</tt></span> and - <span class="c1"><tt>last_it</tt></span> will be inserted - into the container object. <span class= - "c1"><tt>r_hash_fn</tt></span> will be copied by the - <a href="#hash_fn2015995"><tt>hash_fn</tt></a> object of - the container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>template</b>< - <b>class</b> It> - gp_hash_table - (It first_it, - It last_it, - <b>const</b> <a href= -"#hash_fn2015995"><tt>hash_fn</tt></a> &r_hash_fn, - <b>const</b> <a href= -"#eq_fn80245"><tt>eq_fn</tt></a> &r_eq_fn) -</pre> - </td> - - <td> - <p>Constructor taking iterators to a range of value_types - and some policy objects. The value_types between - <span class="c1"><tt>first_it</tt></span> and - <span class="c1"><tt>last_it</tt></span> will be inserted - into the container object. <span class= - "c1"><tt>r_hash_fn</tt></span> will be copied by the - <a href="#hash_fn2015995"><tt>hash_fn</tt></a> object of - the container object, and <span class= - "c1"><tt>r_eq_fn</tt></span> will be copied by the - <a href="#eq_fn80245"><tt>eq_fn</tt></a> object of the - container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>template</b>< - <b>class</b> It> - gp_hash_table - (It first_it, - It last_it, - <b>const</b> <a href= -"#hash_fn2015995"><tt>hash_fn</tt></a> &r_hash_fn, - <b>const</b> <a href= -"#eq_fn80245"><tt>eq_fn</tt></a> &r_eq_fn, - <b>const</b> <a href= -"#comb_probe_fn828996423"><tt>comb_probe_fn</tt></a> &r_comb_probe_fn) -</pre> - </td> - - <td> - <p>Constructor taking iterators to a range of value_types - and some policy objects. The value_types between - <span class="c1"><tt>first_it</tt></span> and - <span class="c1"><tt>last_it</tt></span> will be inserted - into the container object. <span class= - "c1"><tt>r_hash_fn</tt></span> will be copied by the - <a href="#hash_fn2015995"><tt>hash_fn</tt></a> object of - the container object, <span class= - "c1"><tt>r_eq_fn</tt></span> will be copied by the - <a href="#eq_fn80245"><tt>eq_fn</tt></a> object of the - container object, and <span class= - "c1"><tt>r_comb_probe_fn</tt></span> will be copied by - the <a href= - "#comb_probe_fn828996423"><tt>comb_probe_fn</tt></a> - object of the container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>template</b>< - <b>class</b> It> - gp_hash_table - (It first_it, - It last_it, - <b>const</b> <a href= -"#hash_fn2015995"><tt>hash_fn</tt></a> &r_hash_fn, - <b>const</b> <a href= -"#eq_fn80245"><tt>eq_fn</tt></a> &r_eq_fn, - <b>const</b> <a href= -"#comb_probe_fn828996423"><tt>comb_probe_fn</tt></a> &r_comb_probe_fn, - <b>const</b> <a href= -"#probe_fn10954995"><tt>probe_fn</tt></a> &r_probe_fn) -</pre> - </td> - - <td> - <p>Constructor taking iterators to a range of value_types - and some policy objects. The value_types between - <span class="c1"><tt>first_it</tt></span> and - <span class="c1"><tt>last_it</tt></span> will be inserted - into the container object. <span class= - "c1"><tt>r_hash_fn</tt></span> will be copied by the - <a href="#hash_fn2015995"><tt>hash_fn</tt></a> object of - the container object, <span class= - "c1"><tt>r_eq_fn</tt></span> will be copied by the - <a href="#eq_fn80245"><tt>eq_fn</tt></a> object of the - container object, <span class= - "c1"><tt>r_comb_probe_fn</tt></span> will be copied by - the <a href= - "#comb_probe_fn828996423"><tt>comb_probe_fn</tt></a> - object of the container object, and <span class= - "c1"><tt>r_probe_fn</tt></span> will be copied by the - <a href="#probe_fn10954995"><tt>probe_fn</tt></a> object - of the container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>template</b>< - <b>class</b> It> - gp_hash_table - (It first_it, - It last_it, - <b>const</b> <a href= -"#hash_fn2015995"><tt>hash_fn</tt></a> &r_hash_fn, - <b>const</b> <a href= -"#eq_fn80245"><tt>eq_fn</tt></a> &r_eq_fn, - <b>const</b> <a href= -"#comb_probe_fn828996423"><tt>comb_probe_fn</tt></a> &r_comb_probe_fn, - <b>const</b> <a href= -"#probe_fn10954995"><tt>probe_fn</tt></a> &r_probe_fn, - <b>const</b> <a href= -"#resize_policy4084493169"><tt>resize_policy</tt></a> &r_resize_policy) -</pre> - </td> - - <td> - <p>Constructor taking iterators to a range of value_types - and some policy objects. The value_types between - <span class="c1"><tt>first_it</tt></span> and - <span class="c1"><tt>last_it</tt></span> will be inserted - into the container object. <span class= - "c1"><tt>r_hash_fn</tt></span> will be copied by the - <a href="#hash_fn2015995"><tt>hash_fn</tt></a> object of - the container object, <span class= - "c1"><tt>r_eq_fn</tt></span> will be copied by the - <a href="#eq_fn80245"><tt>eq_fn</tt></a> object of the - container object, <span class= - "c1"><tt>r_comb_probe_fn</tt></span> will be copied by - the <a href= - "#comb_probe_fn828996423"><tt>comb_probe_fn</tt></a> - object of the container object, <span class= - "c1"><tt>r_probe_fn</tt></span> will be copied by the - <a href="#probe_fn10954995"><tt>probe_fn</tt></a> object - of the container object, and <span class= - "c1"><tt>r_resize_policy</tt></span> will be copied by - the <a href= - "#resize_policy4084493169"><tt>resize_policy</tt></a> - object of the container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> - gp_hash_table - (<b>const</b> <span class= -"c2"><tt>gp_hash_table</tt></span> &other) -</pre> - </td> - - <td> - <p>Copy constructor.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> - ~gp_hash_table - () -</pre> - </td> - - <td> - <p>Destructor.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<span class="c2"><tt>gp_hash_table</tt></span> & - <b>operator</b>= - (<b>const</b> <span class= -"c2"><tt>gp_hash_table</tt></span> &other) -</pre> - </td> - - <td> - <p>Assignment operator.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - swap - (<span class= -"c2"><tt>gp_hash_table</tt></span> &other) -</pre> - </td> - - <td> - <p>Swaps content.</p> - </td> - </tr> - </table> - - <h3><a name="link7" id="link7">Policy Access Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="#comb_probe_fn828996423"><tt>comb_probe_fn</tt></a> & - get_comb_probe_fn - () -</pre> - </td> - - <td> - <p>Access to the <a href= - "#comb_probe_fn828996423"><tt>comb_probe_fn</tt></a> - object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>const</b> <a href= -"#comb_probe_fn828996423"><tt>comb_probe_fn</tt></a> & - get_comb_probe_fn - () <b>const</b> -</pre> - </td> - - <td> - <p>Const access to the <a href= - "#comb_probe_fn828996423"><tt>comb_probe_fn</tt></a> - object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a href="#probe_fn10954995"><tt>probe_fn</tt></a> & - get_probe_fn - () -</pre> - </td> - - <td> - <p>Access to the <a href= - "#probe_fn10954995"><tt>probe_fn</tt></a> object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>const</b> <a href= -"#probe_fn10954995"><tt>probe_fn</tt></a> & - get_probe_fn - () <b>const</b> -</pre> - </td> - - <td> - <p>Const access to the <a href= - "#probe_fn10954995"><tt>probe_fn</tt></a> object.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/gp_hash_tag.html 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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>gp_hash_tag Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>gp_hash_tag</tt> Interface</h1> - - <p>General-probing hash data structure tag.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Base Classes</a></h2> - - <table class="c1" width="100%" border="1" summary="Bases"> - <tr> - <td width="80%" align="left"><b>Class</b></td> - - <td width="20%" align="left"><b>Derivation Type</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="basic_hash_tag.html"><span class= -"c2"><tt>basic_hash_tag</tt></span></a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_based_containers.html b/libstdc++-v3/doc/html/ext/pb_ds/hash_based_containers.html 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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>Hash-Based Containers</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1>Hash Table Design</h1> - - <h2><a name="overview" id="overview">Overview</a></h2> - - <p>The collision-chaining hash-based container has the - following declaration.</p> - <pre> -<b>template</b>< - <b>typename</b> Key, - <b>typename</b> Mapped, - <b>typename</b> Hash_Fn = std::hash<Key>, - <b>typename</b> Eq_Fn = std::equal_to<Key>, - <b>typename</b> Comb_Hash_Fn = <a href= -"direct_mask_range_hashing.html">direct_mask_range_hashing</a><> - <b>typename</b> Resize_Policy = <i>default explained below.</i> - <b>bool</b> Store_Hash = <b>false</b>, - <b>typename</b> Allocator = std::allocator<<b>char</b>> > -<b>class</b> <a href= -"cc_hash_table.html">cc_hash_table</a>; -</pre> - - <p>The parameters have the following meaning:</p> - - <ol> - <li><tt>Key</tt> is the key type.</li> - - <li><tt>Mapped</tt> is the mapped-policy, and is explained in - <a href="tutorial.html#assoc_ms">Tutorial::Associative - Containers::Associative Containers Others than Maps</a>.</li> - - <li><tt>Hash_Fn</tt> is a key hashing functor.</li> - - <li><tt>Eq_Fn</tt> is a key equivalence functor.</li> - - <li><tt>Comb_Hash_Fn</tt> is a <i>range-hashing_functor</i>; - it describes how to translate hash values into positions - within the table. This is described in <a href= - "#hash_policies">Hash Policies</a>.</li> - - <li><tt>Resize_Policy</tt> describes how a container object - should change its internal size. This is described in - <a href="#resize_policies">Resize Policies</a>.</li> - - <li><tt>Store_Hash</tt> indicates whether the hash value - should be stored with each entry. This is described in - <a href="#policy_interaction">Policy Interaction</a>.</li> - - <li><tt>Allocator</tt> is an allocator - type.</li> - </ol> - - <p>The probing hash-based container has the following - declaration.</p> - <pre> -<b>template</b>< - <b>typename</b> Key, - <b>typename</b> Mapped, - <b>typename</b> Hash_Fn = std::hash<Key>, - <b>typename</b> Eq_Fn = std::equal_to<Key>, - <b>typename</b> Comb_Probe_Fn = <a href= -"direct_mask_range_hashing.html">direct_mask_range_hashing</a><> - <b>typename</b> Probe_Fn = <i>default explained below.</i> - <b>typename</b> Resize_Policy = <i>default explained below.</i> - <b>bool</b> Store_Hash = <b>false</b>, - <b>typename</b> Allocator = std::allocator<<b>char</b>> > -<b>class</b> <a href= -"gp_hash_table.html">gp_hash_table</a>; -</pre> - - <p>The parameters are identical to those of the - collision-chaining container, except for the following.</p> - - <ol> - <li><tt>Comb_Probe_Fn</tt> describes how to transform a probe - sequence into a sequence of positions within the table.</li> - - <li><tt>Probe_Fn</tt> describes a probe sequence policy.</li> - </ol> - - <p>Some of the default template values depend on the values of - other parameters, and are explained in <a href= - "#policy_interaction">Policy Interaction</a>.</p> - - <h2><a name="hash_policies" id="hash_policies">Hash - Policies</a></h2> - - <h3><a name="general_terms" id="general_terms">General - Terms</a></h3> - - <p>Following is an explanation of some functions which hashing - involves. Figure <a href= - "#hash_ranged_hash_range_hashing_fns">Hash functions, - ranged-hash functions, and range-hashing functions</a>) - illustrates the discussion.</p> - - <h6 class="c1"><a name="hash_ranged_hash_range_hashing_fns" id= - "hash_ranged_hash_range_hashing_fns"><img src= - "hash_ranged_hash_range_hashing_fns.png" alt= - "no image" /></a></h6> - - <h6 class="c1">Hash functions, ranged-hash functions, and - range-hashing functions.</h6> - - <p>Let <i>U</i> be a domain (<i>e.g.</i>, the integers, or the - strings of 3 characters). A hash-table algorithm needs to map - elements of <i>U</i> "uniformly" into the range <i>[0,..., m - - 1]</i> (where <i>m</i> is a non-negative integral value, and - is, in general, time varying). <i>I.e.</i>, the algorithm needs - a <i>ranged-hash</i> function</p> - - <p><i>f : U × Z<sub>+</sub> → Z<sub>+</sub></i> - ,</p> - - <p>such that for any <i>u</i> in <i>U</i> ,</p> - - <p><i>0 ≤ f(u, m) ≤ m - 1</i> ,</p> - - <p>and which has "good uniformity" properties [<a href= - "references.html#knuth98sorting">knuth98sorting</a>]. One - common solution is to use the composition of the hash - function</p> - - <p><i>h : U → Z<sub>+</sub></i> ,</p> - - <p>which maps elements of <i>U</i> into the non-negative - integrals, and</p> - - <p class="c2">g : Z<sub>+</sub> × Z<sub>+</sub> → - Z<sub>+</sub>,</p> - - <p>which maps a non-negative hash value, and a non-negative - range upper-bound into a non-negative integral in the range - between 0 (inclusive) and the range upper bound (exclusive), - <i>i.e.</i>, for any <i>r</i> in <i>Z<sub>+</sub></i>,</p> - - <p><i>0 ≤ g(r, m) ≤ m - 1</i> .</p> - - <p>The resulting ranged-hash function, is</p> - - <p><i><a name="ranged_hash_composed_of_hash_and_range_hashing" - id="ranged_hash_composed_of_hash_and_range_hashing">f(u , m) = - g(h(u), m)</a></i> (1) .</p> - - <p>From the above, it is obvious that given <i>g</i> and - <i>h</i>, <i>f</i> can always be composed (however the converse - is not true). The STL's hash-based containers allow specifying - a hash function, and use a hard-wired range-hashing function; - the ranged-hash function is implicitly composed.</p> - - <p>The above describes the case where a key is to be mapped - into a <i>single position</i> within a hash table, <i>e.g.</i>, - in a collision-chaining table. In other cases, a key is to be - mapped into a <i>sequence of positions</i> within a table, - <i>e.g.</i>, in a probing table. Similar terms apply in this - case: the table requires a <i>ranged probe</i> function, - mapping a key into a sequence of positions withing the table. - This is typically achieved by composing a <i>hash function</i> - mapping the key into a non-negative integral type, a - <i>probe</i> function transforming the hash value into a - sequence of hash values, and a <i>range-hashing</i> function - transforming the sequence of hash values into a sequence of - positions.</p> - - <h3><a name="range_hashing_fns" id= - "range_hashing_fns">Range-Hashing Functions</a></h3> - - <p>Some common choices for range-hashing functions are the - division, multiplication, and middle-square methods [<a href= - "references.html#knuth98sorting">knuth98sorting</a>], defined - as</p> - - <p><i><a name="division_method" id="division_method">g(r, m) = - r mod m</a></i> (2) ,</p> - - <p><i>g(r, m) = ⌈ u/v ( a r mod v ) ⌉</i> ,</p> - - <p>and</p> - - <p><i>g(r, m) = ⌈ u/v ( r<sup>2</sup> mod v ) ⌉</i> - ,</p> - - <p>respectively, for some positive integrals <i>u</i> and - <i>v</i> (typically powers of 2), and some <i>a</i>. Each of - these range-hashing functions works best for some different - setting.</p> - - <p>The division method <a href="#division_method">(2)</a> is a - very common choice. However, even this single method can be - implemented in two very different ways. It is possible to - implement <a href="#division_method">(2)</a> using the low - level <i>%</i> (modulo) operation (for any <i>m</i>), or the - low level <i>&</i> (bit-mask) operation (for the case where - <i>m</i> is a power of 2), <i>i.e.</i>,</p> - - <p><i><a name="division_method_prime_mod" id= - "division_method_prime_mod">g(r, m) = r % m</a></i> (3) ,</p> - - <p>and</p> - - <p><i><a name="division_method_bit_mask" id= - "division_method_bit_mask">g(r, m) = r & m - 1, (m = - 2<sup>k</sup>)</a></i> for some <i>k)</i> (4),</p> - - <p>respectively.</p> - - <p>The <i>%</i> (modulo) implementation <a href= - "#division_method_prime_mod">(3)</a> has the advantage that for - <i>m</i> a prime far from a power of 2, <i>g(r, m)</i> is - affected by all the bits of <i>r</i> (minimizing the chance of - collision). It has the disadvantage of using the costly modulo - operation. This method is hard-wired into SGI's implementation - [<a href="references.html#sgi_stl">sgi_stl</a>].</p> - - <p>The <i>&</i> (bit-mask) implementation <a href= - "#division_method_bit_mask">(4)</a> has the advantage of - relying on the fast bit-wise and operation. It has the - disadvantage that for <i>g(r, m)</i> is affected only by the - low order bits of <i>r</i>. This method is hard-wired into - Dinkumware's implementation [<a href= - "references.html#dinkumware_stl">dinkumware_stl</a>].</p> - - <h3><a name="hash_policies_ranged_hash_policies" id= - "hash_policies_ranged_hash_policies">Ranged-Hash - Functions</a></h3> - - <p>In cases it is beneficial to allow the - client to directly specify a ranged-hash hash function. It is - true, that the writer of the ranged-hash function cannot rely - on the values of <i>m</i> having specific numerical properties - suitable for hashing (in the sense used in [<a href= - "references.html#knuth98sorting">knuth98sorting</a>]), since - the values of <i>m</i> are determined by a resize policy with - possibly orthogonal considerations.</p> - - <p>There are two cases where a ranged-hash function can be - superior. The firs is when using perfect hashing [<a href= - "references.html#knuth98sorting">knuth98sorting</a>]; the - second is when the values of <i>m</i> can be used to estimate - the "general" number of distinct values required. This is - described in the following.</p> - - <p>Let</p> - - <p class="c2">s = [ s<sub>0</sub>,..., s<sub>t - 1</sub>]</p> - - <p>be a string of <i>t</i> characters, each of which is from - domain <i>S</i>. Consider the following ranged-hash - function:</p> - - <p><a name="total_string_dna_hash" id= - "total_string_dna_hash"><i>f<sub>1</sub>(s, m) = ∑ <sub>i = - 0</sub><sup>t - 1</sup> s<sub>i</sub> a<sup>i</sup></i> mod - <i>m</i></a> (5) ,</p> - - <p>where <i>a</i> is some non-negative integral value. This is - the standard string-hashing function used in SGI's - implementation (with <i>a = 5</i>) [<a href= - "references.html#sgi_stl">sgi_stl</a>]. Its advantage is that - it takes into account all of the characters of the string.</p> - - <p>Now assume that <i>s</i> is the string representation of a - of a long DNA sequence (and so <i>S = {'A', 'C', 'G', - 'T'}</i>). In this case, scanning the entire string might be - prohibitively expensive. A possible alternative might be to use - only the first <i>k</i> characters of the string, where</p> - - <p>|S|<sup>k</sup> ≥ m ,</p> - - <p><i>i.e.</i>, using the hash function</p> - - <p><a name="only_k_string_dna_hash" id= - "only_k_string_dna_hash"><i>f<sub>2</sub>(s, m) = ∑ <sub>i - = 0</sub><sup>k - 1</sup> s<sub>i</sub> a<sup>i</sup></i> mod - <i>m</i></a> , (6)</p> - - <p>requiring scanning over only</p> - - <p><i>k =</i> log<i><sub>4</sub>( m )</i></p> - - <p>characters.</p> - - <p>Other more elaborate hash-functions might scan <i>k</i> - characters starting at a random position (determined at each - resize), or scanning <i>k</i> random positions (determined at - each resize), <i>i.e.</i>, using</p> - - <p><i>f<sub>3</sub>(s, m) = ∑ <sub>i = - r</sub>0</i><sup>r<sub>0</sub> + k - 1</sup> s<sub>i</sub> - a<sup>i</sup> mod <i>m</i> ,</p> - - <p>or</p> - - <p><i>f<sub>4</sub>(s, m) = ∑ <sub>i = 0</sub><sup>k - - 1</sup> s<sub>r</sub>i</i> a<sup>r<sub>i</sub></sup> mod - <i>m</i> ,</p> - - <p>respectively, for <i>r<sub>0</sub>,..., r<sub>k-1</sub></i> - each in the (inclusive) range <i>[0,...,t-1]</i>.</p> - - <p>It should be noted that the above functions cannot be - decomposed as <a href= - "#ranged_hash_composed_of_hash_and_range_hashing">(1)</a> .</p> - - <h3><a name="pb_ds_imp" id="pb_ds_imp">Implementation</a></h3> - - <p>This sub-subsection describes the implementation of the - above in <tt>pb_ds</tt>. It first explains range-hashing - functions in collision-chaining tables, then ranged-hash - functions in collision-chaining tables, then probing-based - tables, and, finally, lists the relevant classes in - <tt>pb_ds</tt>.</p> - - <h4>Range-Hashing and Ranged-Hashes in Collision-Chaining - Tables</h4> - - <p><a href= - "cc_hash_table.html"><tt>cc_hash_table</tt></a> is - parametrized by <tt>Hash_Fn</tt> and <tt>Comb_Hash_Fn</tt>, a - hash functor and a combining hash functor, respectively.</p> - - <p>In general, <tt>Comb_Hash_Fn</tt> is considered a - range-hashing functor. <a href= - "cc_hash_table.html"><tt>cc_hash_table</tt></a> - synthesizes a ranged-hash function from <tt>Hash_Fn</tt> and - <tt>Comb_Hash_Fn</tt> (see <a href= - "#ranged_hash_composed_of_hash_and_range_hashing">(1)</a> - above). Figure <a href="#hash_range_hashing_seq_diagram">Insert - hash sequence diagram</a> shows an <tt>insert</tt> sequence - diagram for this case. The user inserts an element (point A), - the container transforms the key into a non-negative integral - using the hash functor (points B and C), and transforms the - result into a position using the combining functor (points D - and E).</p> - - <h6 class="c1"><a name="hash_range_hashing_seq_diagram" id= - "hash_range_hashing_seq_diagram"><img src= - "hash_range_hashing_seq_diagram.png" alt="no image" /></a></h6> - - <h6 class="c1">Insert hash sequence diagram.</h6> - - <p>If <a href= - "cc_hash_table.html"><tt>cc_hash_table</tt></a>'s - hash-functor, <tt>Hash_Fn</tt> is instantiated by <a href= - "null_hash_fn.html"><tt>null_hash_fn</tt></a> (see <a href= - "concepts.html#concepts_null_policies">Interface::Concepts::Null - Policy Classes</a>), then <tt>Comb_Hash_Fn</tt> is taken to be - a ranged-hash function. Figure <a href= - "#hash_range_hashing_seq_diagram2">Insert hash sequence diagram - with a null hash policy</a> shows an <tt>insert</tt> sequence - diagram. The user inserts an element (point A), the container - transforms the key into a position using the combining functor - (points B and C).</p> - - <h6 class="c1"><a name="hash_range_hashing_seq_diagram2" id= - "hash_range_hashing_seq_diagram2"><img src= - "hash_range_hashing_seq_diagram2.png" alt= - "no image" /></a></h6> - - <h6 class="c1">Insert hash sequence diagram with a null hash - policy.</h6> - - <h4>Probing Tables</h4> - - <p><a href= - "gp_hash_table.html"></a><tt>gp_hash_table</tt> is - parametrized by <tt>Hash_Fn</tt>, <tt>Probe_Fn</tt>, and - <tt>Comb_Probe_Fn</tt>. As before, if <tt>Hash_Fn</tt> and - <tt>Probe_Fn</tt> are, respectively, <a href= - "null_hash_fn.html"><tt>null_hash_fn</tt></a> and <a href= - "null_probe_fn.html"><tt>null_probe_fn</tt></a>, then - <tt>Comb_Probe_Fn</tt> is a ranged-probe functor. Otherwise, - <tt>Hash_Fn</tt> is a hash functor, <tt>Probe_Fn</tt> is a - functor for offsets from a hash value, and - <tt>Comb_Probe_Fn</tt> transforms a probe sequence into a - sequence of positions within the table.</p> - - <h4>Pre-Defined Policies</h4> - - <p><tt>pb_ds</tt> contains some pre-defined classes - implementing range-hashing and probing functions:</p> - - <ol> - <li><a href= - "direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> - and <a href= - "direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> - are range-hashing functions based on a bit-mask and a modulo - operation, respectively.</li> - - <li><a href= - "linear_probe_fn.html"><tt>linear_probe_fn</tt></a>, and - <a href= - "quadratic_probe_fn.html"><tt>quadratic_probe_fn</tt></a> are - a linear probe and a quadratic probe function, - respectively.</li> - </ol>Figure <a href="#hash_policy_cd">Hash policy class - diagram</a> shows a class diagram. - - <h6 class="c1"><a name="hash_policy_cd" id= - "hash_policy_cd"><img src="hash_policy_cd.png" alt= - "no image" /></a></h6> - - <h6 class="c1">Hash policy class diagram.</h6> - - <h2><a name="resize_policies" id="resize_policies">Resize - Policies</a></h2> - - <h3><a name="general" id="general">General Terms</a></h3> - - <p>Hash-tables, as opposed to trees, do not naturally grow or - shrink. It is necessary to specify policies to determine how - and when a hash table should change its size. Usually, resize - policies can be decomposed into orthogonal policies:</p> - - <ol> - <li>A <i>size policy</i> indicating <i>how</i> a hash table - should grow (<i>e.g.,</i> it should multiply by powers of - 2).</li> - - <li>A <i>trigger policy</i> indicating <i>when</i> a hash - table should grow (<i>e.g.,</i> a load factor is - exceeded).</li> - </ol> - - <h3><a name="size_policies" id="size_policies">Size - Policies</a></h3> - - <p>Size policies determine how a hash table changes size. These - policies are simple, and there are relatively few sensible - options. An exponential-size policy (with the initial size and - growth factors both powers of 2) works well with a mask-based - range-hashing function (see <a href= - "#hash_policies">Range-Hashing Policies</a>), and is the - hard-wired policy used by Dinkumware [<a href= - "references.html#dinkumware_stl">dinkumware_stl</a>]. A - prime-list based policy works well with a modulo-prime range - hashing function (see <a href="#hash_policies">Range-Hashing - Policies</a>), and is the hard-wired policy used by SGI's - implementation [<a href= - "references.html#sgi_stl">sgi_stl</a>].</p> - - <h3><a name="trigger_policies" id="trigger_policies">Trigger - Policies</a></h3> - - <p>Trigger policies determine when a hash table changes size. - Following is a description of two policies: <i>load-check</i> - policies, and collision-check policies.</p> - - <p>Load-check policies are straightforward. The user specifies - two factors, <i>α<sub>min</sub></i> and - <i>α<sub>max</sub></i>, and the hash table maintains the - invariant that</p> - - <p><i><a name="load_factor_min_max" id= - "load_factor_min_max">α<sub>min</sub> ≤ (number of - stored elements) / (hash-table size) ≤ - α<sub>max</sub></a></i> (1) .</p> - - <p>Collision-check policies work in the opposite direction of - load-check policies. They focus on keeping the number of - collisions moderate and hoping that the size of the table will - not grow very large, instead of keeping a moderate load-factor - and hoping that the number of collisions will be small. A - maximal collision-check policy resizes when the longest - probe-sequence grows too large.</p> - - <p>Consider Figure <a href="#balls_and_bins">Balls and - bins</a>. Let the size of the hash table be denoted by - <i>m</i>, the length of a probe sequence be denoted by - <i>k</i>, and some load factor be denoted by α. We would - like to calculate the minimal length of <i>k</i>, such that if - there were <i>α m</i> elements in the hash table, a probe - sequence of length <i>k</i> would be found with probability at - most <i>1/m</i>.</p> - - <h6 class="c1"><a name="balls_and_bins" id= - "balls_and_bins"><img src="balls_and_bins.png" alt= - "no image" /></a></h6> - - <h6 class="c1">Balls and bins.</h6> - - <p>Denote the probability that a probe sequence of length - <i>k</i> appears in bin <i>i</i> by <i>p<sub>i</sub></i>, the - length of the probe sequence of bin <i>i</i> by - <i>l<sub>i</sub></i>, and assume uniform distribution. Then</p> - - <p><a name="prob_of_p1" id= - "prob_of_p1"><i>p<sub>1</sub></i></a> = (3)</p> - - <p class="c2"><b>P</b>(l<sub>1</sub> ≥ k) =</p> - - <p><i><b>P</b>(l<sub>1</sub> ≥ α ( 1 + k / α - 1 - ) ≤</i> (a)</p> - - <p><i>e ^ ( - ( α ( k / α - 1 )<sup>2</sup> ) /2 - )</i> ,</p> - - <p>where (a) follows from the Chernoff bound [<a href= - "references.html#motwani95random">motwani95random</a>]. To - calculate the probability that <i>some</i> bin contains a probe - sequence greater than <i>k</i>, we note that the - <i>l<sub>i</sub></i> are negatively-dependent [<a href= - "references.html#dubhashi98neg">dubhashi98neg</a>]. Let - <i><b>I</b>(.)</i> denote the indicator function. Then</p> - - <p><a name="at_least_k_i_n_some_bin" id= - "at_least_k_i_n_some_bin"><i><b>P</b>( exists<sub>i</sub> - l<sub>i</sub> ≥ k ) =</i> (3)</a></p> - - <p class="c2"><b>P</b> ( ∑ <sub>i = 1</sub><sup>m</sup> - <b>I</b>(l<sub>i</sub> ≥ k) ≥ 1 ) =</p> - - <p><i><b>P</b> ( ∑ <sub>i = 1</sub><sup>m</sup> <b>I</b> ( - l<sub>i</sub> ≥ k ) ≥ m p<sub>1</sub> ( 1 + 1 / (m - p<sub>1</sub>) - 1 ) ) ≤</i> (a)</p> - - <p class="c2">e ^ ( ( - m p<sub>1</sub> ( 1 / (m p<sub>1</sub>) - - 1 ) <sup>2</sup> ) / 2 ) ,</p> - - <p>where (a) follows from the fact that the Chernoff bound can - be applied to negatively-dependent variables [<a href= - "references.html#dubhashi98neg">dubhashi98neg</a>]. Inserting - <a href="#prob_of_p1">(2)</a> into <a href= - "#at_least_k_i_n_some_bin">(3)</a>, and equating with - <i>1/m</i>, we obtain</p> - - <p><i>k ~ √ ( 2 α</i> ln <i>2 m</i> ln<i>(m) ) - )</i> .</p> - - <h3><a name="imp_pb_ds" id="imp_pb_ds">Implementation</a></h3> - - <p>This sub-subsection describes the implementation of the - above in <tt>pb_ds</tt>. It first describes resize policies and - their decomposition into trigger and size policies, then - describes pre-defined classes, and finally discusses controlled - access the policies' internals.</p> - - <h4>Resize Policies and Their Decomposition</h4> - - <p>Each hash-based container is parametrized by a - <tt>Resize_Policy</tt> parameter; the container derives - <tt><b>public</b></tt>ly from <tt>Resize_Policy</tt>. For - example:</p> - <pre> -<a href="cc_hash_table.html">cc_hash_table</a>< - <b>typename</b> Key, - <b>typename</b> Mapped, - ... - <b>typename</b> Resize_Policy - ...> : - <b>public</b> Resize_Policy -</pre> - - <p>As a container object is modified, it continuously notifies - its <tt>Resize_Policy</tt> base of internal changes - (<i>e.g.</i>, collisions encountered and elements being - inserted). It queries its <tt>Resize_Policy</tt> base whether - it needs to be resized, and if so, to what size.</p> - - <p>Figure <a href="#insert_resize_sequence_diagram1">Insert - resize sequence diagram</a> shows a (possible) sequence diagram - of an insert operation. The user inserts an element; the hash - table notifies its resize policy that a search has started - (point A); in this case, a single collision is encountered - - the table notifies its resize policy of this (point B); the - container finally notifies its resize policy that the search - has ended (point C); it then queries its resize policy whether - a resize is needed, and if so, what is the new size (points D - to G); following the resize, it notifies the policy that a - resize has completed (point H); finally, the element is - inserted, and the policy notified (point I).</p> - - <h6 class="c1"><a name="insert_resize_sequence_diagram1" id= - "insert_resize_sequence_diagram1"><img src= - "insert_resize_sequence_diagram1.png" alt= - "no image" /></a></h6> - - <h6 class="c1">Insert resize sequence diagram.</h6> - - <p>In practice, a resize policy can be usually orthogonally - decomposed to a size policy and a trigger policy. Consequently, - the library contains a single class for instantiating a resize - policy: <a href= - "hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - is parametrized by <tt>Size_Policy</tt> and - <tt>Trigger_Policy</tt>, derives <tt><b>public</b></tt>ly from - both, and acts as a standard delegate [<a href= - "references.html#gamma95designpatterns">gamma95designpatterns</a>] - to these policies.</p> - - <p>Figures <a href="#insert_resize_sequence_diagram2">Standard - resize policy trigger sequence diagram</a> and <a href= - "#insert_resize_sequence_diagram3">Standard resize policy size - sequence diagram</a> show sequence diagrams illustrating the - interaction between the standard resize policy and its trigger - and size policies, respectively.</p> - - <h6 class="c1"><a name="insert_resize_sequence_diagram2" id= - "insert_resize_sequence_diagram2"><img src= - "insert_resize_sequence_diagram2.png" alt= - "no image" /></a></h6> - - <h6 class="c1">Standard resize policy trigger sequence - diagram.</h6> - - <h6 class="c1"><a name="insert_resize_sequence_diagram3" id= - "insert_resize_sequence_diagram3"><img src= - "insert_resize_sequence_diagram3.png" alt= - "no image" /></a></h6> - - <h6 class="c1">Standard resize policy size sequence - diagram.</h6> - - <h4>Pre-Defined Policies</h4> - - <p>The library includes the following - instantiations of size and trigger policies:</p> - - <ol> - <li><a href= - "hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - implements a load check trigger policy.</li> - - <li><a href= - "cc_hash_max_collision_check_resize_trigger.html"><tt>cc_hash_max_collision_check_resize_trigger</tt></a> - implements a collision check trigger policy.</li> - - <li><a href= - "hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> - implements an exponential-size policy (which should be used - with mask range hashing).</li> - - <li><a href= - "hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> - implementing a size policy based on a sequence of primes - [<a href="references.html#sgi_stl">sgi_stl</a>] (which should - be used with mod range hashing</li> - </ol> - - <p>Figure <a href="#resize_policy_cd">Resize policy class - diagram</a> gives an overall picture of the resize-related - classes. <a href= - "basic_hash_table.html"><tt>basic_hash_table</tt></a> - is parametrized by <tt>Resize_Policy</tt>, which it subclasses - publicly. This class is currently instantiated only by <a href= - "hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>. - <a href= - "hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - itself is parametrized by <tt>Trigger_Policy</tt> and - <tt>Size_Policy</tt>. Currently, <tt>Trigger_Policy</tt> is - instantiated by <a href= - "hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a>, - or <a href= - "cc_hash_max_collision_check_resize_trigger.html"><tt>cc_hash_max_collision_check_resize_trigger</tt></a>; - <tt>Size_Policy</tt> is instantiated by <a href= - "hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a>, - or <a href= - "hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a>.</p> - - <h6 class="c1"><a name="resize_policy_cd" id= - "resize_policy_cd"><img src="resize_policy_cd.png" alt= - "no image" /></a></h6> - - <h6 class="c1">Resize policy class diagram.</h6> - - <h4>Controlled Access to Policies' Internals</h4> - - <p>There are cases where (controlled) access to resize - policies' internals is beneficial. <i>E.g.</i>, it is sometimes - useful to query a hash-table for the table's actual size (as - opposed to its <tt>size()</tt> - the number of values it - currently holds); it is sometimes useful to set a table's - initial size, externally resize it, or change load factors.</p> - - <p>Clearly, supporting such methods both decreases the - encapsulation of hash-based containers, and increases the - diversity between different associative-containers' interfaces. - Conversely, omitting such methods can decrease containers' - flexibility.</p> - - <p>In order to avoid, to the extent possible, the above - conflict, the hash-based containers themselves do not address - any of these questions; this is deferred to the resize policies, - which are easier to change or replace. Thus, for example, - neither <a href= - "cc_hash_table.html"><tt>cc_hash_table</tt></a> nor - <a href= - "gp_hash_table.html"><tt>gp_hash_table</tt></a> - contain methods for querying the actual size of the table; this - is deferred to <a href= - "hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a>.</p> - - <p>Furthermore, the policies themselves are parametrized by - template arguments that determine the methods they support - ([<a href= - "references.html#alexandrescu01modern">alexandrescu01modern</a>] - shows techniques for doing so). <a href= - "hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - is parametrized by <tt>External_Size_Access</tt> that - determines whether it supports methods for querying the actual - size of the table or resizing it. <a href= - "hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - is parametrized by <tt>External_Load_Access</tt> that - determines whether it supports methods for querying or - modifying the loads. <a href= - "cc_hash_max_collision_check_resize_trigger.html"><tt>cc_hash_max_collision_check_resize_trigger</tt></a> - is parametrized by <tt>External_Load_Access</tt> that - determines whether it supports methods for querying the - load.</p> - - <p>Some operations, for example, resizing a container at - run time, or changing the load factors of a load-check trigger - policy, require the container itself to resize. As mentioned - above, the hash-based containers themselves do not contain - these types of methods, only their resize policies. - Consequently, there must be some mechanism for a resize policy - to manipulate the hash-based container. As the hash-based - container is a subclass of the resize policy, this is done - through virtual methods. Each hash-based container has a - <tt><b>private</b></tt> <tt><b>virtual</b></tt> method:</p> - <pre> -<b>virtual void</b> - do_resize - (size_type new_size); -</pre> - - <p>which resizes the container. Implementations of - <tt>Resize_Policy</tt> can export public methods for resizing - the container externally; these methods internally call - <tt>do_resize</tt> to resize the table.</p> - - <h2><a name="policy_interaction" id="policy_interaction">Policy - Interaction</a></h2> - - <p>Hash-tables are unfortunately especially susceptible to - choice of policies. One of the more complicated aspects of this - is that poor combinations of good policies can form a poor - container. Following are some considerations.</p> - - <h3><a name="policy_interaction_probe_size_trigger" id= - "policy_interaction_probe_size_trigger">Probe Policies, Size - Policies, and Trigger Policies</a></h3> - - <p>Some combinations do not work well for probing containers. - For example, combining a quadratic probe policy with an - exponential size policy can yield a poor container: when an - element is inserted, a trigger policy might decide that there - is no need to resize, as the table still contains unused - entries; the probe sequence, however, might never reach any of - the unused entries.</p> - - <p>Unfortunately, <tt>pb_ds</tt> cannot detect such problems at - compilation (they are halting reducible). It therefore defines - an exception class <a href= - "insert_error.html"><tt>insert_error</tt></a> to throw an - exception in this case.</p> - - <h3><a name="policy_interaction_hash_trigger" id= - "policy_interaction_hash_trigger">Hash Policies and Trigger - Policies</a></h3> - - <p>Some trigger policies are especially susceptible to poor - hash functions. Suppose, as an extreme case, that the hash - function transforms each key to the same hash value. After some - inserts, a collision detecting policy will always indicate that - the container needs to grow.</p> - - <p>The library, therefore, by design, limits each operation to - one resize. For each <tt>insert</tt>, for example, it queries - only once whether a resize is needed.</p> - - <h3><a name="policy_interaction_eq_sth_hash" id= - "policy_interaction_eq_sth_hash">Equivalence Functors, Storing - Hash Values, and Hash Functions</a></h3> - - <p><a href= - "cc_hash_table.html"><tt>cc_hash_table</tt></a> and - <a href= - "gp_hash_table.html"><tt>gp_hash_table</tt></a> are - parametrized by an equivalence functor and by a - <tt>Store_Hash</tt> parameter. If the latter parameter is - <tt><b>true</b></tt>, then the container stores with each entry - a hash value, and uses this value in case of collisions to - determine whether to apply a hash value. This can lower the - cost of collision for some types, but increase the cost of - collisions for other types.</p> - - <p>If a ranged-hash function or ranged probe function is - directly supplied, however, then it makes no sense to store the - hash value with each entry. <tt>pb_ds</tt>'s container will - fail at compilation, by design, if this is attempted.</p> - - <h3><a name="policy_interaction_size_load_check" id= - "policy_interaction_size_load_check">Size Policies and - Load-Check Trigger Policies</a></h3> - - <p>Assume a size policy issues an increasing sequence of sizes - <i>a, a q, a q<sup>1</sup>, a q<sup>2</sup>, ...</i> For - example, an exponential size policy might issue the sequence of - sizes <i>8, 16, 32, 64, ...</i></p> - - <p>If a load-check trigger policy is used, with loads - <i>α<sub>min</sub></i> and <i>α<sub>max</sub></i>, - respectively, then it is a good idea to have:</p> - - <ol> - <li><i>α<sub>max</sub> ~ 1 / q</i></li> - - <li><i>α<sub>min</sub> < 1 / (2 q)</i></li> - </ol> - - <p>This will ensure that the amortized hash cost of each - modifying operation is at most approximately 3.</p> - - <p><i>α<sub>min</sub> ~ α<sub>max</sub></i> is, in - any case, a bad choice, and <i>α<sub>min</sub> > - α<sub>max</sub></i> is horrendous.</p> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_exponential_size_policy.html b/libstdc++-v3/doc/html/ext/pb_ds/hash_exponential_size_policy.html 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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>hash_exponential_size_policy Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>hash_exponential_size_policy</tt> Interface</h1> - - <p>A size policy whose sequence of sizes form an exponential - sequence (typically powers of 2)</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/hash_policy.hpp"><tt>hash_policy.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Template Parameters</a></h2> - - <table class="c1" width="100%" border="1" summary= - "Template Parameters"> - <tr> - <td width="20%" align="left"><b>Parameter</b></td> - - <td width="50%" align="left"><b>Description</b></td> - - <td width="30%" align="left"><b>Default Value</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="Size_Type42920436" id= -"Size_Type42920436"><b>typename</b> Size_Type </a> -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - - <td>size_t</td> - </tr> - </table> - - <h2><a name="link2" id="link2">Public Types and - Constants</a></h2> - - <h3><a name="link3" id="link3">General Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="size_type55424436" id="size_type55424436">size_type</a> -</pre> - </td> - - <td> - <pre> -<a href="#Size_Type42920436"><tt>Size_Type</tt></a> -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - </tr> - </table> - - <h2><a name="link4" id="link4">Public Methods</a></h2> - - <h3><a name="link5" id="link5">Constructors, Destructor, and - Related</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> - hash_exponential_size_policy - (<a href= -"#size_type55424436"><tt>size_type</tt></a> start_size = 8, - <a href= -"#size_type55424436"><tt>size_type</tt></a> grow_factor = 2) -</pre> - </td> - - <td> - <p>Default constructor, or constructor taking a - <span class="c1"><tt>start_size</tt></span>, or - constructor taking a start size and <span class= - "c1"><tt>grow_factor</tt></span>. The policy will use the - sequence of sizes <span class= - "c1"><tt>start_size</tt></span>, <span class= - "c1"><tt>start_size</tt></span> * <span class= - "c1"><tt>grow_factor</tt></span>, <span class= - "c1"><tt>start_size</tt></span> * <span class= - "c1"><tt>grow_factor</tt></span>^2, ...</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - swap - (<span class= -"c2"><tt>hash_exponential_size_policy</tt></span> &other) -</pre> - </td> - - <td> - <p>Swaps content.</p> - </td> - </tr> - </table> - - <h2><a name="link6" id="link6">Protected Methods</a></h2> - - <h3><a name="link7" id="link7">Size methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="#size_type55424436"><tt>size_type</tt></a> - get_nearest_larger_size - (<a href= -"#size_type55424436"><tt>size_type</tt></a> size) <b>const</b> -</pre> - </td> - - <td> - <p>Given a size <span class="c1"><tt>size</tt></span>, - returns a size that is larger.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a href="#size_type55424436"><tt>size_type</tt></a> - get_nearest_smaller_size - (<a href= -"#size_type55424436"><tt>size_type</tt></a> size) <b>const</b> -</pre> - </td> - - <td> - <p>Given a size <span class="c1"><tt>size</tt></span>, - returns a size that is smaller.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_load_check_resize_trigger.html b/libstdc++-v3/doc/html/ext/pb_ds/hash_load_check_resize_trigger.html 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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>hash_load_check_resize_trigger Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>hash_load_check_resize_trigger</tt> Interface</h1> - - <p>A resize trigger policy based on a load check. It keeps the - load factor between some load factors load_min and - load_max.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/hash_policy.hpp"><tt>hash_policy.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Template Parameters</a></h2> - - <table class="c1" width="100%" border="1" summary= - "Template Parameters"> - <tr> - <td width="20%" align="left"><b>Parameter</b></td> - - <td width="50%" align="left"><b>Description</b></td> - - <td width="30%" align="left"><b>Default Value</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="External_Load_Access1313998607" id= -"External_Load_Access1313998607"><b>bool</b> External_Load_Access </a> -</pre> - </td> - - <td> - <p>Specifies whether the load factor can be accessed - externally. The two options have different trade-offs in - terms of flexibility, genericity, and encapsulation.</p> - </td> - - <td><tt><b>false</b></tt></td> - </tr> - - <tr> - <td> - <pre> -<a name="Size_Type42920436" id= -"Size_Type42920436"><b>typename</b> Size_Type </a> -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - - <td>size_t</td> - </tr> - </table> - - <h2><a name="link2" id="link2">Public Types and - Constants</a></h2> - - <h3><a name="link3" id="link3">General Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="size_type55424436" id="size_type55424436">size_type</a> -</pre> - </td> - - <td> - <pre> -<a href="#Size_Type42920436"><tt>Size_Type</tt></a> -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="external_load_access3976598639" id= -"external_load_access3976598639">external_load_access</a> -</pre> - </td> - - <td> - <pre> -<a href= -"#External_Load_Access1313998607"><tt>External_Load_Access</tt></a> -</pre> - </td> - - <td> - <p>Indicates whether loads can be accessed externally</p> - </td> - </tr> - </table> - - <h2><a name="link4" id="link4">Public Methods</a></h2> - - <h3><a name="link5" id="link5">Constructors, Destructor, and - Related</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> - hash_load_check_resize_trigger - (float load_min = 0.125, - float load_max = 0.5) -</pre> - </td> - - <td> - <p>Default constructor, or constructor taking - <span class="c1"><tt>load_min</tt></span> and - <span class="c1"><tt>load_max</tt></span> load factors - between which this policy will keep the actual load.</p> - - <p>It is the responsibility of the user to ensure that - <span class="c1"><tt>load_min</tt></span> is smaller than - <span class="c1"><tt>load_max</tt></span>.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - swap - (<span class= -"c2"><tt>hash_load_check_resize_trigger</tt></span> &other) -</pre> - </td> - - <td> - <p>Swaps content.</p> - </td> - </tr> - - <tr> - <td> - <pre> - <b>virtual</b> - ~hash_load_check_resize_trigger - () -</pre> - </td> - - <td> - <p>Destructor.</p> - </td> - </tr> - </table> - - <h3><a name="link6" id="link6">Load Access Methods</a></h3> - - <p>These methods are only available if the external access - parameter is set.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> std::pair<float, float> - get_loads - () <b>const</b> -</pre> - </td> - - <td> - <p>Returns a pair of the minimal and maximal loads, - respectively.</p> - - <p>Calling this method will not compile when <a href= - "#External_Load_Access1313998607"><tt>External_Load_Access</tt></a> - == <tt><b>false</b></tt>.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - set_loads - (std::pair<float, float> load_pair) -</pre> - </td> - - <td> - <p>Sets the loads through a pair of the minimal and - maximal loads, respectively.</p> - - <p>Calling this method resizes the container, and might - throw an exception. It is the responsibility of the user - to pass appropriate loads to this function. Calling this - method will not compile when <a href= - "#External_Load_Access1313998607"><tt>External_Load_Access</tt></a> - == <tt><b>false</b></tt>.</p> - </td> - </tr> - </table> - - <h2><a name="link7" id="link7">Protected Methods</a></h2> - - <h3><a name="link8" id="link8">Insert Search - Notifications.</a></h3> - - <p>Notifications called during an insert operation.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_insert_search_start - () -</pre> - </td> - - <td> - <p>Notifies a search started.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_insert_search_collision - () -</pre> - </td> - - <td> - <p>Notifies a search encountered a collision.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_insert_search_end - () -</pre> - </td> - - <td> - <p>Notifies a search ended.</p> - </td> - </tr> - </table> - - <h3><a name="link9" id="link9">Find Search - Notifications.</a></h3> - - <p>Notifications called during a find operation.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_find_search_start - () -</pre> - </td> - - <td> - <p>Notifies a search started.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_find_search_collision - () -</pre> - </td> - - <td> - <p>Notifies a search encountered a collision.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_find_search_end - () -</pre> - </td> - - <td> - <p>Notifies a search ended.</p> - </td> - </tr> - </table> - - <h3><a name="link10" id="link10">Erase Search - Notifications.</a></h3> - - <p>Notifications called during an insert operation.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_erase_search_start - () -</pre> - </td> - - <td> - <p>Notifies a search started.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_erase_search_collision - () -</pre> - </td> - - <td> - <p>Notifies a search encountered a collision.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_erase_search_end - () -</pre> - </td> - - <td> - <p>Notifies a search ended.</p> - </td> - </tr> - </table> - - <h3><a name="link11" id="link11">Content Change - Notifications.</a></h3> - - <p>Notifications called when the content of the table changes - in a way that can affect the resize policy.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_inserted - (<a href="#size_type55424436"><tt>size_type</tt></a> num_entries) -</pre> - </td> - - <td> - <p>Notifies an element was inserted. the total number of - entries in the table is <span class= - "c1"><tt>num_entries</tt></span>.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_erased - (<a href="#size_type55424436"><tt>size_type</tt></a> num_entries) -</pre> - </td> - - <td> - <p>Notifies an element was erased.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - notify_cleared - () -</pre> - </td> - - <td> - <p>Notifies the table was cleared.</p> - </td> - </tr> - </table> - - <h3><a name="link12" id="link12">Size Change - Notifications.</a></h3> - - <p>Notifications called when the table changes size.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - notify_resized - (<a href="#size_type55424436"><tt>size_type</tt></a> new_size) -</pre> - </td> - - <td> - <p>Notifies the table was resized as a result of this - object's signifying that a resize is needed.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - notify_externally_resized - (<a href="#size_type55424436"><tt>size_type</tt></a> new_size) -</pre> - </td> - - <td> - <p>Notifies the table was resized externally.</p> - </td> - </tr> - </table> - - <h3><a name="link13" id="link13">Queries</a></h3> - - <p>Called to query whether/how to resize.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>bool</b> - is_resize_needed - () <b>const</b> -</pre> - </td> - - <td> - <p>Queries whether a resize is needed.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>bool</b> - is_grow_needed - (<a href="#size_type55424436"><tt>size_type</tt></a> size, - <a href= -"#size_type55424436"><tt>size_type</tt></a> num_entries) <b>const</b> -</pre> - </td> - - <td> - <p>Queries whether a grow is needed.</p> - - <p>This method is called only if this object indicated - resize is needed. The actual <span class= - "c1"><tt>size</tt></span> of the table is <span class= - "c1"><tt>size</tt></span>, and the number of entries in - it is <span class="c1"><tt>num_entries</tt></span>.</p> - </td> - </tr> - </table> - - <h2><a name="link14" id="link14">Private Methods</a></h2> - - <h3><a name="link15" id="link15">Overrides</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> <b>void</b> - do_resize - (<a href="#size_type55424436"><tt>size_type</tt></a> new_size) -</pre> - </td> - - <td> - <p>Resizes to <span class= - "c1"><tt>new_size</tt></span>.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>hash_prime_size_policy Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>hash_prime_size_policy</tt> Interface</h1> - - <p>A size policy whose sequence of sizes form a - nearly-exponential sequence of primes.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/hash_policy.hpp"><tt>hash_policy.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Public Types and - Constants</a></h2> - - <h3><a name="link2" id="link2">General Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="size_type55424436" id="size_type55424436">size_type</a> -</pre> - </td> - - <td> - <pre> -size_t -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - </tr> - </table> - - <h2><a name="link3" id="link3">Public Methods</a></h2> - - <h3><a name="link4" id="link4">Constructors, Destructor, and - Related</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> - hash_prime_size_policy - (<a href= -"#size_type55424436"><tt>size_type</tt></a> start_size = 8) -</pre> - </td> - - <td> - <p>Default constructor, or constructor taking a - <span class="c1"><tt>start_size</tt></span> The policy - will use the sequence of sizes approximately <span class= - "c1"><tt>start_size</tt></span>, <span class= - "c1"><tt>start_size</tt></span> * 2, <span class= - "c1"><tt>start_size</tt></span> * 2^2, ...</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - swap - (<span class= -"c2"><tt>hash_prime_size_policy</tt></span> &other) -</pre> - </td> - - <td> - <p>Swaps content.</p> - </td> - </tr> - </table> - - <h2><a name="link5" id="link5">Protected Methods</a></h2> - - <h3><a name="link6" id="link6">Size methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="#size_type55424436"><tt>size_type</tt></a> - get_nearest_larger_size - (<a href= -"#size_type55424436"><tt>size_type</tt></a> size) <b>const</b> -</pre> - </td> - - <td> - <p>Given a size <span class="c1"><tt>size</tt></span>, - returns a size that is larger.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a href="#size_type55424436"><tt>size_type</tt></a> - get_nearest_smaller_size - (<a href= -"#size_type55424436"><tt>size_type</tt></a> size) <b>const</b> -</pre> - </td> - - <td> - <p>Given a size <span class="c1"><tt>size</tt></span>, - returns a size that is smaller.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test.html b/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test.html 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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> -<title>Tree Text Locality of Reference Timing Test</title> -<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /> -</head> -<body> -<div id="page"> -<h1>Hash-Based Erase Memory-Use Test</h1> -<h2><a name="description" id="description">Description</a></h2> -<p>This test inserts a number of uniform i.i.d. integer keys - into a container, then erases all keys except one. It measures - the final size of the container.</p> -<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/hash_random_int_erase_mem_usage.cc"><tt>hash_random_int_erase_mem_usage.cc</tt></a> - 2000 2000 2100)</p> -<h2><a name="purpose" id="purpose">Purpose</a></h2> -<p>The test checks how containers adjust internally as their - logical size decreases (see <a href="motivation.html#assoc_ers_methods">Motivation::Associative - Containers::Slightly Different Methods::Methods Related to - Erase</a>).</p> -<h2><a name="results" id="results">Results</a></h2> -<p>Figures <a href="#NHG">NHG</a>, <a href="#NHM">NHM</a> and - <a href="#NHL">NHL</a> show the results for the native and - collision-chaining types in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a> and - <a href="assoc_performance_tests.html#local"><u>local</u></a>, - respectively.</p> -<div id="NHG_res_div"> -<div id="NHG_gcc"> -<div id="NHG_hash_random_int_erase_mem_usage_test"> -<div id="NHG_assoc"> -<div id="NHG_Native_456_collision-chaing_456_and_probing_456_hash_random_int_erase_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHG" id="NHG"><img src="hash_random_int_erase_mem_usage_test_gcc.png" alt="no image" /></a></h6>NHG: Native, collision-chaing, and probing, hash random int erase test - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_hash_set_ncah- -<tt>std::tr1::unordered_set</tt> with <tt>cache_hash_code</tt> = <tt><b>false</b></tt></li> -<li> -gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_set- -<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a> - with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="linear_probe_fn.html"><tt>linear_probe_fn</tt></a> -</li> -<li> -cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_set- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/1</i></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NHM_res_div"> -<div id="NHM_msvc"> -<div id="NHM_hash_random_int_erase_mem_usage_test"> -<div id="NHM_assoc"> -<div id="NHM_Native_456_collision-chaing_456_and_probing_456_hash_random_int_erase_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHM" id="NHM"><img src="hash_random_int_erase_mem_usage_test_msvc.png" alt="no image" /></a></h6>NHM: Native, collision-chaing, and probing, hash random int erase test - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_hash_set_ncah- -<tt>stdext::hash_set</tt></li> -<li> -gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_set- -<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a> - with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="linear_probe_fn.html"><tt>linear_probe_fn</tt></a> -</li> -<li> -cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_set- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/1</i></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NHM_res_div"> -<div id="NHM_msvc"> -<div id="NHM_hash_random_int_erase_mem_usage_test"> -<div id="NHM_assoc"> -<div id="NHM_Native_456_collision-chaing_456_and_probing_456_hash_random_int_erase_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHM" id="NHM"><img src="hash_random_int_erase_mem_usage_test_msvc.png" alt="no image" /></a></h6>NHM: Native, collision-chaing, and probing, hash random int erase test - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_hash_set_ncah- -<tt>stdext::hash_set</tt></li> -<li> -gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_set- -<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a> - with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="linear_probe_fn.html"><tt>linear_probe_fn</tt></a> -</li> -<li> -cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_set- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/1</i></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NHL_res_div"> -<div id="NHL_local"> -<div id="NHL_hash_random_int_erase_mem_usage_test"> -<div id="NHL_assoc"> -<div id="NHL_Native_456_collision-chaing_456_and_probing_456_hash_random_int_erase_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHL" id= "NHL"><img src="hash_random_int_erase_mem_usage_test_local.png" alt="no image" /></a></h6>NHL: Native, collision-chaing, and probing, hash random int erase test - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<h2><a name="observations" id="observations">Observations</a></h2> -<p>STL hash-based containers act very differently than trees in - this respect. When erasing numerous keys from an STL - associative-container, the resulting memory user varies greatly - depending on whether the container is tree-based or hash-based. - As noted in <a href="motivation.html#assoc_methods">Motivation::Choice of - Methods</a> , this is a fundamental consequence of the STL's - associative containers' interface, it is not due to a specific - implementation.</p> -<p>(See <a href="priority_queue_text_pop_mem_usage_test.html">Priority Queue - Text <tt>pop</tt> Memory Use Test</a> for a similar phenomenon - regarding priority queues.)</p> -</div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test_gcc.png Binary files differdeleted file mode 100644 index c552506a755..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test_gcc.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 66bb0eb46e2..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test_local.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 8c23d46da39..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test_msvc.png +++ /dev/null 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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> -<title>Hash Random Int Find Timing Test</title> -<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /> -</head> -<body> -<div id="page"> -<h1>Hash-Based Random-Integer <tt>find</tt> Find Timing - Test</h1> -<h2><a name="description" id="description">Description</a></h2> -<p>This test inserts a number of values with uniform i.i.d. - integer keys into a container, then performs a series of finds - using <tt>find</tt>. It measures the average time - for<tt>find</tt> as a function of the number of values - inserted.</p> -<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/random_int_find_timing.cc"><tt>random_int_find_timing_test</tt></a> - 200 200 2100)</p> -<h2><a name="purpose" id="purpose">Purpose</a></h2> -<p>The test checks the effect of different underlying - hash-tables (see <a href="hash_based_containers.html">Design::Associative - Containers::Associative Containers::Hash-Based Containers</a>), - range-hashing functions, and trigger policies (see <a href="hash_based_containers.html#hash_policies">Design::Associative - Containers::Hash-Based Containers::Hash Policies</a> and - <a href="hash_based_containers.html#resize_policies">Design::Associative - Containers::Hash-Based Containers::Resize Policies</a>).</p> -<h2><a name="results" id="results">Results</a></h2> -<p>Figures <a href="#NCCG">NCCG</a>, <a href="#NCCM">NCCM</a>, - and <a href="#NCCL">NCCL</a> show the results for the native - and collision-chaining types in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>MSVC++</u></a>, and - <a href="assoc_performance_tests.html#local"><u>local</u></a>, - respectively; Figures <a href="#NGPG">NGPG</a>, <a href="#NGPM">NGPM</a>, and <a href="#NGPL">NGPL</a> show the results - for the native and probing types in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>MSVC++</u></a>, and - <a href="assoc_performance_tests.html#local"><u>local</u></a> - respectively.</p> -<div id="NCCG_res_div"> -<div id="NCCG_gcc"> -<div id="NCCG_cc_hash_random_int_find_timing_test"> -<div id="NCCG_assoc"> -<div id="NCCG_Native_and_collision-chaining_hash_random_int_find_timing_test_using__tt_find_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NCCG" id="NCCG"><img src="cc_hash_random_int_find_timing_test_gcc.png" alt="no image" /></a></h6>NCCG: Native and collision-chaining hash random int find timing test using <tt>find</tt> - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_hash_map_ncah- -<tt>std::tr1::unordered_map</tt> with <tt>cache_hash_code</tt> = <tt><b>false</b></tt></li> -<li> -cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/1</i></li> -<li> -cc_hash_mod_prime_nea_lc_1div8_1div2_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/1</i></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NCCM_res_div"> -<div id="NCCM_msvc"> -<div id="NCCM_cc_hash_random_int_find_timing_test"> -<div id="NCCM_assoc"> -<div id="NCCM_Native_and_collision-chaining_hash_random_int_find_timing_test_using__tt_find_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NCCM" id="NCCM"><img src="cc_hash_random_int_find_timing_test_msvc.png" alt="no image" /></a></h6>NCCM: Native and collision-chaining hash random int find timing test using <tt>find</tt> - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/1</i></li> -<li> -cc_hash_mod_prime_nea_lc_1div8_1div2_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -<li> -n_hash_map_ncah- -<tt>stdext::hash_map</tt></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/1</i></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NCCL_res_div"> -<div id="NCCL_local"> -<div id="NCCL_cc_hash_random_int_find_timing_test"> -<div id="NCCL_assoc"> -<div id="NCCL_Native_and_collision-chaining_hash_random_int_find_timing_test_using__tt_find_455tt_"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NCCL" id= "NCCL"><img src="cc_hash_random_int_find_timing_test_local.png" alt="no image" /></a></h6>NCCL: Native and collision-chaining hash random int find timing test using <tt>find</tt> - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NGPG_res_div"> -<div id="NGPG_gcc"> -<div id="NGPG_gp_hash_random_int_find_timing_test"> -<div id="NGPG_assoc"> -<div id="NGPG_Native_and_collision-chaining_hash_random_int_find_timing_test_using__tt_find_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NGPG" id="NGPG"><img src="gp_hash_random_int_find_timing_test_gcc.png" alt="no image" /></a></h6>NGPG: Native and collision-chaining hash random int find timing test using <tt>find</tt> - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map- -<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a> - with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> -, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="quadratic_probe_fn.html"><tt>quadratic_probe_fn</tt></a> -</li> -<li> -n_hash_map_ncah- -<tt>std::tr1::unordered_map</tt> with <tt>cache_hash_code</tt> = <tt><b>false</b></tt></li> -<li> -gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_map- -<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a> - with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="linear_probe_fn.html"><tt>linear_probe_fn</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NGPM_res_div"> -<div id="NGPM_msvc"> -<div id="NGPM_gp_hash_random_int_find_timing_test"> -<div id="NGPM_assoc"> -<div id="NGPM_Native_and_collision-chaining_hash_random_int_find_timing_test_using__tt_find_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NGPM" id="NGPM"><img src="gp_hash_random_int_find_timing_test_msvc.png" alt="no image" /></a></h6>NGPM: Native and collision-chaining hash random int find timing test using <tt>find</tt> - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map- -<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a> - with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> -, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="quadratic_probe_fn.html"><tt>quadratic_probe_fn</tt></a> -</li> -<li> -n_hash_map_ncah- -<tt>stdext::hash_map</tt></li> -<li> -gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_map- -<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a> - with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="linear_probe_fn.html"><tt>linear_probe_fn</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NGPL_res_div"> -<div id="NGPL_local"> -<div id="NGPL_gp_hash_random_int_find_timing_test"> -<div id="NGPL_assoc"> -<div id="NGPL_Native_and_collision-chaining_hash_random_int_find_timing_test_using__tt_find_455tt_"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NGPL" id= "NGPL"><img src="gp_hash_random_int_find_timing_test_local.png" alt="no image" /></a></h6>NGPL: Native and collision-chaining hash random int find timing test using <tt>find</tt> - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<h2><a name="observations" id="observations">Observations</a></h2> -<p>In this setting, the choice of underlying hash-table (see - <a href="hash_based_containers.html">Design::Associative - Containers::Hash-Based Containers</a> ) affects performance - most, then the range-hashing scheme (See <a href="hash_based_containers.html#hash_policies">Design::Associative - Containers::Hash-Based Containers::Hash Policies</a> ), and, - only finally, other policies.</p> -<p>When comparing Figures <a href="#NCCG">NCCG</a> and <a href="#NCCM">NCCM</a> to <a href="#NGPG">NGPG</a> and <a href="#NGPM">NGPM</a> , respectively, it is apparent that the - probing containers are less efficient than the - collision-chaining containers (both - <tt>std::tr1::unordered_map</tt> and <tt>stdext::hash_map</tt> - use collision-chaining) in this case.</p> -<p>( <a href="hash_random_int_subscript_insert_timing_test.html">Hash-Based - Random-Integer Subscript Insert Timing Test</a> shows a - different case, where the situation is reversed; <a href="assoc_performance_tests.html#hash_based_types">Observations::Hash-Based - Container Types</a> discusses some further considerations.)</p> -<p>Within each type of hash-table, the range-hashing scheme - affects performance more than other policies; <a href="hash_text_find_find_timing_test.html#observations">Hash-Based - Text <tt>find</tt> Find Timing Test::Observations</a> discusses - this. In Figures <a href="#NCCG">NCCG</a> , <a href="#NCCM">NCCM</a> , <a href="#NGPG">NGPG</a> , and <a href="#NGPM">NGPM</a> , it should be noted that - <tt>std::tr1::unordered_map</tt> and <tt>stdext::hash_map</tt> - are hard-wired currently to mod-based and mask-based schemes, - respectively.</p> -<p><a href="assoc_performance_tests.html#hash_based_types">Observations::Hash-Based - Container Types</a> summarizes some observations on hash-based - containers; <a href="assoc_performance_tests.html#hash_based_policies">Observations::Hash-Based - Containers' Policies</a> summarizes some observations on - hash-based containers' policies.</p> -</div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_subscript_find_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_subscript_find_timing_test.html 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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> -<title>Hash Random Int Subscript Find Timing Test</title> -<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /> -</head> -<body> -<div id="page"> -<h1>Hash-Based Random-Integer <tt><b>operator</b>[]</tt> - FindTiming Test</h1> -<h2><a name="description" id="description">Description</a></h2> -<p>This test inserts a number of values with uniform i.i.d. - integer keys into a container, then performs a series of finds - using <tt><b>operator</b>[]</tt>. It measures the average time - for <tt><b>operator</b>[]</tt> as a function of the number of - values inserted.</p> -<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/random_int_subscript_find_timing.cc"><tt>hash_random_int_subscript_find_timing_test</tt></a> - 200 200 2100)</p> -<h2><a name="purpose" id="purpose">Purpose</a></h2> -<p>The test checks the effect of different underlying - hash-tables (see <a href="hash_based_containers.html">Design::Hash-Based Containers</a> - ), range-hashing functions, and trigger policies (see <a href="hash_based_containers.html#hash_policies">Design::Hash-Based - Containers::Hash Policies</a> and <a href="hash_based_containers.html#resize_policies">Design::Hash-Based - Containers::Resize Policies</a> ).</p> -<h2><a name="results" id="results">Results</a></h2> -<p>Figures <a href="#NCCG">NCCG</a>, <a href="#NCCM">NCCM</a>, - and <a href="#NCCL">NCCL</a> show the results for the native - and collision-chaining types in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>MSVC++</u></a>, and - <a href="assoc_performance_tests.html#local"><u>local</u></a>, - respectively; Figures <a href="#NGPG">NGPG</a>, <a href="#NGPM">NGPM</a>, and <a href="#NGPL">NGPL</a> show the results - for the native and probing types in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>MSVC++</u></a>, and - <a href="assoc_performance_tests.html#local"><u>local</u></a>, - respectively.</p> -<div id="NCCG_res_div"> -<div id="NCCG_gcc"> -<div id="NCCG_cc_hash_random_int_subscript_timing_test_find"> -<div id="NCCG_assoc"> -<div id="NCCG_Native_and_collision-chaining_hash_random_int_find_timing_test_using__tt__b_operator_455b__455tt__457"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NCCG" id="NCCG"><img src="cc_hash_random_int_subscript_timing_test_find_gcc.png" alt="no image" /></a></h6>NCCG: Native and collision-chaining hash random int find timing test using <tt><b>operator</b></tt>[] - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_hash_map_ncah- -<tt>std::tr1::unordered_map</tt> with <tt>cache_hash_code</tt> = <tt><b>false</b></tt></li> -<li> -cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/1</i></li> -<li> -cc_hash_mod_prime_nea_lc_1div8_1div2_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/1</i></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NCCM_res_div"> -<div id="NCCM_msvc"> -<div id="NCCM_cc_hash_random_int_subscript_timing_test_find"> -<div id="NCCM_assoc"> -<div id="NCCM_Native_and_collision-chaining_hash_random_int_find_timing_test_using__tt__b_operator_455b__455tt__457"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NCCM" id="NCCM"><img src="cc_hash_random_int_subscript_timing_test_find_msvc.png" alt="no image" /></a></h6>NCCM: Native and collision-chaining hash random int find timing test using <tt><b>operator</b></tt>[] - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/1</i></li> -<li> -cc_hash_mod_prime_nea_lc_1div8_1div2_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -<li> -n_hash_map_ncah- -<tt>stdext::hash_map</tt></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/1</i></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NCCL_res_div"> -<div id="NCCL_local"> -<div id="NCCL_cc_hash_random_int_subscript_timing_test_find"> -<div id="NCCL_assoc"> -<div id="NCCL_Native_and_collision-chaining_hash_random_int_find_timing_test_using__tt__b_operator_455b__455tt__457"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NCCL" id= "NCCL"><img src="cc_hash_random_int_subscript_timing_test_find_local.png" alt="no image" /></a></h6>NCCL: Native and collision-chaining hash random int find timing test using <tt><b>operator</b></tt>[] - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NGPG_res_div"> -<div id="NGPG_gcc"> -<div id="NGPG_gp_hash_random_int_subscript_timing_test_find"> -<div id="NGPG_assoc"> -<div id="NGPG_Native_and_probing_hash_random_int_find_timing_test_using__tt__b_operator_455b__455tt__457"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NGPG" id="NGPG"><img src="gp_hash_random_int_subscript_timing_test_find_gcc.png" alt="no image" /></a></h6>NGPG: Native and probing hash random int find timing test using <tt><b>operator</b></tt>[] - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_hash_map_ncah- -<tt>std::tr1::unordered_map</tt> with <tt>cache_hash_code</tt> = <tt><b>false</b></tt></li> -<li> -gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map- -<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a> - with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> -, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="quadratic_probe_fn.html"><tt>quadratic_probe_fn</tt></a> -</li> -<li> -gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_map- -<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a> - with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="linear_probe_fn.html"><tt>linear_probe_fn</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NGPM_res_div"> -<div id="NGPM_msvc"> -<div id="NGPM_gp_hash_random_int_subscript_timing_test_find"> -<div id="NGPM_assoc"> -<div id="NGPM_Native_and_probing_hash_random_int_find_timing_test_using__tt__b_operator_455b__455tt__457"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NGPM" id="NGPM"><img src="gp_hash_random_int_subscript_timing_test_find_msvc.png" alt="no image" /></a></h6>NGPM: Native and probing hash random int find timing test using <tt><b>operator</b></tt>[] - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map- -<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a> - with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> -, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="quadratic_probe_fn.html"><tt>quadratic_probe_fn</tt></a> -</li> -<li> -n_hash_map_ncah- -<tt>stdext::hash_map</tt></li> -<li> -gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_map- -<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a> - with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="linear_probe_fn.html"><tt>linear_probe_fn</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NGPL_res_div"> -<div id="NGPL_local"> -<div id="NGPL_gp_hash_random_int_subscript_timing_test_find"> -<div id="NGPL_assoc"> -<div id="NGPL_Native_and_probing_hash_random_int_find_timing_test_using__tt__b_operator_455b__455tt__457"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NGPL" id= "NGPL"><img src="gp_hash_random_int_subscript_timing_test_find_local.png" alt="no image" /></a></h6>NGPL: Native and probing hash random int find timing test using <tt><b>operator</b></tt>[] - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<h2><a name="observations" id="observations">Observations</a></h2> -<p>This test shows similar results to <a href="hash_random_int_find_find_timing_test.html">Hash-Based - Random-Integer <tt>find</tt> Find Timing Test</a> .</p> -</div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_subscript_insert_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/hash_random_int_subscript_insert_timing_test.html 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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> -<title>Hash Random Int Subscript Insert Timing Test</title> -<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /> -</head> -<body> -<div id="page"> -<h1>Hash-Based Random-Integer <tt><b>operator</b>[]</tt> Insert - Timing Test</h1> -<h2><a name="description" id="description">Description</a></h2> -<p>This test inserts a number of values with uniform i.i.d. - integer keys into a container, using - <tt><b>operator</b>[]</tt>. It measures the average time for - <tt><b>operator</b>[]</tt> as a function of the number of - values inserted.</p> -<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/random_int_subscript_insert_timing.cc"><tt>hash_random_int_subscript_insert_timing_test</tt></a> - 200 200 2100)</p> -<h2><a name="purpose" id="purpose">Purpose</a></h2> -<p>The test primarily checks the effect of different underlying - hash-tables (see <a href="hash_based_containers.html">Design::Associative - Containers::Associative Containers::Hash-Based - Containers</a>).</p> -<h2><a name="results" id="results">Results</a></h2> -<p>Figures <a href="#NCCG">NCCG</a>, <a href="#NCCM">NCCM</a>, - and <a href="#NCCL">NCCL</a> show the results for the native - and collision-chaining types in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>MSVC++</u></a>, and - <a href="assoc_performance_tests.html#local"><u>local</u></a>, - respectively; Figures <a href="#NGPG">NGPG</a>, <a href="#NGPM">NGPM</a>, and <a href="#NGPL">NGPL</a> show the results - for the native and probing types in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>, and - <a href="assoc_performance_tests.html#local"><u>local</u></a> - respectively; Figures <a href="#CCGPG">CCGPG</a>, <a href="#CCGPM">CCGPM</a>, and <a href="#CCGPL">CCGPL</a> compare the - results for the collision-chaining and probing types of - <tt>pb_ds</tt> only, in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>MSVC++</u></a>, and - <a href="assoc_performance_tests.html#local"><u>local</u></a> - respectively.</p> -<div id="NCCG_res_div"> -<div id="NCCG_gcc"> -<div id="NCCG_cc_hash_random_int_subscript_timing_test_insert"> -<div id="NCCG_assoc"> -<div id="NCCG_Native_and_collision-chaining_hash_random_int_insert_timing_test_using__tt__b_operator_455b__455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NCCG" id="NCCG"><img src="cc_hash_random_int_subscript_timing_test_insert_gcc.png" alt="no image" /></a></h6>NCCG: Native and collision-chaining hash random int insert timing test using <tt><b>operator</b></tt> - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -cc_hash_mod_prime_nea_lc_1div8_1div2_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -<li> -n_hash_map_ncah- -<tt>std::tr1::unordered_map</tt> with <tt>cache_hash_code</tt> = <tt><b>false</b></tt></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -<li> -cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/1</i></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/1</i></li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NCCM_res_div"> -<div id="NCCM_msvc"> -<div id="NCCM_cc_hash_random_int_subscript_timing_test_insert"> -<div id="NCCM_assoc"> -<div id="NCCM_Native_and_collision-chaining_hash_random_int_insert_timing_test_using__tt__b_operator_455b__455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NCCM" id="NCCM"><img src="cc_hash_random_int_subscript_timing_test_insert_msvc.png" alt="no image" /></a></h6>NCCM: Native and collision-chaining hash random int insert timing test using <tt><b>operator</b></tt> - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_hash_map_ncah- -<tt>stdext::hash_map</tt></li> -<li> -cc_hash_mod_prime_nea_lc_1div8_1div2_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -<li> -cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/1</i></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/1</i></li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NCCL_res_div"> -<div id="NCCL_local"> -<div id="NCCL_cc_hash_random_int_subscript_timing_test_insert"> -<div id="NCCL_assoc"> -<div id="NCCL_Native_and_collision-chaining_hash_random_int_insert_timing_test_using__tt__b_operator_455b__455tt_"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NCCL" id= "NCCL"><img src="cc_hash_random_int_subscript_timing_test_insert_local.png" alt="no image" /></a></h6>NCCL: Native and collision-chaining hash random int insert timing test using <tt><b>operator</b></tt> - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NGPG_res_div"> -<div id="NGPG_gcc"> -<div id="NGPG_gp_hash_random_int_subscript_timing_test_insert"> -<div id="NGPG_assoc"> -<div id="NGPG_Native_and_probing_hash_random_int_insert_timing_test_using__tt__b_operator_455b__455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NGPG" id="NGPG"><img src="gp_hash_random_int_subscript_timing_test_insert_gcc.png" alt="no image" /></a></h6>NGPG: Native and probing hash random int insert timing test using <tt><b>operator</b></tt> - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map- -<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a> - with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> -, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="quadratic_probe_fn.html"><tt>quadratic_probe_fn</tt></a> -</li> -<li> -n_hash_map_ncah- -<tt>std::tr1::unordered_map</tt> with <tt>cache_hash_code</tt> = <tt><b>false</b></tt></li> -<li> -gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_map- -<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a> - with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="linear_probe_fn.html"><tt>linear_probe_fn</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NGPM_res_div"> -<div id="NGPM_msvc"> -<div id="NGPM_gp_hash_random_int_subscript_timing_test_insert"> -<div id="NGPM_assoc"> -<div id="NGPM_Native_and_probing_hash_random_int_insert_timing_test_using__tt__b_operator_455b__455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NGPM" id="NGPM"><img src="gp_hash_random_int_subscript_timing_test_insert_msvc.png" alt="no image" /></a></h6>NGPM: Native and probing hash random int insert timing test using <tt><b>operator</b></tt> - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_hash_map_ncah- -<tt>stdext::hash_map</tt></li> -<li> -gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map- -<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a> - with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> -, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="quadratic_probe_fn.html"><tt>quadratic_probe_fn</tt></a> -</li> -<li> -gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_map- -<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a> - with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="linear_probe_fn.html"><tt>linear_probe_fn</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NGPL_res_div"> -<div id="NGPL_local"> -<div id="NGPL_gp_hash_random_int_subscript_timing_test_insert"> -<div id="NGPL_assoc"> -<div id="NGPL_Native_and_probing_hash_random_int_insert_timing_test_using__tt__b_operator_455b__455tt_"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NGPL" id= "NGPL"><img src="gp_hash_random_int_subscript_timing_test_insert_local.png" alt="no image" /></a></h6>NGPL: Native and probing hash random int insert timing test using <tt><b>operator</b></tt> - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="CCGPG_res_div"> -<div id="CCGPG_gcc"> -<div id="CCGPG_ccgp_hash_random_int_subscript_timing_test_insert"> -<div id="CCGPG_assoc"> -<div id="CCGPG_Collision-chaining_and_probing_hash_random_int_insert_timing_test_using__tt__b_operator_455b__455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="CCGPG" id="CCGPG"><img src="ccgp_hash_random_int_subscript_timing_test_insert_gcc.png" alt="no image" /></a></h6>CCGPG: Collision-chaining and probing hash random int insert timing test using <tt><b>operator</b></tt> - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map- -<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a> - with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> -, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="quadratic_probe_fn.html"><tt>quadratic_probe_fn</tt></a> -</li> -<li> -cc_hash_mod_prime_nea_lc_1div8_1div2_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -<li> -gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_map- -<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a> - with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="linear_probe_fn.html"><tt>linear_probe_fn</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="CCGPM_res_div"> -<div id="CCGPM_msvc"> -<div id="CCGPM_ccgp_hash_random_int_subscript_timing_test_insert"> -<div id="CCGPM_assoc"> -<div id="CCGPM_Collision-chaining_and_probing_hash_random_int_insert_timing_test_using__tt__b_operator_455b__455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="CCGPM" id="CCGPM"><img src="ccgp_hash_random_int_subscript_timing_test_insert_msvc.png" alt="no image" /></a></h6>CCGPM: Collision-chaining and probing hash random int insert timing test using <tt><b>operator</b></tt> - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -cc_hash_mod_prime_nea_lc_1div8_1div2_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -<li> -gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map- -<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a> - with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> -, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="quadratic_probe_fn.html"><tt>quadratic_probe_fn</tt></a> -</li> -<li> -gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_map- -<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a> - with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="linear_probe_fn.html"><tt>linear_probe_fn</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="CCGPL_res_div"> -<div id="CCGPL_local"> -<div id="CCGPL_ccgp_hash_random_int_subscript_timing_test_insert"> -<div id="CCGPL_assoc"> -<div id="CCGPL_Collision-chaining_and_probing_hash_random_int_insert_timing_test_using__tt__b_operator_455b__455tt_"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="CCGPL" id= "CCGPL"><img src="ccgp_hash_random_int_subscript_timing_test_insert_local.png" alt="no image" /></a></h6>CCGPL: Collision-chaining and probing hash random int insert timing test using <tt><b>operator</b></tt> - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<h2><a name="observations" id="observations">Observations</a></h2> -<p>In this setting, as in <a href="hash_text_find_find_timing_test.html">Hash-Based Text - <tt>find</tt> Find Timing Test</a> and <a href="hash_random_int_find_find_timing_test.html">Hash-Based - Random-Integer <tt>find</tt> Find Timing Test</a> , the choice - of underlying hash-table underlying hash-table (see <a href="hash_based_containers.html">Design::Associative - Containers::Hash-Based Containers</a> ) affects performance - most, then the range-hashing scheme (See <a href="hash_based_containers.html#hash_policies">Design::Associative - Containers::Hash-Based Containers::Hash Policies</a> ), and, - only finally, other policies.</p> -<p>There are some differences, however:</p> -<ol> -<li>In this setting, probing tables function sometimes more - efficiently than collision-chaining tables (see Figures - <a href="#CCGPG">CCGPG</a> and <a href="#CCGPM">CCGPM</a> ). - This is explained shortly.</li> -<li>The performance graphs have a "saw-tooth" shape. The - average insert time rises and falls. As values are inserted - into the container, the load factor grows larger. Eventually, - a resize occurs. The reallocations and rehashing are - relatively expensive. After this, the load factor is smaller - than before.</li> -</ol> -<p>Collision-chaining containers use indirection for greater - flexibility; probing containers store values contiguously, in - an array (see Figure <a href="motivation.html#different_underlying_data_structures">Motivation::Different - underlying data structures</a> A and B, respectively). It - follows that for simple data types, probing containers access - their allocator less frequently than collision-chaining - containers, (although they still have less efficient probing - sequences). This explains why some probing containers fare - better than collision-chaining containers in this case.</p> -<p>Within each type of hash-table, the range-hashing scheme - affects performance more than other policies. This is similar - to the situation in <a href="hash_text_find_find_timing_test.html">Hash-Based Text - <tt>find</tt> Find Timing Test</a> and <a href="hash_random_int_find_find_timing_test.html">Hash-Based - Random-Integer <tt>find</tt> Find Timing Test</a>. - Unsurprisingly, however, containers with <u>lower</u> -<i>alpha<sub>max</sub></i> perform <u>worse</u> in this case, - since more re-hashes are performed.</p> -<p><a href="assoc_performance_tests.html#hash_based_types">Observations::Hash-Based - Container Types</a> summarizes some observations on hash-based - containers; <a href="assoc_performance_tests.html#hash_based_policies">Observations::Hash-Based - Containers' Policies</a> summarizes some observations on - hash-based containers' policies.</p> -</div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>hash_standard_resize_policy Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>hash_standard_resize_policy</tt> Interface</h1> - - <p>A resize policy which delegates operations to size and - trigger policies.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/hash_policy.hpp"><tt>hash_policy.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Template Parameters</a></h2> - - <table class="c1" width="100%" border="1" summary= - "Template Parameters"> - <tr> - <td width="20%" align="left"><b>Parameter</b></td> - - <td width="50%" align="left"><b>Description</b></td> - - <td width="30%" align="left"><b>Default Value</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="Size_Policy1072992366" id= -"Size_Policy1072992366"><b>class</b> Size_Policy </a> -</pre> - </td> - - <td> - <p>Size policy type.</p> - </td> - - <td><a href= - "hash_exponential_size_policy.html"><span class="c2"><tt>hash_exponential_size_policy</tt></span></a></td> - </tr> - - <tr> - <td> - <pre> -<a name="Trigger_Policy3611271815" id= -"Trigger_Policy3611271815"><b>class</b> Trigger_Policy </a> -</pre> - </td> - - <td> - <p>Trigger policy type.</p> - </td> - - <td><a href= - "hash_load_check_resize_trigger.html"><span class= - "c2"><tt>hash_load_check_resize_trigger</tt></span></a></td> - </tr> - - <tr> - <td> - <pre> -<a name="External_Size_Access1380482982" id= -"External_Size_Access1380482982"><b>bool</b> External_Size_Access </a> -</pre> - </td> - - <td> - <p>Indicates whether physical sizes can be accessed - externally.</p> - </td> - - <td><tt><b>false</b></tt></td> - </tr> - - <tr> - <td> - <pre> -<a name="Size_Type42920436" id= -"Size_Type42920436"><b>typename</b> Size_Type </a> -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - - <td>size_t</td> - </tr> - </table> - - <h2><a name="link2" id="link2">Base Classes</a></h2> - - <table class="c1" width="100%" border="1" summary="Bases"> - <tr> - <td width="80%" align="left"><b>Class</b></td> - - <td width="20%" align="left"><b>Derivation Type</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="#Size_Policy1072992366"><tt>Size_Policy</tt></a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a href="#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - </table> - - <h2><a name="link3" id="link3">Public Types and - Constants</a></h2> - - <h3><a name="link4" id="link4">General Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="size_type55424436" id="size_type55424436">size_type</a> -</pre> - </td> - - <td> - <pre> -<a href="#Size_Type42920436"><tt>Size_Type</tt></a> -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - </tr> - </table> - - <h3><a name="link5" id="link5">Policy Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="trigger_policy4019166151" id= -"trigger_policy4019166151">trigger_policy</a> -</pre> - </td> - - <td> - <pre> -<a href="#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a> -</pre> - </td> - - <td> - <p>Trigger policy type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="size_policy1385592366" id= -"size_policy1385592366">size_policy</a> -</pre> - </td> - - <td> - <pre> -<a href="#Size_Policy1072992366"><tt>Size_Policy</tt></a> -</pre> - </td> - - <td> - <p>Size policy type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="external_size_access4043083014" id= -"external_size_access4043083014">external_size_access</a> -</pre> - </td> - - <td> - <pre> -<a href= -"#External_Size_Access1380482982"><tt>External_Size_Access</tt></a> -</pre> - </td> - - <td> - <p>Indicates whether sizes can be accessed - externally.</p> - </td> - </tr> - </table> - - <h2><a name="link6" id="link6">Public Methods</a></h2> - - <h3><a name="link7" id="link7">Constructors, Destructor, and - Related</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> - hash_standard_resize_policy - () -</pre> - </td> - - <td> - <p>Default constructor.</p> - </td> - </tr> - - <tr> - <td> - <pre> - hash_standard_resize_policy - (<b>const</b> <a href= -"#Size_Policy1072992366"><tt>Size_Policy</tt></a> &r_size_policy) -</pre> - </td> - - <td> - <p>constructor taking some policies <span class= - "c1"><tt>r_size_policy</tt></span> will be copied by the - <a href="#Size_Policy1072992366"><tt>Size_Policy</tt></a> - object of this object.</p> - </td> - </tr> - - <tr> - <td> - <pre> - hash_standard_resize_policy - (<b>const</b> <a href= -"#Size_Policy1072992366"><tt>Size_Policy</tt></a> &r_size_policy, - <b>const</b> <a href= -"#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a> &r_trigger_policy) -</pre> - </td> - - <td> - <p>constructor taking some policies. <span class= - "c1"><tt>r_size_policy</tt></span> will be copied by the - <a href="#Size_Policy1072992366"><tt>Size_Policy</tt></a> - object of this object. <span class= - "c1"><tt>r_trigger_policy</tt></span> will be copied by - the <a href= - "#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a> - object of this object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> - ~hash_standard_resize_policy - () -</pre> - </td> - - <td> - <p>Destructor.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - swap - (<span class= -"c2"><tt>hash_standard_resize_policy</tt></span> &other) -</pre> - </td> - - <td> - <p>Swaps content.</p> - </td> - </tr> - </table> - - <h3><a name="link8" id="link8">Policy Access Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="#Size_Policy1072992366"><tt>Size_Policy</tt></a> & - get_size_policy - () -</pre> - </td> - - <td> - <p>Access to the <a href= - "#Size_Policy1072992366"><tt>Size_Policy</tt></a> object - used.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>const</b> <a href= -"#Size_Policy1072992366"><tt>Size_Policy</tt></a> & - get_size_policy - () <b>const</b> -</pre> - </td> - - <td> - <p>Const access to the <a href= - "#Size_Policy1072992366"><tt>Size_Policy</tt></a> object - used.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a href= -"#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a> & - get_trigger_policy - () -</pre> - </td> - - <td> - <p>Access to the <a href= - "#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a> - object used.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>const</b> <a href= -"#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a> & - get_trigger_policy - () <b>const</b> -</pre> - </td> - - <td> - <p>Access to the <a href= - "#Trigger_Policy3611271815"><tt>Trigger_Policy</tt></a> - object used.</p> - </td> - </tr> - </table> - - <h3><a name="link9" id="link9">Size Access Methods</a></h3> - - <p>These methods are available only if the external size - parameter indicates that external size access is allowed.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a> - get_actual_size - () <b>const</b> -</pre> - </td> - - <td> - <p>Returns the actual size of the container.</p> - - <p>This method returns the number of entries (used and - unused) in the container. It is different from the - container's size method, which returns the number of used - entries. Calling this method will not compile when - <a href= - "#External_Size_Access1380482982"><tt>External_Size_Access</tt></a> - == <tt><b>false</b></tt>.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - resize - (<a href= -"#size_type55424436"><tt>size_type</tt></a> suggested_new_size) -</pre> - </td> - - <td> - <p>Resizes the container to <span class= - "c1"><tt>suggested_new_size</tt></span>, a suggested size - (the actual size will be determined by the <a href= - "#Size_Policy1072992366"><tt>Size_Policy</tt></a> - object).</p> - - <p>Calling this method will not compile when <a href= - "#External_Size_Access1380482982"><tt>External_Size_Access</tt></a> - == <tt><b>false</b></tt>.</p> - </td> - </tr> - </table> - - <h2><a name="link10" id="link10">Protected Methods</a></h2> - - <h3><a name="link11" id="link11">Insert Search - Notifications.</a></h3> - - <p>Notifications called during an insert operation.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_insert_search_start - () -</pre> - </td> - - <td> - <p>Notifies a search started.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_insert_search_collision - () -</pre> - </td> - - <td> - <p>Notifies a search encountered a collision.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_insert_search_end - () -</pre> - </td> - - <td> - <p>Notifies a search ended.</p> - </td> - </tr> - </table> - - <h3><a name="link12" id="link12">Find Search - Notifications.</a></h3> - - <p>Notifications called during a find operation.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_find_search_start - () -</pre> - </td> - - <td> - <p>Notifies a search started.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_find_search_collision - () -</pre> - </td> - - <td> - <p>Notifies a search encountered a collision.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_find_search_end - () -</pre> - </td> - - <td> - <p>Notifies a search ended.</p> - </td> - </tr> - </table> - - <h3><a name="link13" id="link13">Erase Search - Notifications.</a></h3> - - <p>Notifications called during an insert operation.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_erase_search_start - () -</pre> - </td> - - <td> - <p>Notifies a search started.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_erase_search_collision - () -</pre> - </td> - - <td> - <p>Notifies a search encountered a collision.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_erase_search_end - () -</pre> - </td> - - <td> - <p>Notifies a search ended.</p> - </td> - </tr> - </table> - - <h3><a name="link14" id="link14">Content Change - Notifications</a></h3> - - <p>Notifications called when the content of the table changes - in a way that can affect the resize policy.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_inserted - (<a href="#size_type55424436"><tt>size_type</tt></a> num_e) -</pre> - </td> - - <td> - <p>Notifies an element was inserted.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_erased - (<a href="#size_type55424436"><tt>size_type</tt></a> num_e) -</pre> - </td> - - <td> - <p>Notifies an element was erased.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - notify_cleared - () -</pre> - </td> - - <td> - <p>Notifies the table was cleared.</p> - </td> - </tr> - </table> - - <h3><a name="link15" id="link15">Size Change - Notifications</a></h3> - - <p>Notifications called when the table changes size.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - notify_resized - (<a href="#size_type55424436"><tt>size_type</tt></a> new_size) -</pre> - </td> - - <td> - <p>Notifies the table was resized to <span class= - "c1"><tt>new_size</tt></span>.</p> - </td> - </tr> - </table> - - <h3><a name="link16" id="link16">Queries</a></h3> - - <p>Called to query whether/how to resize.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>bool</b> - is_resize_needed - () <b>const</b> -</pre> - </td> - - <td> - <p>Queries whether a resize is needed.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a href="#size_type55424436"><tt>size_type</tt></a> - get_new_size - (<a href="#size_type55424436"><tt>size_type</tt></a> size, - <a href= -"#size_type55424436"><tt>size_type</tt></a> num_used_e) <b>const</b> -</pre> - </td> - - <td> - <p>Queries what the new <span class= - "c1"><tt>size</tt></span> should be, when the container - is resized naturally. The current size of the container - is <span class="c1"><tt>size</tt></span>, and the number - of used entries within the container is <span class= - "c1"><tt>num_used_e</tt></span>.</p> - </td> - </tr> - </table> - - <h2><a name="link17" id="link17">Private Methods</a></h2> - - <h3><a name="link18" id="link18">Overrides</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> <b>void</b> - do_resize - (<a href="#size_type55424436"><tt>size_type</tt></a> new_size) -</pre> - </td> - - <td> - <p>Resizes to <span class= - "c1"><tt>new_size</tt></span>.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_text_find_find_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/hash_text_find_find_timing_test.html 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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> -<title>Hash Text Find Timing Test</title> -<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /> -</head> -<body> -<div id="page"> -<h1>Hash-Based Text <tt>find</tt> Find Timing Test</h1> -<h2><a name="description" id="description">Description</a></h2> -<p>This test inserts a number of values with keys from an - arbitrary text ([ <a href="references.html#wickland96thirty">wickland96thirty</a> ]) into - a container, then performs a series of finds using - <tt>find</tt> . It measures the average time for <tt>find</tt> - as a function of the number of values inserted.</p> -<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/text_find_timing.cc"><tt>text_find_timing_test</tt></a> - thirty_years_among_the_dead_preproc.txt 200 200 2100)</p> -<h2><a name="purpose" id="purpose">Purpose</a></h2> -<p>The test checks the effect of different range-hashing - functions, trigger policies, and cache-hashing policies (see - <a href="hash_based_containers.html#hash_policies">Design::Associative - Containers::Associative Containers::Hash-Based Containers::Hash - Policies</a> and <a href="hash_based_containers.html#resize_policies">Design::Associative - Containers::Hash-Based Containers::Resize Policies</a> ).</p> -<h2><a name="results" id="results">Results</a></h2> -<p>Figures <a href="#NCCG">NCCG</a>, <a href="#NCCM">NCCM</a> - and <a href="#NCCL">NCCL</a> show the results for the native - and collision-chaining types in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>, and - <a href="assoc_performance_tests.html#local"><u>local</u></a>, - respetively.</p> -<div id="NCCG_res_div"> -<div id="NCCG_gcc"> -<div id="NCCG_text_find_timing_test_hash"> -<div id="NCCG_assoc"> -<div id="NCCG_Native_and_collision-chaining_hash_text_find_timing_test_using__tt_find_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NCCG" id="NCCG"><img src="text_find_timing_test_hash_gcc.png" alt="no image" /></a></h6>NCCG: Native and collision-chaining hash text find timing test using <tt>find</tt> - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_hash_map_ncah- -<tt>std::tr1::unordered_map</tt> with <tt>cache_hash_code</tt> = <tt><b>false</b></tt></li> -<li> -cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/1</i></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_sth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/1</i></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NCCM_res_div"> -<div id="NCCM_msvc"> -<div id="NCCM_text_find_timing_test_hash"> -<div id="NCCM_assoc"> -<div id="NCCM_Native_and_collision-chaining_hash_text_find_timing_test_using__tt_find_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NCCM" id="NCCM"><img src="text_find_timing_test_hash_msvc.png" alt="no image" /></a></h6>NCCM: Native and collision-chaining hash text find timing test using <tt>find</tt> - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_hash_map_ncah- -<tt>stdext::hash_map</tt></li> -<li> -cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/1</i></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/1</i></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_sth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NCCL_res_div"> -<div id="NCCL_local"> -<div id="NCCL_text_find_timing_test_hash"> -<div id="NCCL_assoc"> -<div id="NCCL_Native_and_collision-chaining_hash_text_find_timing_test_using__tt_find_455tt_"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NCCL" id= "NCCL"><img src="text_find_timing_test_hash_local.png" alt="no image" /></a></h6>NCCL: Native and collision-chaining hash text find timing test using <tt>find</tt> - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<h2><a name="observations" id="observations">Observations</a></h2> -<p>In this setting, the range-hashing scheme (See <a href="hash_based_containers.html#hash_policies">Design::Associative - Containers::Hash-Based Containers::Hash Policies</a> ) affects - performance more than other policies. As Figure <a href="#NCCG">NCCG</a> shows, containers using mod-based - range-hashing (including the native hash-based container, which - is currently hard-wired to this scheme) have lower performance - than those using mask-based range-hashing. A modulo-based - range-hashing scheme's main benefit is that it takes into - account all hash-value bits. Standard string hash-functions are - designed to create hash values that are nearly-uniform as is [ - <a href="references.html#knuth98sorting">knuth98sorting</a> - ].</p> -<p>Trigger policies (see <a href="hash_based_containers.html#resize_policies">Design::Associative - Containers::Hash-Based Containers::Resize Policies</a> ), - <i>i.e.</i> the load-checks constants, affect performance to a - lesser extent.</p> -<p>Perhaps surprisingly, storing the hash value alongside each - entry affects performance only marginally, at least in - <tt>pb_ds</tt> 's implementation. (Unfortunately, it was not - possible to run the tests with <tt>std::tr1::unordered_map</tt> - 's <tt>cache_hash_code = <b>true</b></tt> , as it appeared to - malfuntion.)</p> -<p><a href="assoc_performance_tests.html#hash_based_policies">Observations::Hash-Based - Containers' Policies</a> summarizes some observations on - hash-based containers' policies.</p> -</div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_zlob_random_int_find_find_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/hash_zlob_random_int_find_find_timing_test.html 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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> -<title>Hash Skewed Distribution Memory Use Test</title> -<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /> -</head> -<body> -<div id="page"> -<h1>Hash-Based Skewed-Distribution Random-Integer <tt>find</tt> - Find Timing Test</h1> -<h2><a name="description" id="description">Description</a></h2> -<p>This test inserts a number of values with a markedly - non-uniform i.i.d. integer keys into a container, then performs - a series of finds using <tt>find</tt> . It measures the average - time for <tt>find</tt> as a function of the number of values in - the containers. The keys are generated as follows. First, a - uniform integer is created; it is then shifted left 8 bits.</p> -<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/hash_zlob_random_int_find_timing.cc"><tt>hash_zlob_random_int_find_timing_test</tt></a> - 200 200 2100)</p> -<h2><a name="purpose" id="purpose">Purpose</a></h2> -<p>The test checks the effect of different range-hashing - functions and trigger policies (see <a href="hash_based_containers.html#hash_policies">Design::Associative - Containers::Hash-Based Containers::Hash Policies</a> and - <a href="hash_based_containers.html#resize_policies">Design::Associative - Containers::Hash-Based Containers::Resize Policies</a>).</p> -<h2><a name="results" id="results">Results</a></h2> -<p>Figures <a href="#NHG">NHG</a>, <a href="#NHM">NHM</a>, and - <a href="#NHL">NHL</a> show the results for various hash-based - associative-containers in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>MSVC++</u></a>, and - <a href="assoc_performance_tests.html#local"><u>local</u></a>, - respectively.</p> -<div id="NHG_res_div"> -<div id="NHG_gcc"> -<div id="NHG_hash_zlob_random_int_find_timing_test"> -<div id="NHG_assoc"> -<div id="NHG_Skewed-distribution_random_int_find_timing_test_using__tt_find_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHG" id="NHG"><img src="hash_zlob_random_int_find_timing_test_gcc.png" alt="no image" /></a></h6>NHG: Skewed-distribution random int find timing test using <tt>find</tt> - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/1</i></li> -<li> -gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map- -<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a> - with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> -, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="quadratic_probe_fn.html"><tt>quadratic_probe_fn</tt></a> -</li> -<li> -n_hash_map_ncah- -<tt>std::tr1::unordered_map</tt> with <tt>cache_hash_code</tt> = <tt><b>false</b></tt></li> -<li> -cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/1</i></li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NHM_res_div"> -<div id="NHM_msvc"> -<div id="NHM_hash_zlob_random_int_find_timing_test"> -<div id="NHM_assoc"> -<div id="NHM_Skewed-distribution_random_int_find_timing_test_using__tt_find_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHM" id="NHM"><img src="hash_zlob_random_int_find_timing_test_msvc.png" alt="no image" /></a></h6>NHM: Skewed-distribution random int find timing test using <tt>find</tt> - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_hash_map_ncah- -<tt>stdext::hash_map</tt></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/1</i></li> -<li> -gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map- -<a href="gp_hash_table.html"><tt>gp_hash_table</tt></a> - with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> -, <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, and <tt>Probe_Fn</tt> = <a href="quadratic_probe_fn.html"><tt>quadratic_probe_fn</tt></a> -</li> -<li> -cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/1</i></li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NHL_res_div"> -<div id="NHL_local"> -<div id="NHL_hash_zlob_random_int_find_timing_test"> -<div id="NHL_assoc"> -<div id="NHL_Skewed-distribution_random_int_find_timing_test_using__tt_find_455tt_"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHL" id= "NHL"><img src="hash_zlob_random_int_find_timing_test_local.png" alt="no image" /></a></h6>NHL: Skewed-distribution random int find timing test using <tt>find</tt> - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<h2><a name="observations" id="observations">Observations</a></h2> -<p>In this setting, the keys' distribution is so skewed that - the unerlying hash-table type affects performance marginally. - (This is in contrast with <a href="hash_text_find_find_timing_test.html">Hash-Based Text - <tt>find</tt> Find Timing Test</a> , <a href="hash_random_int_find_find_timing_test.html">Hash-Based - Random-Integer <tt>find</tt> Find Timing Test</a> , <a href="hash_random_int_subscript_find_timing_test.html">Hash-Based - Random-Integer Subscript Find Timing Test</a> and <a href="hash_random_int_subscript_insert_timing_test.html">Hash-Based - Random-Integer Subscript Insert Timing Test</a> .)</p> -<p>The range-hashing scheme affects performance dramatically. A - mask-based range-hashing scheme effectively maps all values - into the same bucket. Access degenerates into a search within - an unordered linked-list. In Figures <a href="#NHG">NHG</a> and - <a href="#NHM">NHM</a> , it should be noted that - <tt>std::tr1::unordered_map</tt> and <tt>stdext::hash_map</tt> - are hard-wired currently to mod-based and mask-based schemes, - respectively.</p> -<p>When observing the settings of this test, it is apparent - that the keys' distribution is far from natural. One might ask - if the test is not contrived to show that, in some cases, - mod-based range hashing does better than mask-based range - hashing. This is, in fact just the case. We did not encounter a - more natural case in which mod-based range hashing is better. - In our opnion, real-life key distributions are handled better - with an appropriate hash function and a mask-based - range-hashing function. (<a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/hash_shift_mask.cc"><tt>shift_mask.cc</tt></a> - shows an example of handling this a-priori known skewed - distribution with a mask-based range-hashing function). If hash - performance is bad, a <i>Χ<sup>2</sup></i> test can be used - to check how to transform it into a more uniform - distribution.</p> -<p>For this reason, <tt>pb_ds</tt>'s default range-hashing - function is mask-based.</p> -<p><a href="assoc_performance_tests.html#hash_based_types">Observations::Hash-Based - Container Types</a> summarizes some observations on hash-based - containers; <a href="assoc_performance_tests.html#hash_based_policies">Observations::Hash-Based - Containers' Policies</a> summarizes some observations on - hash-based containers' policies.</p> -</div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_zlob_random_int_find_timing_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/hash_zlob_random_int_find_timing_test_gcc.png Binary files differdeleted file mode 100644 index 8d170db1a2a..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/hash_zlob_random_int_find_timing_test_gcc.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 81848ba8b2e..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/hash_zlob_random_int_find_timing_test_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_zlob_random_int_find_timing_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/hash_zlob_random_int_find_timing_test_msvc.png Binary files differdeleted file mode 100644 index 874e7a780e6..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/hash_zlob_random_int_find_timing_test_msvc.png +++ /dev/null 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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>Policy-Based Data Structures</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1>Policy-Based Data Structures</h1> - - <h5>Ami Tavory and Vladimir Dreizin, IBM Haifa Research - Laboratories, and Benjamin Kosnik, Red Hat</h5> - - <h5><a href="mailto:pbassoc@gmail.com">pbassoc@gmail.com</a></h5> - - <p>This is a library of policy-based elementary - data structures: associative containers and priority queues. It - is designed for high-performance, flexibility, semantic safety, - and conformance to the corresponding containers in <tt>std</tt> - and std::tr1 (except for some points where it differs by - design).</p> - - <p>The documentation is organized as follows:</p> - - <ol> - <li> - <a href="introduction.html">Introductory</a> - - <ol> - <li><a href="introduction.html">Introduction</a></li> - - <li><a href="motivation.html">Motivation</a></li> - - <li><a href="prerequisites.html">Usage - Prerequisites</a></li> - </ol> - </li> - - <li> - <a href="interface.html">Interface</a> - - <ol> - <li><a href="tutorial.html">Short Tutorial</a></li> - - <li><a href="concepts.html">Concepts</a></li> - - <li><a href="interface.html">Specifics</a></li> - </ol> - </li> - - <li> - <a href="design.html">Design</a> - - <ol> - <li> - <a href="assoc_design.html">Associative Containers</a> - - <ol> - <li><a href="ds_gen.html">Data-Structure - Genericity and Interface</a> </li> - - <li><a href="tree_based_containers.html">Tree-Based - Containers</a></li> - - <li><a href="trie_based_containers.html">Trie-Based - Containers</a></li> - - <li><a href="hash_based_containers.html">Hash-Based - Containers</a></li> - - <li><a href="lu_based_containers.html">List-Based - Containers</a> </li> - </ol> - </li> - - <li><a href="pq_design.html">Priority Queues</a></li> - </ol> - </li> - - <li> - <a href="examples.html">Examples</a> - - <ol> - <li><a href="assoc_examples.html">Associative - Containers</a></li> - - <li><a href="pq_examples.html">Priority Queues</a></li> - </ol> - </li> - - <li> - <a href="tests.html">Tests</a> - - <ol> - <li> - <a href="assoc_tests.html">Associative Containers</a> - - <ol> - <li><a href="assoc_regression_tests.html">Regression - Tests</a></li> - - <li><a href= - "assoc_performance_tests.html">Performance - Tests</a></li> - </ol> - </li> - - <li> - <a href="pq_tests.html">Priority Queues</a> - - <ol> - <li><a href="pq_regression_tests.html">Regression - Tests</a></li> - - <li><a href="pq_performance_tests.html">Performance - Tests</a></li> - </ol> - </li> - </ol> - </li> - - <li> - <a href="misc.html">Misc.</a> - - <ol> - <li><a href="acks.html">Acknowledgments</a></li> - - <li><a href="contact.html">Contact</a></li> - - <li><a href="disclaimer.html">Disclaimer and - Copyright</a></li> - - <li><a href="references.html">References</a></li> - </ol> - </li> - </ol> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/insert_error.html b/libstdc++-v3/doc/html/ext/pb_ds/insert_error.html deleted file mode 100644 index 37a89aaf9e0..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/insert_error.html +++ /dev/null @@ -1,53 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - -<title>insert_error Interface</title> -<meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> -</head> - -<body> -<div id="page"> -<h1><tt>insert_error</tt> Interface</h1> - -<p>An entry cannot be inserted into a container object for logical -reasons (not, e.g., if memory is unavailable, in which case the -allocator's exception will be thrown).</p> - - <p>This exception may be thrown, e.g., when a probe sequence in - a probing hash table does not encounter any free positions, - even though free positions are available.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/exception.hpp"><tt>exception.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Base Classes</a></h2> - - <table class="c1" width="100%" border="1" summary="Bases"> - <tr> - <td width="80%" align="left"><b>Class</b></td> - - <td width="20%" align="left"><b>Derivation Type</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="exceptions.html"><span class= -"c2"><tt>insert_error</tt></span></a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/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 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - -<title>Interface</title> -<meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> -</head> - -<body> -<div id="page"> -<h1>Interface Specifics</h1> - -<p>Following are the library's interface specifics. <a href= - "tutorial.html">Short Tutorial</a> is a short tutorial, and - <a href="concepts.html">Concepts</a> describes some - concepts.</p> - <hr /> - - <h2><a name="namespaces" id="namespaces">Namespace</a></h2> - - <p>All code is enclosed in namespace <tt>pb_ds</tt>. Nested within - this is namespace <tt>detail</tt>, which contains the parts of this - library that are considered implementation details.</p> - <hr /> - - <h2><a name="containers" id="containers">Containers</a></h2> - - <h3><a name="containers_assoc" id= - "containers_assoc">Associative Containers</a></h3> - - <ol> - <li><a href= - "container_base.html"><tt>container_base</tt></a> - - abstract base class for associative containers.</li> - - <li>Hash-based: - - <ol> - <li><a href= - "basic_hash_table.html"><tt>basic_hash_table</tt></a> - - abstract base class for hash-based - containers</li> - - <li><a href= - "cc_hash_table.html"><tt>cc_hash_table</tt></a> - - concrete collision-chaining hash-based - containers</li> - - <li><a href= - "gp_hash_table.html"><tt>gp_hash_table</tt></a> - - concrete (general) probing hash-based - containers</li> - </ol> - </li> - - <li>Tree-based: - - <ol> - <li><a href= - "basic_tree.html"><tt>basic_tree</tt></a> - - abstract base class for tree and trie based - containers</li> - - <li><a href= - "tree.html"><tt>tree</tt></a> - - concrete base class for tree-based - containers</li> - - <li><a href= - "trie.html"><tt>trie</tt></a> - - concrete base class for trie-based - containers</li> - </ol> - </li> - - <li>List-based: - - <ol> - <li><a href= - "list_update.html"><tt>list_update</tt></a> - - singly-linked list with update-policy container</li> - </ol> - </li> - </ol> - - <h3><a name="containers_pq" id="containers_pq">Priority - Queues</a></h3> - - <ol> - <li><a href="priority_queue.html"><tt>priority_queue</tt></a> - - priority queue</li> - </ol> - <hr /> - - <h2><a name="tag" id="tag">Container Tags and - Traits</a></h2> - - <h3><a name="ds_ts" id="ds_ts">Container Tags</a></h3> - - <h4><a name="ds_ts_common" id="ds_ts_common">Common</a></h4> - - <ol> - <li><a href="container_tag.html"><tt>container_tag</tt></a> - - base class for data structure tags</li> - </ol> - - <h4><a name="ds_ts_assoc" id= - "ds_ts_assoc">Associative-Containers</a></h4> - - <ol> - <li><a href= - "associative_container_tag.html"><tt>associative_container_tag</tt></a> - - base class for associative-container data structure tags</li> - - <li><a href= - "basic_hash_tag.html"><tt>basic_hash_tag</tt></a> - - base class for hash-based structure tags</li> - - <li><a href="cc_hash_tag.html"><tt>cc_hash_tag</tt></a> - - collision-chaining hash structure tag</li> - - <li><a href="gp_hash_tag.html"><tt>gp_hash_tag</tt></a> - - (general) probing hash structure tag</li> - - <li><a href= - "basic_tree_tag.html"><tt>basic_tree_tag</tt></a> - - base class for tree-like structure tags</li> - - <li><a href= - "tree_tag.html"><tt>tree_tag</tt></a> - - base class for tree structure tags</li> - - <li><a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> - - red-black tree structure tag/li></li> - - <li><a href= - "splay_tree_tag.html"><tt>splay_tree_tag</tt></a> - - splay tree structure tag</li> - - <li><a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a> - - ordered-vector tree structure tag</li> - - <li><a href= - "trie_tag.html"><tt>trie_tag</tt></a> - - trie structure tag</li> - - <li><a href= - "pat_trie_tag.html"><tt>pat_trie_tag</tt></a> - - PATRICIA trie structure tag</li> - - <li><a href="list_update_tag.html"><tt>list_update_tag</tt></a> - list - (with updates) structure tag</li> - </ol> - - <h4><a name="ds_ts_pq" id="ds_ts_pq">Priority-Queues</a></h4> - - <ol> - <li><a href= - "priority_queue_tag.html"><tt>priority_queue_tag</tt></a> - base - class for priority-queue data structure tags</li> - - <li><a href= - "pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a> - - pairing-heap structure tag.</li> - - <li><a href= - "binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a> - - binomial-heap structure tag</li> - - <li><a href= - "rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a> - - redundant-counter binomial-heap (<i>i.e.</i>, a heap where - binomial trees form a sequence that is similar to a - de-amortized bit-addition algorithm) structure tag</li> - - <li><a href= - "binary_heap_tag.html"><tt>binary_heap_tag</tt></a> - - binary heap (based on an array or an array of nodes) - structure tag</li> - - <li><a href= - "thin_heap_tag.html"><tt>thin_heap_tag</tt></a> - thin - heap (an alternative [<a href= - "references.html#kt99fat_heaps">kt99fat_heaps</a>] to - Fibonacci heap) data structure tag.</li> - </ol> - - <h3><a name="ds_inv_tag" id="ds_inv_tag">Invalidation-Guarantee - Tags</a></h3> - - <ol> - <li><a href= - "basic_invalidation_guarantee.html"><tt>basic_invalidation_guarantee</tt></a> - - weakest invalidation guarantee</li> - - <li><a href= - "point_invalidation_guarantee.html"><tt>point_invalidation_guarantee</tt></a> - - stronger invalidation guarantee</li> - - <li><a href= - "range_invalidation_guarantee.html"><tt>range_invalidation_guarantee</tt></a> - - strongest invalidation guarantee</li> - </ol> - - <h3><a name="container_traits" id="container_traits">Container - Traits</a></h3> - - <ol> - <li><a href="pq_container_traits.html"><tt>container_traits</tt></a> - - traits for determining underlying data structure - properties</li> - </ol> - <hr /> - - <h2><a name="ds_policy_classes" id= - "ds_policy_classes">Container Policy Classes</a></h2> - - <h3><a name="hash_related_policies" id= - "hash_related_policies">Hash Policies</a></h3> - - <h4>Hash and Probe Policies</h4> - - <ol> - <li>Hash Functions: - - <ol> - <li><a href="null_hash_fn.html"><tt>null_hash_fn</tt></a> - - type indicating one-step range-hashing</li> - </ol> - </li> - - <li>Range-Hashing Functions: - - <ol> - <li><a href="sample_range_hashing.html">Sample - range-hashing function</a> - interface required of a - range-hashing functor</li> - - <li><a href= - "direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> - - (bit) mask-based range hashing functor</li> - - <li><a href= - "direct_mod_range_hashing.html"><tt>direct_mod_range_hashing</tt></a> - - modulo-based range hashing functor</li> - </ol> - </li> - - <li>Probe Functions: - - <ol> - <li><a href="sample_probe_fn.html">Sample probe - function</a> - interface required of a probe functor</li> - - <li><a href= - "null_probe_fn.html"><tt>null_probe_fn</tt></a> - type - indicating one-step ranged-probe</li> - - <li><a href= - "linear_probe_fn.html"><tt>linear_probe_fn</tt></a> - - linear-probe functor</li> - - <li><a href= - "quadratic_probe_fn.html"><tt>quadratic_probe_fn</tt></a>- - quadratic-probe functor</li> - </ol> - </li> - - <li>Ranged-Hash Functions: - - <ol> - <li><a href="sample_ranged_hash_fn.html">Sample - ranged-hash function</a> - interface required of a - ranged-hash functor</li> - </ol> - </li> - - <li>Ranged-Probe Functions: - - <ol> - <li><a href="sample_ranged_probe_fn.html">Sample - ranged-probe function</a> - interface required of a - ranged-probe functor</li> - </ol> - </li> - </ol> - - <h4>Resize Policies</h4> - <ol> - <li>Resize Policies: - - <ol> - <li><a href="sample_resize_policy.html">Sample resize - policy</a> - interface required of a resize policy</li> - - <li><a href= - "hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - - standard resize policy</li> - </ol> - </li> - - <li>Size Policies: - - <ol> - <li><a href="sample_size_policy.html">Sample size - policy</a> - interface required of a size policy</li> - - <li><a href= - "hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> - - exponential size policy (typically used with (bit) mask - range-hashing)</li> - - <li><a href= - "hash_prime_size_policy.html"><tt>hash_prime_size_policy</tt></a> - - prime size policy (typically used with modulo - range-hashing)</li> - </ol> - </li> - - <li>Trigger Policies: - - <ol> - <li><a href="sample_resize_trigger.html">Sample trigger - policy</a> - interface required of a trigger policy</li> - - <li><a href= - "hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - - trigger policy based on load checks</li> - - <li><a href= - "cc_hash_max_collision_check_resize_trigger.html"><tt>cc_hash_max_collision_check_resize_trigger</tt></a> - - trigger policy based on collision checks</li> - </ol> - </li> - </ol> - - <h3><a name="tree_related_policies" id= - "tree_related_policies">Tree Policies</a></h3> - - <h4>Tree Node-Update Policies</h4> - - -<ol> -<li><a href="sample_tree_node_update.html">Sample node -updater policy</a> - interface required of a tree -node-updating functor</li> - -<li><a href= - "null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -- null policy indicating no updates are required</li> - -<li><a href= - "tree_order_statistics_node_update.html"><tt>tree_order_statistics_node_update</tt></a> -- updater enabling order statistics queries</li> -</ol> - -<h3><a name="trie_related_policies" id= - "trie_related_policies">Trie Policies</a></h3> - - -<h4>Trie Element-Access Traits</h4> - - <ol> - <li><a href="sample_trie_e_access_traits.html">Sample - element-access traits</a> - interface required of - element-access traits</li> - - <li><a href= - "string_trie_e_access_traits.html"><tt>string_trie_e_access_traits</tt></a> - - String element-access traits</li> - </ol> - - <h4>Trie Node-Update Policies</h4> - - -<ol> -<li><a href="sample_trie_node_update.html">Sample node -updater policy</a> - interface required of a trie node -updater</li> - -<li><a href= - "null_trie_node_update.html"><tt>null_trie_node_update</tt></a> -- null policy indicating no updates are required</li> - -<li><a href= - "trie_prefix_search_node_update.html"><tt>trie_prefix_search_node_update</tt></a> -- updater enabling prefix searches</li> - -<li><a href= - "trie_order_statistics_node_update.html"><tt>trie_order_statistics_node_update</tt></a> -- updater enabling order statistics queries</li> -</ol> - -<h3><a name="list_related_policies" id= - "list_related_policies">List Policies</a></h3> - -<h4>List Update Policies</h4> - - - <ol> - <li><a href="sample_update_policy.html">Sample list update - policy</a> - interface required of a list update policy</li> - - <li><a href= - "move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a> - - move-to-front update algorithm</li> - - <li><a href= - "counter_lu_policy.html"><tt>counter_lu_policy</tt></a> - - counter update algorithm</li> - </ol> - - <h3><a name="ds_pol" id="ds_pol">Mapped-Type Policies</a></h3> - - - <ol> - <li><a href= - "null_mapped_type.html"><tt>null_mapped_type</tt></a> - data - policy indicating that a container is a "set"</li> - </ol> - <hr /> - - <h2><a name="exceptions" id="exceptions">Exceptions</a></h2> - - - <ol> - <li><a href="exceptions.html"><tt>container_error</tt></a> - - base class for all policy-based data structure errors</li> - - <li><a href= - "insert_error.html"><tt>insert_error</tt></a></li> - - <li><a href="join_error.html"><tt>join_error</tt></a></li> - - <li><a href= - "resize_error.html"><tt>resize_error</tt></a></li> - </ol> - - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/introduction.html b/libstdc++-v3/doc/html/ext/pb_ds/introduction.html deleted file mode 100644 index b3ccbd76aee..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/introduction.html +++ /dev/null @@ -1,120 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>Introduction</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1>Introduction</h1> - - <p>This section describes what problems the library attempts to - solve. <a href="motivation.html">Motivation</a> describes the - reasons we think it solves these problems better than similar - libraries.</p> - - <h2><a name="assoc" id="assoc">Associative Containers</a></h2> - - <ol> - <li>Associative containers depend on their policies to a very - large extent. Implicitly hard-wiring policies can hamper their - performance and limit their functionality. An efficient - hash-based container, for example, requires policies for - testing key equivalence, hashing keys, translating hash - values into positions within the hash table, and determining - when and how to resize the table internally. A tree-based - container can efficiently support order statistics, - <i>i.e.</i>, the ability to query what is the order of each - key within the sequence of keys in the container, but only if - the container is supplied with a policy to internally update - meta-data. There are many other such examples.<p></p></li> - - <li>Ideally, all associative containers would share the same - interface. Unfortunately, underlying data structures and - mapping semantics differentiate between different containers. - For example, suppose one writes a generic function - manipulating an associative container <tt>Cntnr</tt>: - <pre> -template<typename Cntnr> - void - some_op_sequence(Cntnr& r_cnt) - { - ... - } -</pre> - -then what can one assume about <tt>Cntnr</tt>? The answer -varies according to its underlying data structure. If the -underlying data structure of <tt>Cntnr</tt> is based on a tree or -trie, then the order of elements is well defined; otherwise, it is -not, in general. If the underlying data structure of <tt>Cntnr</tt> -is based on a collision-chaining hash table, then modifying -r_<tt>Cntnr</tt> will not invalidate its iterators' order; if the -underlying data structure is a probing hash table, then this is not -the case. If the underlying data structure is based on a tree or -trie, then <tt>r_cnt</tt> can efficiently be split; otherwise, it -cannot, in general. If the underlying data structure is a red-black -tree, then splitting <tt>r_cnt</tt> is exception-free; if it is an -ordered-vector tree, exceptions can be thrown. - <p></p></li> - </ol> - - <h2><a name="pq" id="pq">Priority Queues</a></h2> - - <p>Priority queues are useful when one needs to efficiently - access a minimum (or maximum) value as the set of values - changes.</p> - - <ol> - <li>Most useful data structures for priority queues have a - relatively simple structure, as they are geared toward - relatively simple requirements. Unfortunately, these structures - do not support access to an arbitrary value, which turns out to - be necessary in many algorithms. Say, decreasing an arbitrary - value in a graph algorithm. Therefore, some extra mechanism is - necessary and must be invented for accessing arbitrary - values. There are at least two alternatives: embedding an - associative container in a priority queue, or allowing - cross-referencing through iterators. The first solution adds - significant overhead; the second solution requires a precise - definition of iterator invalidation. Which is the next - point...<p></p></li> - - <li>Priority queues, like hash-based containers, store values in - an order that is meaningless and undefined externally. For - example, a <tt>push</tt> operation can internally reorganize the - values. Because of this characteristic, describing a priority - queues' iterator is difficult: on one hand, the values to which - iterators point can remain valid, but on the other, the logical - order of iterators can change unpredictably.<p></p></li> - - <li>Roughly speaking, any element that is both inserted to a - priority queue (<i>e.g.</i>, through <tt>push</tt>) and removed - from it (<i>e.g.</i>, through <tt>pop</tt>), incurs a - logarithmic overhead (in the amortized sense). Different - underlying data structures place the actual cost differently: - some are optimized for amortized complexity, whereas others - guarantee that specific operations only have a constant - cost. One underlying data structure might be chosen if modifying - a value is frequent (Dijkstra's shortest-path algorithm), - whereas a different one might be chosen - otherwise. Unfortunately, an array-based binary heap - an - underlying data structure that optimizes (in the amortized - sense) <tt>push</tt> and <tt>pop</tt> operations, differs from - the others in terms of its invalidation guarantees. Other design - decisions also impact the cost and placement of the overhead, at - the expense of more difference in the the kinds of operations - that the underlying data structure can support. These - differences pose a challenge when creating a uniform interface - for priority queues.<p></p></li> - </ol> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/invalidation_guarantee_cd.png b/libstdc++-v3/doc/html/ext/pb_ds/invalidation_guarantee_cd.png Binary files differdeleted file mode 100644 index 1f9d1243c6a..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/invalidation_guarantee_cd.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/join_error.html b/libstdc++-v3/doc/html/ext/pb_ds/join_error.html deleted file mode 100644 index f3e3eaf979f..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/join_error.html +++ /dev/null @@ -1,48 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - -<title>join_error Interface</title> -<meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> -</head> - -<body> -<div id="page"> -<h1><tt>join_error</tt> Interface</h1> - -<p>A join cannot be performed logical reasons (i.e., the ranges of the - two container objects - being joined - overlaps.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/exception.hpp"><tt>exception.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Base Classes</a></h2> - - <table class="c1" width="100%" border="1" summary="Bases"> - <tr> - <td width="80%" align="left"><b>Class</b></td> - - <td width="20%" align="left"><b>Derivation Type</b></td> - </tr> - - <tr> - <td> -<pre><a href="exceptions.html"><span class="c2"><tt>join_error</tt></span></a> -</pre> - </td> - -<td> -<p>public</p> -</td> -</tr> - </table> - </div> - </body> - </html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/linear_probe_fn.html b/libstdc++-v3/doc/html/ext/pb_ds/linear_probe_fn.html deleted file mode 100644 index 6387d3a337e..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/linear_probe_fn.html +++ /dev/null @@ -1,140 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>linear_probe_fn Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>linear_probe_fn</tt> Interface</h1> - - <p>A probe sequence policy using fixed increments.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/hash_policy.hpp"><tt>hash_policy.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Template Parameters</a></h2> - - <table class="c1" width="100%" border="1" summary= - "Template Parameters"> - <tr> - <td width="20%" align="left"><b>Parameter</b></td> - - <td width="50%" align="left"><b>Description</b></td> - - <td width="30%" align="left"><b>Default Value</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="Size_Type42920436" id= -"Size_Type42920436"><b>typename</b> Size_Type </a> -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - - <td>size_t</td> - </tr> - </table> - - <h2><a name="link2" id="link2">Public Types and - Constants</a></h2> - - <h3><a name="link3" id="link3">General Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="size_type55424436" id="size_type55424436">size_type</a> -</pre> - </td> - - <td> - <pre> -<a href="#Size_Type42920436"><tt>Size_Type</tt></a> -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - </tr> - </table> - - <h2><a name="link4" id="link4">Public Methods</a></h2> - - <h3><a name="link5" id="link5">Constructors, Destructor, and - Related</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - swap - (<span class="c2"><tt>linear_probe_fn</tt></span> &other) -</pre> - </td> - - <td> - <p>Swaps content.</p> - </td> - </tr> - </table> - - <h2><a name="link6" id="link6">Protected Methods</a></h2> - - <h3><a name="link7" id="link7">Offset Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a> - <b>operator</b>() - (<a href= -"#size_type55424436"><tt>size_type</tt></a> i) <b>const</b> -</pre> - </td> - - <td> - <p>Returns the <span class="c1"><tt>i</tt></span>-th - offset from the hash value.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/list_update.html b/libstdc++-v3/doc/html/ext/pb_ds/list_update.html deleted file mode 100644 index 434e82f42fc..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/list_update.html +++ /dev/null @@ -1,316 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>list_update Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>list_update</tt> Interface</h1> - - <p>A list-update based associative container.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/assoc_container.hpp"><tt>assoc_container.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Template Parameters</a></h2> - - <table class="c1" width="100%" border="1" summary= - "Template Parameters"> - <tr> - <td width="20%" align="left"><b>Parameter</b></td> - - <td width="50%" align="left"><b>Description</b></td> - - <td width="30%" align="left"><b>Default Value</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="Key2501" id="Key2501"><b>typename</b> Key</a> -</pre> - </td> - - <td> - <p>Key type.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Mapped318655" id="Mapped318655"><b>typename</b> Mapped</a> -</pre> - </td> - - <td> - <p>Mapped type.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Eq_Fn60085" id="Eq_Fn60085"><b>class</b> Eq_Fn </a> -</pre> - </td> - - <td> - <p>Equivalence functor.</p> - </td> - - <td> - <pre> -std::equal_to<<a href="#Key2501"><tt>Key</tt></a>> -</pre> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="Update_Policy1671938590" id= -"Update_Policy1671938590"><b>class</b> Update_Policy </a> -</pre> - </td> - - <td> - <p>Update policy (determines when an element will be - moved to the front of the list.</p> - </td> - - <td><a href="move_to_front_lu_policy.html"><span class= - "c2"><tt>move_to_front_lu_policy</tt></span></a></td> - </tr> - - <tr> - <td> - <pre> -<a name="Allocator35940069" id= -"Allocator35940069"><b>class</b> Allocator </a> -</pre> - </td> - - <td> - <p>Allocator type.</p> - </td> - - <td> - <pre> -std::allocator<<b>char</b>> -</pre> - </td> - </tr> - </table> - - <h2><a name="link2" id="link2">Base Classes</a></h2> - - <table class="c1" width="100%" border="1" summary="Bases"> - <tr> - <td width="80%" align="left"><b>Class</b></td> - - <td width="20%" align="left"><b>Derivation Type</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="container_base.html"><span class= -"c2"><tt>container_base</tt></span></a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - </table> - - <h2><a name="link3" id="link3">Public Types and - Constants</a></h2> - - <h3><a name="link4" id="link4">Policy definitions.</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="eq_fn80245" id="eq_fn80245">eq_fn</a> -</pre> - </td> - - <td> - <pre> -<a href="#Eq_Fn60085"><tt>Eq_Fn</tt></a> -</pre> - </td> - - <td> - <p>Equivalence functor type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="update_policy894603998" id= -"update_policy894603998">update_policy</a> -</pre> - </td> - - <td> - <pre> -<a href="#Update_Policy1671938590"><tt>Update_Policy</tt></a> -</pre> - </td> - - <td> - <p>List update policy type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="allocator48440069" id="allocator48440069">allocator</a> -</pre> - </td> - - <td> - <pre> -<a href="#Allocator35940069"><tt>Allocator</tt></a> -</pre> - </td> - - <td> - <p><a href="#Allocator35940069"><tt>Allocator</tt></a> - type.</p> - </td> - </tr> - </table> - - <h2><a name="link5" id="link5">Public Methods</a></h2> - - <h3><a name="link6" id="link6">Constructors, Destructor, and - Related</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> - list_update - () -</pre> - </td> - - <td> - <p>Default constructor.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>template</b>< - <b>class</b> It> - list_update - (It first_it, - It last_it) -</pre> - </td> - - <td> - <p>Constructor taking iterators to a range of - value_types. The value_types between <span class= - "c1"><tt>first_it</tt></span> and <span class= - "c1"><tt>last_it</tt></span> will be inserted into the - container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> - list_update - (<b>const</b> <span class= -"c2"><tt>list_update</tt></span> &other) -</pre> - </td> - - <td> - <p>Copy constructor.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> - ~list_update - () -</pre> - </td> - - <td> - <p>Destructor.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<span class="c2"><tt>list_update</tt></span> & - <b>operator</b>= - (<b>const</b> <span class= -"c2"><tt>list_update</tt></span> &other) -</pre> - </td> - - <td> - <p>Assignment operator.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - swap - (<span class="c2"><tt>list_update</tt></span> &other) -</pre> - </td> - - <td> - <p>Swaps content.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/list_update_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/list_update_tag.html deleted file mode 100644 index f04aaeacbd1..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/list_update_tag.html +++ /dev/null @@ -1,47 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>list_update_tag Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>list_update_tag</tt> Interface</h1> - - <p>List-update data structure tag.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Base Classes</a></h2> - - <table class="c1" width="100%" border="1" summary="Bases"> - <tr> - <td width="80%" align="left"><b>Class</b></td> - - <td width="20%" align="left"><b>Derivation Type</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="associative_container_tag.html"><span class= -"c2"><tt>associative_container_tag</tt></span></a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/lu_based_containers.html b/libstdc++-v3/doc/html/ext/pb_ds/lu_based_containers.html deleted file mode 100644 index c8693437d9e..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/lu_based_containers.html +++ /dev/null @@ -1,229 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>List-Based Containers</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1>List-Update Design</h1> - - <h2><a name="overview" id="overview">Overview</a></h2> - - <p>The list-based container has the following declaration:</p> - <pre> -<b>template</b>< - <b>typename</b> Key, - <b>typename</b> Mapped, - <b>typename</b> Eq_Fn = std::equal_to<Key>, - <b>typename</b> Update_Policy = <a href= -"move_to_front_lu_policy.html">move_to_front_lu_policy<></a>, - <b>typename</b> Allocator = std::allocator<<b>char</b>> > -<b>class</b> <a href="list_update.html">list_update</a>; -</pre> - - <p>The parameters have the following meaning:</p> - - <ol> - <li><tt>Key</tt> is the key type.</li> - - <li><tt>Mapped</tt> is the mapped-policy, and is explained in - <a href="tutorial.html#assoc_ms">Tutorial::Associative - Containers::Associative Containers Others than Maps</a>.</li> - - <li><tt>Eq_Fn</tt> is a key equivalence functor.</li> - - <li><tt>Update_Policy</tt> is a policy updating positions in - the list based on access patterns. It is described in the - following subsection.</li> - - <li><tt>Allocator</tt> is an allocator - type.</li> - </ol> - - <p>A list-based associative container is a container that - stores elements in a linked-list. It does not order the - elements by any particular order related to the keys. - List-based containers are primarily useful for creating - "multimaps" (see <a href= - "motivation.html#assoc_mapping_semantics">Motivation::Associative - Containers::Avoiding Multiple Keys</a> and <a href= - "tutorial.html#assoc_ms">Tutorial::Associative - Containers::Associative Containers Others than Maps</a>). In - fact, list-based containers are designed in <tt>pb_ds</tt> - expressly for this purpose. This is explained further in - <a href="#mmaps">Use for "Multimaps"</a>.</p> - - <p>List-based containers might also be useful for some rare - cases, where a key is encapsulated to the extent that only - key-equivalence can be tested. Hash-based containers need to - know how to transform a key into a size type, and tree-based - containers need to know if some key is larger than another. - List-based associative containers, conversely, only need to - know if two keys are equivalent.</p> - - <p>Since a list-based associative container does not order - elements by keys, is it possible to order the list in some - useful manner? Remarkably, many on-line competitive [<a href= - "references.html#motwani95random">motwani95random</a>] - algorithms exist for reordering lists to reflect access - prediction [<a href= - "references.html#andrew04mtf">andrew04mtf</a>].</p> - - <h2><a name="list_updates" id="list_updates">List - Updates</a></h2> - - <h3><a name="general" id="general">General Terms</a></h3> - - <p>Figure <a href="#simple_list">A simple list</a> shows a - simple list of integer keys. If we search for the integer 6, we - are paying an overhead: the link with key 6 is only the fifth - link; if it were the first link, it could be accessed - faster.</p> - - <h6 class="c1"><a name="simple_list" id="simple_list"><img src= - "simple_list.png" alt="no image" /></a></h6> - - <h6 class="c1">A simple list.</h6> - - <p>List-update algorithms reorder lists as elements are - accessed. They try to determine, by the access history, which - keys to move to the front of the list. Some of these algorithms - require adding some metadata alongside each entry.</p> - - <p>For example, Figure <a href="#lu">The counter algorithm</a> - -A shows the counter algorithm. Each node contains both a key - and a count metadata (shown in bold). When an element is - accessed (<i>e.g.</i> 6) its count is incremented, as shown in - Figure <a href="#lu">The counter algorithm</a> -B. If the count - reaches some predetermined value, say 10, as shown in Figure - <a href="#lu">The counter algorithm</a> -C, the count is set to - 0 and the node is moved to the front of the list, as in Figure - <a href="#lu">The counter algorithm</a> -D.</p> - - <h6 class="c1"><a name="lu" id="lu"><img src="lu.png" alt= - "no image" /></a></h6> - - <h6 class="c1">The counter algorithm.</h6> - - <h3><a name="imp_pb_ds" id="imp_pb_ds">Implementation</a></h3> - - <p><tt>pb_ds</tt> allows instantiating lists with policies - implementing any algorithm moving nodes to the front of the - list (policies implementing algorithms interchanging nodes are - unsupported).</p> - - <p>Associative containers based on lists are parametrized by a - <tt>Update_Policy</tt> parameter. This parameter defines the - type of metadata each node contains, how to create the - metadata, and how to decide, using this metadata, whether to - move a node to the front of the list. A list-based associative - container object derives (publicly) from its update policy. - Figure <a href="#update_policy_cd">A list and its update - policy</a> shows the scheme, as well as some predefined - policies (which are explained below).</p> - - <h6 class="c1"><a name="update_policy_cd" id= - "update_policy_cd"><img src="update_policy_cd.png" alt= - "no image" /></a></h6> - - <h6 class="c1">A list and its update policy.</h6> - - <p>An instantiation of <tt>Update_Policy</tt> must define - internally <tt>update_metadata</tt> as the metadata it - requires. Internally, each node of the list contains, besides - the usual key and data, an instance of <tt><b>typename</b> - Update_Policy::update_metadata</tt>.</p> - - <p>An instantiation of <tt>Update_Policy</tt> must define - internally two operators:</p> - <pre> -update_metadata -<b>operator</b>()(); - -<b>bool</b> -<b>operator</b>()(update_metadata &); -</pre> - - <p>The first is called by the container object, when creating a - new node, to create the node's metadata. The second is called - by the container object, when a node is accessed (<i>e.g.</i>, - when a find operation's key is equivalent to the key of the - node), to determine whether to move the node to the front of - the list.</p> - - <p>The library contains two predefined implementations of - list-update policies [<a href= - "references.html#andrew04mtf">andrew04mtf</a>]. The first is - <a href= - "counter_lu_policy.html"><tt>counter_lu_policy</tt></a>, which - implements the counter algorithm described above. The second is - <a href= - "move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a>, - which unconditionally move an accessed element to the front of - the list. The latter type is very useful in <tt>pb_ds</tt>, - since there is no need to associate metadata with each element - (this is explained further in <a href="#mmaps">Use for - "Multimaps"</a>).</p> - - <h2><a name="mmaps" id="mmaps">Use for "Multimaps"</a></h2> - - <p>In <tt>pb_ds</tt>, there are no equivalents for the STL's - multimaps and multisets; instead one uses an associative - container mapping primary keys to secondary keys (see <a href= - "motivation.html#assoc_mapping_semantics">Motivation::Associative - Containers::Alternative to Multiple Equivalent Keys</a> and - <a href="tutorial.html#assoc_ms">Tutorial::Associative - Containers::Associative Containers Others than Maps</a>).</p> - - <p>List-based containers are especially useful as associative - containers for secondary keys. In fact, they are implemented - here expressly for this purpose.</p> - - <p>To begin with, these containers use very little per-entry - structure memory overhead, since they can be implemented as - singly-linked lists. (Arrays use even lower per-entry memory - overhead, but they are less flexible in moving around entries, - and have weaker invalidation guarantees).</p> - - <p>More importantly, though, list-based containers use very - little per-container memory overhead. The memory overhead of an - empty list-based container is practically that of a pointer. - This is important for when they are used as secondary - associative-containers in situations where the average ratio of - secondary keys to primary keys is low (or even 1).</p> - - <p>In order to reduce the per-container memory overhead as much - as possible, they are implemented as closely as possible to - singly-linked lists.</p> - - <ol> - <li>List-based containers do not store internally the number - of values that they hold. This means that their <tt>size</tt> - method has linear complexity (just like <tt>std::list</tt>). - Note that finding the number of equivalent-key values in an - STL multimap also has linear complexity (because it must be - done, <i>e.g.</i>, via <tt>std::distance</tt> of the - multimap's <tt>equal_range</tt> method), but usually with - higher constants.</li> - - <li>Most associative-container objects each hold a policy - object (<i>e.g.</i>, a hash-based container object holds a - hash functor). List-based containers, conversely, only have - class-wide policy objects.</li> - </ol> - - <p>See also <a href= - "assoc_performance_tests.html#msc">Associative-Container - Performance Tests::Observations::Mapping-Semantics - Considerations</a>.</p> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/misc.html b/libstdc++-v3/doc/html/ext/pb_ds/misc.html deleted file mode 100644 index 01029e13454..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/misc.html +++ /dev/null @@ -1,26 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>Misc.</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1>Misc.</h1> - - <p><a href="acks.html" title="Acknowledgements">Acks</a> - contains acknowledgments; <a href="contact.html">Contact</a> - contains contact information;<a href= - "disclaimer.html">Disclaimer and Copyright</a> is a standard - disclaimer, and <a href="references.html">References</a> - contains references.</p> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/motivation.html b/libstdc++-v3/doc/html/ext/pb_ds/motivation.html deleted file mode 100644 index 627317217f0..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/motivation.html +++ /dev/null @@ -1,993 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>Motivation</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1>Motivation</h1> - - <p>Many fine associative-container libraries were already - written, most notably, the STL's associative containers. Why - then write another library? This section shows some possible - advantages of this library, when considering the challenges in - <a href="introduction.html">Introduction</a>. Many of these - points stem from the fact that the STL introduced - associative-containers in a two-step process (first - standardizing tree-based containers, only then adding - hash-based containers, which are fundamentally different), did - not standardize priority queues as containers, and (in our - opinion) overloads the iterator concept.</p> - - <h2><a name="assoc" id="assoc">Associative Containers</a></h2> - - <h3><a name="assoc_policies" id="assoc_policies">More - Configuration Choices</a></h3> - - <p>Associative containers require a relatively large number of - policies to function efficiently in various settings. In some - cases this is needed for making their common operations more - efficient, and in other cases this allows them to support a - larger set of operations</p> - - <ol> - <li>Hash-based containers, for example, support look-up and - insertion methods (<i>e.g.</i>, <tt>find</tt> and - <tt>insert</tt>). In order to locate elements quickly, they - are supplied a hash functor, which instruct how to transform - a key object into some size type; <i>e.g.</i>, a hash functor - might transform <tt>"hello"</tt> into <tt>1123002298</tt>. A - hash table, though, requires transforming each key object - into some size-type type in some specific domain; - <i>e.g.</i>, a hash table with a 128-long table might - transform <tt>"hello"</tt> into position 63. The policy by - which the hash value is transformed into a position within - the table can dramatically affect performance (see <a href= - "hash_based_containers.html#hash_policies">Design::Associative - Containers::Hash-Based Containers::Hash Policies</a>). - Hash-based containers also do not resize naturally (as - opposed to tree-based containers, for example). The - appropriate resize policy is unfortunately intertwined with - the policy that transforms hash value into a position within - the table (see <a href= - "hash_based_containers.html#resize_policies">Design::Associative - Containers::Hash-Based Containers::Resize Policies</a>). - - <p><a href= - "assoc_performance_tests.html#hash_based">Associative-Container - Performance Tests::Hash-Based Containers</a> quantifies - some of these points.</p> - </li> - - <li>Tree-based containers, for example, also support look-up - and insertion methods, and are primarily useful when - maintaining order between elements is important. In some - cases, though, one can utilize their balancing algorithms for - completely different purposes. - - <p>Figure <a href="#node_invariants">Metadata for - order-statistics and interval intersections</a>-A, for - example, shows a tree whose each node contains two entries: - a floating-point key, and some size-type <i>metadata</i> - (in bold beneath it) that is the number of nodes in the - sub-tree. (<i>E.g.</i>, the root has key 0.99, and has 5 - nodes (including itself) in its sub-tree.) A container based - on this data structure can obviously answer efficiently - whether 0.3 is in the container object, but it can also - answer what is the order of 0.3 among all those in the - container object [<a href= - "references.html#clrs2001">clrs2001</a>] (see <a href= - "assoc_examples.html#tree_like_based">Associative Container - Examples::Tree-Like-Based Containers (Trees and - Tries)</a>).</p> - - <p>As another example, Figure <a href= - "#node_invariants">Metadata for order-statistics and - interval intersections</a>-B shows a tree whose each node - contains two entries: a half-open geometric line interval, - and a number <i>metadata</i> (in bold beneath it) that is - the largest endpoint of all intervals in its sub-tree. - (<i>E.g.</i>, the root describes the interval <i>[20, - 36)</i>, and the largest endpoint in its sub-tree is 99.) A - container based on this data structure can obviously answer - efficiently whether <i>[3, 41)</i> is in the container - object, but it can also answer efficiently whether the - container object has intervals that intersect <i>[3, - 41)</i> (see <a href= - "assoc_examples.html#tree_like_based">Associative Container - Examples::Tree-Like-Based Containers (Trees and - Tries)</a>). These types of queries are very useful in - geometric algorithms and lease-management algorithms.</p> - - <p>It is important to note, however, that as the trees are - modified, their internal structure changes. To maintain - these invariants, one must supply some policy that is aware - of these changes (see <a href= - "tree_based_containers.html#invariants">Design::Associative - Containers::Tree-Based Containers::Node Invariants</a>); - without this, it would be better to use a linked list (in - itself very efficient for these purposes).</p> - - <p><a href= - "assoc_performance_tests.html#tree_like_based">Associative-Container - Performance Tests::Tree-Like-Based Containers</a> - quantifies some of these points.</p> - </li> - </ol> - - <h6 class="c1"><a name="node_invariants" id= - "node_invariants"><img src="node_invariants.png" alt= - "no image" /></a></h6> - - <h6 class="c1">Metadata for order-statistics and interval - intersections.</h6> - - <h3><a name="assoc_ds_genericity" id="assoc_ds_genericity">More - Data Structures and Traits</a></h3> - - <p>The STL contains associative containers based on red-black - trees and collision-chaining hash tables. These are obviously - very useful, but they are not ideal for all types of - settings.</p> - - <p>Figure <a href= - "#different_underlying_data_structures">Different underlying - data structures</a> shows different underlying data structures - (the ones currently supported in <tt>pb_ds</tt>). A shows a - collision-chaining hash-table, B shows a probing hash-table, C - shows a red-black tree, D shows a splay tree, E shows a tree - based on an ordered vector(implicit in the order of the - elements), F shows a PATRICIA trie, and G shows a list-based - container with update policies.</p> - - <p>Each of these data structures has some performance benefits, - in terms of speed, size or both (see <a href= - "assoc_performance_tests.html">Associative-Container - Performance Tests</a> and <a href= - "assoc_performance_tests.html#dss_family_choice">Associative-Container - Performance Tests::Observations::Underlying Data-Structure - Families</a>). For now, though, note that <i>e.g.</i>, - vector-based trees and probing hash tables manipulate memory - more efficiently than red-black trees and collision-chaining - hash tables, and that list-based associative containers are - very useful for constructing "multimaps" (see <a href= - "#assoc_mapping_semantics">Alternative to Multiple Equivalent - Keys</a>, <a href= - "assoc_performance_tests.html#multimaps">Associative Container - Performance Tests::Multimaps</a>, and <a href= - "assoc_performance_tests.html#msc">Associative Container - Performance Tests::Observations::Mapping-Semantics - Considerations</a>).</p> - - <h6 class="c1"><a name="different_underlying_data_structures" - id="different_underlying_data_structures"><img src= - "different_underlying_dss.png" alt="no image" /></a></h6> - - <h6 class="c1">Different underlying data structures.</h6> - - <p>Now consider a function manipulating a generic associative - container, <i>e.g.</i>,</p> - <pre> -<b>template</b>< - <b>class</b> Cntnr> -<b>int</b> - some_op_sequence - (Cntnr &r_cnt) -{ - ... -} -</pre> - - <p>Ideally, the underlying data structure of <tt>Cntnr</tt> - would not affect what can be done with <tt>r_cnt</tt>. - Unfortunately, this is not the case.</p> - - <p>For example, if <tt>Cntnr</tt> is <tt>std::map</tt>, then - the function can use <tt>std::for_each(r_cnt.find(foo), - r_cnt.find(bar), foobar)</tt> in order to apply <tt>foobar</tt> - to all elements between <tt>foo</tt> and <tt>bar</tt>. If - <tt>Cntnr</tt> is a hash-based container, then this call's - results are undefined.</p> - - <p>Also, if <tt>Cntnr</tt> is tree-based, the type and object - of the comparison functor can be accessed. If <tt>Cntnr</tt> is - hash based, these queries are nonsensical.</p> - - <p>There are various other differences based on the container's - underlying data structure. For one, they can be constructed by, - and queried for, different policies. Furthermore:</p> - - <ol> - <li>Containers based on C, D, E and F store elements in a - meaningful order; the others store elements in a meaningless - (and probably time-varying) order. By implication, only - containers based on C, D, E and F can support erase - operations taking an iterator and returning an iterator to - the following element without performance loss (see <a href= - "#assoc_ers_methods">Slightly Different Methods::Methods - Related to Erase</a>).</li> - - <li>Containers based on C, D, E, and F can be split and - joined efficiently, while the others cannot. Containers based - on C and D, furthermore, can guarantee that this is - exception-free; containers based on E cannot guarantee - this.</li> - - <li>Containers based on all but E can guarantee that erasing - an element is exception free; containers based on E cannot - guarantee this. Containers based on all but B and E can - guarantee that modifying an object of their type does not - invalidate iterators or references to their elements, while - containers based on B and E cannot. Containers based on C, D, - and E can furthermore make a stronger guarantee, namely that - modifying an object of their type does not affect the order - of iterators.</li> - </ol> - - <p>A unified tag and traits system (as used for the STL's - iterators, for example) can ease generic manipulation of - associative containers based on different underlying - data structures (see <a href= - "tutorial.html#assoc_ds_gen">Tutorial::Associative - Containers::Determining Containers' Attributes</a> and <a href= - "ds_gen.html#container_traits">Design::Associative - Containers::Data-Structure Genericity::Data-Structure Tags and - Traits</a>).</p> - - <h3><a name="assoc_diff_it" id="assoc_diff_it">Differentiating - between Iterator Types</a></h3> - - <p>Iterators are centric to the STL's design, because of the - container/algorithm/iterator decomposition that allows an - algorithm to operate on a range through iterators of some - sequence (<i>e.g.</i>, one originating from a container). - Iterators, then, are useful because they allow going over a - <u>sequence</u>. The STL also uses iterators for accessing a - <u>specific</u> element - <i>e.g.</i>, when an associative - container returns one through <tt>find</tt>. The STL, however, - consistently uses the same types of iterators for both - purposes: going over a range, and accessing a specific found - element. Before the introduction of hash-based containers to - the STL, this made sense (with the exception of priority - queues, which are discussed in <a href="#pq">Priority - Queues</a>).</p> - - <p>Using the STL's associative containers together with - non-order-preserving associative containers (and also because - of priority-queues container), there is a possible need for - different types of iterators for self-organizing containers - - the iterator concept seems overloaded to mean two different - things (in some cases). The following subsections explain this; - <a href="tutorial.html#assoc_find_range">Tutorial::Associative - Containers::Point-Type and Range-Type Methods</a> explains an - alternative design which does not complicate the use of - order-preserving containers, but is better for unordered - containers; <a href= - "ds_gen.html#find_range">Design::Associative - Containers::Data-Structure Genericity::Point-Type and - Range-Type Methods</a> explains the design further.</p> - - <h4><a name="assoc_find_it_range_it" id= - "assoc_find_it_range_it">Using Point-Type Iterators for - Range-Type Operations</a></h4> - - <p>Suppose <tt>cntnr</tt> is some associative container, and - say <tt>c</tt> is an object of type <tt>cntnr</tt>. Then what - will be the outcome of</p> - <pre> -std::for_each(c.find(1), c.find(5), foo); -</pre> - - <p>If <tt>cntnr</tt> is a tree-based container object, then an - in-order walk will apply <tt>foo</tt> to the relevant elements, - <i>e.g.</i>, as in Figure <a href="#range_it_in_hts">Range - iteration in different data structures</a> -A. If <tt>c</tt> is - a hash-based container, then the order of elements between any - two elements is undefined (and probably time-varying); there is - no guarantee that the elements traversed will coincide with the - <i>logical</i> elements between 1 and 5, <i>e.g.</i>, as in - Figure <a href="#range_it_in_hts">Range iteration in different - data structures</a>-B.</p> - - <h6 class="c1"><a name="range_it_in_hts" id= - "range_it_in_hts"><img src="point_iterators_range_ops_1.png" - alt="no image" /></a></h6> - - <h6 class="c1">Range iteration in different - data structures.</h6> - - <p>In our opinion, this problem is not caused just because - red-black trees are order preserving while collision-chaining - hash tables are (generally) not - it is more fundamental. Most - of the STL's containers order sequences in a well-defined - manner that is determined by their <u>interface</u>: calling - <tt>insert</tt> on a tree-based container modifies its sequence - in a predictable way, as does calling <tt>push_back</tt> on a - list or a vector. Conversely, collision-chaining hash tables, - probing hash tables, priority queues, and list-based containers - (which are very useful for "multimaps") are self-organizing - data structures; the effect of each operation modifies their - sequences in a manner that is (practically) determined by their - <u>implementation</u>.</p> - - <p>Consequently, applying an algorithm to a sequence obtained - from most containers <u>may or may not</u> make sense, but - applying it to a sub-sequence of a self-organizing container - <u>does not</u>.</p> - - <h4><a name="assoc_range_it_for_find_it" id= - "assoc_range_it_for_find_it">The Cost of Enabling Range - Capabilities to Point-Type Iterators</a></h4> - - <p>Suppose <tt>c</tt> is some collision-chaining hash-based - container object, and one calls <tt>c.find(3)</tt>. Then what - composes the returned iterator?</p> - - <p>Figure <a href="#find_its_in_hash_tables">Point-type - iterators in hash tables</a>-A shows the simplest (and most - efficient) implementation of a collision-chaining hash table. - The little box marked <tt>point_iterator</tt> shows an object - that contains a pointer to the element's node. Note that this - "iterator" has no way to move to the next element (<i>i.e.</i>, - it cannot support <tt><b>operator</b>++</tt>). Conversely, the - little box marked <tt>iterator</tt> stores both a pointer to - the element, as well as some other information (<i>e.g.</i>, - the bucket number of the element). the second iterator, then, - is "heavier" than the first one- it requires more time and - space. If we were to use a different container to - cross-reference into this hash-table using these iterators - it - would take much more space. As noted in <a href= - "#assoc_find_it_range_it">Using Point-Type Iterators for - Range-Type Operations</a>, nothing much can be done by - incrementing these iterators, so why is this extra information - needed?</p> - - <p>Alternatively, one might create a collision-chaining - hash-table where the lists might be linked, forming a - monolithic total-element list, as in Figure <a href= - "#find_its_in_hash_tables">Point-type iterators in hash - tables</a>-B (this seems similar to the Dinkumware design - [<a href="references.html#dinkumware_stl">dinkumware_stl</a>]). - Here the iterators are as light as can be, but the hash-table's - operations are more complicated.</p> - - <h6 class="c1"><a name="find_its_in_hash_tables" id= - "find_its_in_hash_tables"><img src= - "point_iterators_range_ops_2.png" alt="no image" /></a></h6> - - <h6 class="c1">Point-type iterators in hash tables.</h6> - - <p>It should be noted that containers based on - collision-chaining hash-tables are not the only ones with this - type of behavior; many other self-organizing data structures - display it as well.</p> - - <h4><a name="assoc_inv_guar" id="assoc_inv_guar">Invalidation - Guarantees</a></h4> - - <p>Consider the following snippet:</p> - <pre> -it = c.find(3); - -c.erase(5); -</pre> - - <p>Following the call to <tt>erase</tt>, what is the validity - of <tt>it</tt>: can it be de-referenced? can it be - incremented?</p> - - <p>The answer depends on the underlying data structure of the - container. Figure <a href= - "#invalidation_guarantee_erase">Effect of erase in different - underlying data structures</a> shows three cases: A1 and A2 - show a red-black tree; B1 and B2 show a probing hash-table; C1 - and C2 show a collision-chaining hash table.</p> - - <h6 class="c1"><a name="invalidation_guarantee_erase" id= - "invalidation_guarantee_erase"><img src= - "invalidation_guarantee_erase.png" alt="no image" /></a></h6> - - <h6 class="c1">Effect of erase in different underlying - data structures.</h6> - - <ol> - <li>Erasing 5 from A1 yields A2. Clearly, an iterator to 3 - can be de-referenced and incremented. The sequence of - iterators changed, but in a way that is well-defined by the - <u>interface</u>.</li> - - <li>Erasing 5 from B1 yields B2. Clearly, an iterator to 3 is - not valid at all - it cannot be de-referenced or incremented; - the order of iterators changed in a way that is (practically) - determined by the <u>implementation</u> and not by the - <u>interface</u>.</li> - - <li>Erasing 5 from C1 yields C2. Here the situation is more - complicated. On the one hand, there is no problem in - de-referencing <tt>it</tt>. On the other hand, the order of - iterators changed in a way that is (practically) determined - by the <u>implementation</u> and not by the - <u>interface</u>.</li> - </ol> - - <p>So in classic STL, it is not always possible to express - whether <tt>it</tt> is valid or not. This is true also for - <tt>insert</tt>, <i>e.g.</i>. Again, the iterator concept seems - overloaded.</p> - - <h3><a name="assoc_methods" id="assoc_methods">Slightly - Different Methods</a></h3> - - <p>[<a href="references.html#meyers02both">meyers02both</a>] - points out that a class's methods should comprise only - operations which depend on the class's internal structure; - other operations are best designed as external functions. - Possibly, therefore, the STL's associative containers lack some - useful methods, and provide some other methods which would be - better left out (<i>e.g.</i>, [<a href= - "references.html#sgi_stl">sgi_stl</a>] ).</p> - - <h4><a name="assoc_ers_methods" id="assoc_ers_methods">Methods - Related to Erase</a></h4> - - <ol> - <li>Order-preserving STL associative containers provide the - method - <pre> -iterator - erase - (iterator it) -</pre>which takes an iterator, erases the corresponding element, -and returns an iterator to the following element. Also hash-based -STL associative containers provide this method. This <u>seemingly -increases</u> genericity between associative containers, since, <i> - e.g.</i>, it is possible to use - <pre> -<b>typename</b> C::iterator it = c.begin(); -<b>typename</b> C::iterator e_it = c.end(); - -<b>while</b>(it != e_it) - it = pred(*it)? c.erase(it) : ++it; -</pre>in order to erase from a container object <tt> - c</tt> all element which match a predicate <tt>pred</tt>. - However, in a different sense this actually - <u>decreases</u> genericity: an integral implication of - this method is that tree-based associative containers' - memory use is linear in the total number of elements they - store, while hash-based containers' memory use is unbounded - in the total number of elements they store. Assume a - hash-based container is allowed to decrease its size when - an element is erased. Then the elements might be rehashed, - which means that there is no "next" element - it is simply - undefined. Consequently, it is possible to infer from the - fact that STL hash-based containers provide this method - that they cannot downsize when elements are erased - (<a href="assoc_performance_tests.html#hash_based">Performance - Tests::Hash-Based Container Tests</a> quantifies this.) As - a consequence, different code is needed to manipulate - different containers, assuming that memory should be - conserved. <tt>pb_ds</tt>'s non-order preserving - associative containers omit this method. - </li> - - <li>All of <tt>pb_ds</tt>'s associative containers include a - conditional-erase method - <pre> -<b>template</b>< - <b>class</b> Pred> -size_type - erase_if - (Pred pred) -</pre>which erases all elements matching a predicate. This is -probably the only way to ensure linear-time multiple-item erase -which can actually downsize a container. - </li> - - <li>STL associative containers provide methods for - multiple-item erase of the form - <pre> -size_type - erase - (It b, - It e) -</pre>erasing a range of elements given by a pair of iterators. For -tree-based or trie-based containers, this can implemented more -efficiently as a (small) sequence of split and join operations. For -other, unordered, containers, this method isn't much better than an -external loop. Moreover, if <tt>c</tt> is a hash-based container, -then, <i>e.g.</i>, <tt>c.erase(c.find(2), c.find(5))</tt> is almost -certain to do something different than erasing all elements whose -keys are between 2 and 5, and is likely to produce other undefined -behavior. - </li> - </ol> - - <h4><a name="assoc_split_join_methods" id= - "assoc_split_join_methods">Methods Related to Split and - Join</a></h4> - - <p>It is well-known that tree-based and trie-based container - objects can be efficiently split or joined [<a href= - "references.html#clrs2001">clrs2001</a>]. Externally splitting - or joining trees is super-linear, and, furthermore, can throw - exceptions. Split and join methods, consequently, seem good - choices for tree-based container methods, especially, since as - noted just before, they are efficient replacements for erasing - sub-sequences. <a href= - "assoc_performance_tests.html#tree_like_based">Performance - Tests::Tree-Like-Based Container Tests</a> quantifies this.</p> - - <h4><a name="assoc_insert_methods" id= - "assoc_insert_methods">Methods Related to Insert</a></h4> - - <p>STL associative containers provide methods of the form</p> - <pre> -<b>template</b>< - <b>class</b> It> -size_type - insert - (It b, - It e); -</pre>for inserting a range of elements given by a pair of -iterators. At best, this can be implemented as an external loop, -or, even more efficiently, as a join operation (for the case of -tree-based or trie-based containers). Moreover, these methods seem -similar to constructors taking a range given by a pair of -iterators; the constructors, however, are transactional, whereas -the insert methods are not; this is possibly confusing. - - <h4><a name="assoc_equiv_comp_methods" id= - "assoc_equiv_comp_methods">Functions Related to - Comparison</a></h4> - - <p>Associative containers are parametrized by policies - allowing to test key equivalence; <i>e.g.</i> a hash-based - container can do this through its equivalence functor, and a - tree-based container can do this through its comparison - functor. In addition, some STL associative containers have - global function operators, <i>e.g.</i>, - <tt><b>operator</b>==</tt> and <tt><b>operator</b><=</tt>, - that allow comparing entire associative containers.</p> - - <p>In our opinion, these functions are better left out. To - begin with, they do not significantly improve over an external - loop. More importantly, however, they are possibly misleading - - <tt><b>operator</b>==</tt>, for example, usually checks for - equivalence, or interchangeability, but the associative - container cannot check for values' equivalence, only keys' - equivalence; also, are two containers considered equivalent if - they store the same values in different order? this is an - arbitrary decision.</p> - - <h3><a name="assoc_mapping_semantics" id= - "assoc_mapping_semantics">Alternative to Multiple Equivalent - Keys</a></h3> - - <p>Maps (or sets) allow mapping (or storing) unique-key values. - The STL, however, also supplies associative containers which - map (or store) multiple values with equivalent keys: - <tt>std::multimap</tt>, <tt>std::multiset</tt>, - <tt>std::tr1::unordered_multimap</tt>, and - <tt>unordered_multiset</tt>. We first discuss how these might - be used, then why we think it is best to avoid them.</p> - - <p>Suppose one builds a simple bank-account application that - records for each client (identified by an <tt>std::string</tt>) - and account-id (marked by an <tt><b>unsigned long</b></tt>) - - the balance in the account (described by a - <tt><b>float</b></tt>). Suppose further that ordering this - information is not useful, so a hash-based container is - preferable to a tree based container. Then one can use</p> - <pre> -std::tr1::unordered_map<std::pair<std::string, <b>unsigned long</b>>, <b>float</b>, ...> -</pre>which <u>hashes every combination of client and -account-id</u>. This might work well, except for the fact that it -is now impossible to efficiently list all of the accounts of a -specific client (this would practically require iterating over all -entries). Instead, one can use - <pre> -std::tr1::unordered_multimap<std::pair<std::string, <tt><b>unsigned long</b></tt>>, <b>float</b>, ...> -</pre>which <u>hashes every client</u>, and <u>decides equivalence -based on client</u> only. This will ensure that all accounts -belonging to a specific user are stored consecutively. - - <p>Also, suppose one wants an integers' priority queue - (<i>i.e.,</i> a container that supports <tt>push</tt>, - <tt>pop</tt>, and <tt>top</tt> operations, the last of which - returns the largest <tt><b>int</b></tt>) that also supports - operations such as <tt>find</tt> and <tt>lower_bound</tt>. A - reasonable solution is to build an adapter over - <tt>std::set<<b>int</b>></tt>. In this adapter, - <i>e.g.</i>, <tt>push</tt> will just call the tree-based - associative container's <tt>insert</tt> method; <tt>pop</tt> - will call its <tt>end</tt> method, and use it to return the - preceding element (which must be the largest). Then this might - work well, except that the container object cannot hold - multiple instances of the same integer (<tt>push(4)</tt>, - <i>e.g.</i>, will be a no-op if <tt>4</tt> is already in the - container object). If multiple keys are necessary, then one - might build the adapter over an - <tt>std::multiset<<b>int</b>></tt>.</p> - - <p class="c1">STL non-unique-mapping containers, then, are - useful when (1) a key can be decomposed in to a primary key and - a secondary key, (2) a key is needed multiple times, or (3) any - combination of (1) and (2).</p> - - <p>Figure <a href="#embedded_lists_1">Non-unique mapping - containers in the STL's design</a> shows how the STL's design - works internally; in this figure nodes shaded equally represent - equivalent-key values. Equivalent keys are stored consecutively - using the properties of the underlying data structure: binary - search trees (Figure <a href="#embedded_lists_1">Non-unique - mapping containers in the STL's design</a>-A) store - equivalent-key values consecutively (in the sense of an - in-order walk) naturally; collision-chaining hash tables - (Figure <a href="#embedded_lists_1">Non-unique mapping - containers in the STL's design</a>-B) store equivalent-key - values in the same bucket, the bucket can be arranged so that - equivalent-key values are consecutive.</p> - - <h6 class="c1"><a name="embedded_lists_1" id= - "embedded_lists_1"><img src="embedded_lists_1.png" alt= - "no image" /></a></h6> - - <h6 class="c1">Non-unique mapping containers in the STL's - design.</h6> - - <p>Put differently, STL non-unique mapping - associative-containers are associative containers that map - primary keys to linked lists that are embedded into the - container. Figure <a href="#embedded_lists_2">Effect of - embedded lists in STL multimaps</a> shows again the two - containers from Figure <a href="#embedded_lists_1">Non-unique - mapping containers in the STL's design</a>, this time with the - embedded linked lists of the grayed nodes marked - explicitly.</p> - - <h6 class="c1"><a name="embedded_lists_2" id= - "embedded_lists_2"><img src="embedded_lists_2.png" alt= - "no image" /></a></h6> - - <h6 class="c1">Effect of embedded lists in STL multimaps.</h6> - - <p>These embedded linked lists have several disadvantages.</p> - - <ol> - <li>The underlying data structure embeds the linked lists - according to its own consideration, which means that the - search path for a value might include several different - equivalent-key values. For example, the search path for the - the black node in either of Figures <a href= - "#embedded_lists_1">Non-unique mapping containers in the - STL's design</a> A or B, includes more than a single gray - node.</li> - - <li>The links of the linked lists are the underlying - data structures' nodes, which typically are quite structured. - <i>E.g.</i>, in the case of tree-based containers (Figure - <a href="#embedded_lists_2">Effect of embedded lists in STL - multimaps</a>-B), each "link" is actually a node with three - pointers (one to a parent and two to children), and a - relatively-complicated iteration algorithm. The linked lists, - therefore, can take up quite a lot of memory, and iterating - over all values equal to a given key (<i>e.g.</i>, through - the return value of the STL's <tt>equal_range</tt>) can be - expensive.</li> - - <li>The primary key is stored multiply; this uses more - memory.</li> - - <li>Finally, the interface of this design excludes several - useful underlying data structures. <i>E.g.</i>, of all the - unordered self-organizing data structures, practically only - collision-chaining hash tables can (efficiently) guarantee - that equivalent-key values are stored consecutively.</li> - </ol> - - <p>The above reasons hold even when the ratio of secondary keys - to primary keys (or average number of identical keys) is small, - but when it is large, there are more severe problems:</p> - - <ol> - <li>The underlying data structures order the links inside - each embedded linked-lists according to their internal - considerations, which effectively means that each of the - links is unordered. Irrespective of the underlying - data structure, searching for a specific value can degrade to - linear complexity.</li> - - <li>Similarly to the above point, it is impossible to apply - to the secondary keys considerations that apply to primary - keys. For example, it is not possible to maintain secondary - keys by sorted order.</li> - - <li>While the interface "understands" that all equivalent-key - values constitute a distinct list (<i>e.g.</i>, through - <tt>equal_range</tt>), the underlying data structure - typically does not. This means, <i>e.g.</i>, that operations - such as erasing from a tree-based container all values whose - keys are equivalent to a a given key can be super-linear in - the size of the tree; this is also true also for several - other operations that target a specific list.</li> - </ol> - - <p>In <tt>pb_ds</tt>, therefore, all associative containers map - (or store) unique-key values. One can (1) map primary keys to - secondary associative-containers (<i>i.e.</i>, containers of - secondary keys) or non-associative containers (2) map identical - keys to a size-type representing the number of times they - occur, or (3) any combination of (1) and (2). Instead of - allowing multiple equivalent-key values, <tt>pb_ds</tt> - supplies associative containers based on underlying - data structures that are suitable as secondary - associative-containers (see <a href= - "assoc_performance_tests.html#msc">Associative-Container - Performance Tests::Observations::Mapping-Semantics - Considerations</a>).</p> - - <p>Figures <a href="#embedded_lists_3">Non-unique mapping - containers in <tt>pb_ds</tt></a> A and B show the equivalent - structures in <tt>pb_ds</tt>'s design, to those in Figures - <a href="#embedded_lists_1">Non-unique mapping containers in - the STL's design</a> A and B, respectively. Each shaded box - represents some size-type or secondary - associative-container.</p> - - <h6 class="c1"><a name="embedded_lists_3" id= - "embedded_lists_3"><img src="embedded_lists_3.png" alt= - "no image" /></a></h6> - - <h6 class="c1">Non-unique mapping containers in the - <tt>pb_ds</tt>.</h6> - - <p>In the first example above, then, one would use an - associative container mapping each user to an associative - container which maps each application id to a start time (see - <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/basic_multimap.cc"><tt>basic_multimap.cc</tt></a>); - in the second example, one would use an associative container - mapping each <tt><b>int</b></tt> to some size-type indicating - the number of times it logically occurs (see <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/basic_multiset.cc"><tt>basic_multiset.cc</tt></a>).</p> - - <p><a href= - "assoc_performance_tests.html#multimaps">Associative-Container - Performance Tests::Multimaps</a> quantifies some of these - points, and <a href= - "assoc_performance_tests.html#msc">Associative-Container - Performance Tests::Observations::Mapping-Semantics - Considerations</a> shows some simple calculations.</p> - - <p><a href="assoc_examples.html#mmaps">Associative-Container - Examples::Multimaps</a> shows some simple examples of using - "multimaps".</p> - - <p><a href="lu_based_containers.html">Design::Associative - Containers::List-Based Containers</a> discusses types of - containers especially suited as secondary - associative-containers.</p> - - <h2><a name="pq" id="pq">Priority Queues</a></h2> - - <h3><a name="pq_more_ops" id="pq_more_ops">Slightly Different - Methods</a></h3> - - <p>Priority queues are containers that allow efficiently - inserting values and accessing the maximal value (in the sense - of the container's comparison functor); <i>i.e.</i>, their - interface supports <tt>push</tt> and <tt>pop</tt>. The STL's - priority queues indeed support these methods, but they support - little else. For algorithmic and software-engineering purposes, - other methods are needed:</p> - - <ol> - <li>Many graph algorithms [<a href= - "references.html#clrs2001">clrs2001</a>] require increasing a - value in a priority queue (again, in the sense of the - container's comparison functor), or joining two - priority-queue objects.</li> - - <li>It is sometimes necessary to erase an arbitrary value in - a priority queue. For example, consider the <tt>select</tt> - function for monitoring file descriptors: - <pre> -<b>int</b> - select - (<b>int</b> nfds, - fd_set *readfds, - fd_set *writefds, - fd_set *errorfds, - <b>struct</b> timeval *timeout); -</pre>then, as the <tt>select</tt> manual page [<a href= -"references.html#select_man">select_man</a>] states: - - <p><q>The nfds argument specifies the range of file - descriptors to be tested. The select() function tests file - descriptors in the range of 0 to nfds-1.</q></p> - - <p>It stands to reason, therefore, that we might wish to - maintain a minimal value for <tt>nfds</tt>, and priority - queues immediately come to mind. Note, though, that when a - socket is closed, the minimal file description might - change; in the absence of an efficient means to erase an - arbitrary value from a priority queue, we might as well - avoid its use altogether.</p> - - <p><a href="pq_examples.html#xref">Priority-Queue - Examples::Cross-Referencing</a> shows examples for these - types of operations.</p> - </li> - - <li>STL containers typically support iterators. It is - somewhat unusual for <tt>std::priority_queue</tt> to omit - them (see, <i>e.g.</i>, [<a href= - "references.html#meyers01stl">meyers01stl</a>]). One might - ask why do priority queues need to support iterators, since - they are self-organizing containers with a different purpose - than abstracting sequences. There are several reasons: - - <ol> - <li>Iterators (even in self-organizing containers) are - useful for many purposes, <i>e.g.</i>, cross-referencing - containers, serialization, and debugging code that uses - these containers.</li> - - <li>The STL's hash-based containers support iterators, - even though they too are self-organizing containers with - a different purpose than abstracting sequences.</li> - - <li>In STL-like containers, it is natural to specify the - interface of operations for modifying a value or erasing - a value (discussed previously) in terms of a iterators. - This is discussed further in <a href= - "pq_design.html#pq_it">Design::Priority - Queues::Iterators</a>. It should be noted that the STL's - containers also use iterators for accessing and - manipulating a specific value. <i>E.g.</i>, in hash-based - containers, one checks the existence of a key by - comparing the iterator returned by <tt>find</tt> to the - iterator returned by <tt>end</tt>, and not by comparing a - pointer returned by <tt>find</tt> to <tt>NULL</tt>.</li> - </ol> - </li> - </ol> - - <p><a href="pq_performance_tests.html">Performance - Tests::Priority Queues</a> quantifies some of these points.</p> - - <h3><a name="pq_ds_genericity" id="pq_ds_genericity">More Data - Structures and Traits</a></h3> - - <p>There are three main implementations of priority queues: the - first employs a binary heap, typically one which uses a - sequence; the second uses a tree (or forest of trees), which is - typically less structured than an associative container's tree; - the third simply uses an associative container. These are - shown, respectively, in Figures <a href= - "#pq_different_underlying_dss">Underlying Priority-Queue - Data-Structures</a> A1 and A2, B, and C.</p> - - <h6 class="c1"><a name="pq_different_underlying_dss" id= - "pq_different_underlying_dss"><img src= - "pq_different_underlying_dss.png" alt="no image" /></a></h6> - - <h6 class="c1">Underlying Priority-Queue Data-Structures.</h6> - - <p>No single implementation can completely replace any of the - others. Some have better <tt>push</tt> and <tt>pop</tt> - amortized performance, some have better bounded (worst case) - response time than others, some optimize a single method at the - expense of others, <i>etc.</i>. In general the "best" - implementation is dictated by the problem (see <a href= - "pq_performance_tests.html#pq_observations">Performance - Tests::Priority Queues::Observations</a>).</p> - - <p>As with associative containers (see <a href= - "#assoc_ds_genericity">Associative Containers::Traits for - Underlying Data-Structures</a>), the more implementations - co-exist, the more necessary a traits mechanism is for handling - generic containers safely and efficiently. This is especially - important for priority queues, since the invalidation - guarantees of one of the most useful data structures - binary - heaps - is markedly different than those of most of the - others.</p> - - <p><a href="pq_design.html#pq_traits">Design::Priority - Queues::Traits</a> discusses this further.</p> - - <h3><a name="pq_binary_heap" id="pq_binary_heap">Binary Heap - Implementation</a></h3> - - <p>Binary heaps are one of the most useful underlying - data structures for priority queues. They are very efficient in - terms of memory (since they don't require per-value structure - metadata), and have the best amortized <tt>push</tt> and - <tt>pop</tt> performance for primitive types (<i>e.g.</i>, - <tt><b>int</b></tt>s).</p> - - <p>The STL's <tt>priority_queue</tt> implements this data - structure as an adapter over a sequence, typically - <tt>std::vector</tt> or <tt>std::deque</tt>, which correspond - to Figures <a href="#pq_different_underlying_dss">Underlying - Priority-Queue Data-Structures</a> A1 and A2, respectively.</p> - - <p>This is indeed an elegant example of the adapter concept and - the algorithm/container/iterator decomposition (see [<a href= - "references.html#nelson96stlpq">nelson96stlpql</a>]). There are - possibly reasons, however, why a binary-heap priority queue - would be better implemented as a container instead of a - sequence adapter:</p> - - <ol> - <li><tt>std::priority_queue</tt> cannot erase values from its - adapted sequence (irrespective of the sequence type). This - means that the memory use of an <tt>std::priority_queue</tt> - object is always proportional to the maximal number of values - it ever contained, and not to the number of values that it - currently contains (see <a href= - "priority_queue_text_pop_mem_usage_test.html">Priority Queue - Text <tt>pop</tt> Memory Use Test</a>); this implementation - of binary heaps acts very differently than other underlying - data structures (<i>e.g.</i>, pairing heaps).</li> - - <li>Some combinations of adapted sequences and value types - are very inefficient or just don't make sense. If one uses - <tt>std::priority_queue<std::vector<std::string> - > ></tt>, for example, then not only will each - operation perform a logarithmic number of - <tt>std::string</tt> assignments, but, furthermore, any - operation (including <tt>pop</tt>) can render the container - useless due to exceptions. Conversely, if one uses - <tt>std::priority_queue<std::deque<<b>int</b>> > - ></tt>, then each operation uses incurs a logarithmic - number of indirect accesses (through pointers) unnecessarily. - It might be better to let the container make a conservative - deduction whether to use the structure in Figures <a href= - "#pq_different_underlying_dss">Underlying Priority-Queue - Data-Structures</a> A1 or A2.</li> - - <li>There does not seem to be a systematic way to determine - what exactly can be done with the priority queue. - - <ol> - <li>If <tt>p</tt> is a priority queue adapting an - <tt>std::vector</tt>, then it is possible to iterate over - all values by using <tt>&p.top()</tt> and - <tt>&p.top() + p.size()</tt>, but this will not work - if <tt>p</tt> is adapting an <tt>std::deque</tt>; in any - case, one cannot use <tt>p.begin()</tt> and - <tt>p.end()</tt>. If a different sequence is adapted, it - is even more difficult to determine what can be - done.</li> - - <li>If <tt>p</tt> is a priority queue adapting an - <tt>std::deque</tt>, then the reference return by - <tt>p.top()</tt> will remain valid until it is popped, - but if <tt>p</tt> adapts an <tt>std::vector</tt>, the - next <tt>push</tt> will invalidate it. If a different - sequence is adapted, it is even more difficult to - determine what can be done.</li> - </ol> - </li> - - <li>Sequence-based binary heaps can still implement - linear-time <tt>erase</tt> and <tt>modify</tt> operations. - This means that if one needs, <i>e.g.</i>, to erase a small - (say logarithmic) number of values, then one might still - choose this underlying data structure. Using - <tt>std::priority_queue</tt>, however, this will generally - change the order of growth of the entire sequence of - operations.</li> - </ol> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/move_to_front_lu_policy.html b/libstdc++-v3/doc/html/ext/pb_ds/move_to_front_lu_policy.html deleted file mode 100644 index 4ed4d40bd06..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/move_to_front_lu_policy.html +++ /dev/null @@ -1,194 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>move_to_front_lu_policy Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>move_to_front_lu_policy</tt> Interface</h1> - - <p>A list-update policy that unconditionally moves elements to - the front of the list.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/list_update_policy.hpp"><tt>list_update_policy.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Template Parameters</a></h2> - - <table class="c1" width="100%" border="1" summary= - "Template Parameters"> - <tr> - <td width="20%" align="left"><b>Parameter</b></td> - - <td width="50%" align="left"><b>Description</b></td> - - <td width="30%" align="left"><b>Default Value</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="Allocator35940069" id= -"Allocator35940069"><b>class</b> Allocator </a> -</pre> - </td> - - <td> - <p>Allocator type.</p> - - <p>This is used only for definitions, e.g., the size - type.</p> - </td> - - <td> - <pre> -std::allocator<<b>char</b>> -</pre> - </td> - </tr> - </table> - - <h2><a name="link2" id="link2">Public Types and - Constants</a></h2> - - <h3><a name="link3" id="link3">Policy Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="allocator48440069" id="allocator48440069">allocator</a> -</pre> - </td> - - <td> - <pre> -<a href="#Allocator35940069"><tt>Allocator</tt></a> -</pre> - </td> - - <td> - <p><a href="#Allocator35940069"><tt>Allocator</tt></a> - type.</p> - </td> - </tr> - </table> - - <h3><a name="link4" id="link4">Metadata-Type - Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="metadata_type2849297114" id= -"metadata_type2849297114">metadata_type</a> -</pre> - </td> - - <td> - <pre> -<a href="null_lu_metadata.html"><span class= -"c2"><tt>null_lu_metadata</tt></span></a> -</pre> - </td> - - <td> - <p>Metadata on which this functor operates.</p> - - <p>In this case, none.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="metadata_reference583863863" id= -"metadata_reference583863863">metadata_reference</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#Allocator35940069"><tt>Allocator</tt></a>::<b>template</b> rebind< - <a href= -"#metadata_type2849297114"><tt>metadata_type</tt></a>>::other::reference -</pre> - </td> - - <td> - <p>Reference to metadata on which this functor - operates.</p> - </td> - </tr> - </table> - - <h2><a name="link5" id="link5">Public Methods</a></h2> - - <h3><a name="link6" id="link6">Metadata Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="#metadata_type2849297114"><tt>metadata_type</tt></a> - <b>operator</b>() - () <b>const</b> -</pre> - </td> - - <td> - <p>Creates a metadata object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>bool</b> - <b>operator</b>() - (<a href= -"#metadata_reference583863863"><tt>metadata_reference</tt></a> r_metadata) <b>const</b> -</pre> - </td> - - <td> - <p>Decides whether a metadata object should be moved to - the front of the list.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large.html b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large.html deleted file mode 100644 index 74d33a32606..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large.html +++ /dev/null @@ -1,215 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> -<title>"Multimap" Text Find Timing Test with Large Average - Secondary-Key to Primary-Key Ratio</title> -<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /> -</head> -<body> -<div id="page"> -<h1>"Multimap" Text Find Timing Test with Large Average - Secondary-Key to Primary-Key Ratio</h1> -<h2><a name="description" id="description">Description</a></h2> -<p>This test inserts a number of pairs into a container. The - first item of each pair is a string from an arbitrary text - [<a href="references.html#wickland96thirty">wickland96thirty</a>], and - the second is a uniform i.i.d.integer. The container is a - "multimap" - it considers the first member of each pair as a - primary key, and the second member of each pair as a secondary - key (see <a href="motivation.html#assoc_mapping_semantics">Motivation::Associative - Containers::Alternative to Multiple Equivalent Keys</a>). There - are 100 distinct primary keys, and the ratio of secondary keys - to primary keys ranges to about 20.</p> -<p>The test measures the average find-time as a function of the - number of values inserted. For <tt>pb_ds</tt>'s containers, it - finds the secondary key from a container obtained from finding - a primary key. For the native multimaps, it searches a range - obtained using <tt>std::equal_range</tt> on a primary key.</p> -<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/multimap_text_find_timing_large.cc"><tt>multimap_text_find_timing_test</tt></a> - thirty_years_among_the_dead_preproc.txt 100 3 4 4)</p> -<h2><a name="purpose" id="purpose">Purpose</a></h2> -<p>The test checks the find-time scalability of different - "multimap" designs (see <a href="motivation.html#assoc_mapping_semantics">Motivation::Associative - Containers::Mapping Semantics</a>).</p> -<h2><a name="results" id="results">Results</a></h2> -<p>Figures <a href="#NTG">NTG</a>, <a href="#NTM">NTM</a>, and - <a href="#NTL">NTL</a> show the results for "multimaps" which - use a tree-based container for primary keys, in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>, and - <a href="assoc_performance_tests.html#local"><u>local</u></a>, - respectively; Figures <a href="#NHG"></a>NHG, <a href="#NHM">NHM</a>, and <a href="#NHL">NHL</a> show the results for - "multimaps" which use a hash-based container for primary keys, - in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, - <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>, - and <a href="assoc_performance_tests.html#local"><u>local</u></a>, - respectively.</p> -<div id="NTG_res_div"> -<div id="NTG_gcc"> -<div id="NTG_multimap_text_find_timing_test_large_s2p_tree"> -<div id="NTG_assoc"> -<div id="NTG_Native_and_primary_tree-based_multimap_types_find_timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTG" id="NTG"><img src="multimap_text_find_timing_test_large_s2p_tree_gcc.png" alt="no image" /></a></h6>NTG: Native and primary tree-based multimap types find timing test - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_mmap- -<tt>std::multimap</tt></li> -<li> -rb_tree_mmap_lu_mtf_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -, mapping each key to <a href="list_update.html"><tt>list_update</tt></a> - with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a> -</li> -<li> -rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NTM_res_div"> -<div id="NTM_msvc"> -<div id="NTM_multimap_text_find_timing_test_large_s2p_tree"> -<div id="NTM_assoc"> -<div id="NTM_Native_and_primary_tree-based_multimap_types_find_timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTM" id="NTM"><img src="multimap_text_find_timing_test_large_s2p_tree_msvc.png" alt="no image" /></a></h6>NTM: Native and primary tree-based multimap types find timing test - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_mmap- -<tt>std::multimap</tt></li> -<li> -rb_tree_mmap_lu_mtf_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -, mapping each key to <a href="list_update.html"><tt>list_update</tt></a> - with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a> -</li> -<li> -rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NTL_res_div"> -<div id="NTL_local"> -<div id="NTL_multimap_text_find_timing_test_large_s2p_tree"> -<div id="NTL_assoc"> -<div id="NTL_Native_and_primary_tree-based_multimap_types_find_timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTL" id= "NTL"><img src="multimap_text_find_timing_test_large_s2p_tree_local.png" alt="no image" /></a></h6>NTL: Native and primary tree-based multimap types find timing test - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NHG_res_div"> -<div id="NHG_gcc"> -<div id="NHG_multimap_text_find_timing_test_large_s2p_hash"> -<div id="NHG_assoc"> -<div id="NHG_Native_and_primary_hash-based_multimap_types_find_timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHG" id="NHG"><img src="multimap_text_find_timing_test_large_s2p_hash_gcc.png" alt="no image" /></a></h6>NHG: Native and primary hash-based multimap types find timing test - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_hash_mmap- -<tt>__gnucxx::hash_multimap</tt></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_lu_mtf_set- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="list_update.html"><tt>list_update</tt></a> - with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a> -</li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NHM_res_div"> -<div id="NHM_msvc"> -<div id="NHM_multimap_text_find_timing_test_large_s2p_hash"> -<div id="NHM_assoc"> -<div id="NHM_Native_and_primary_hash-based_multimap_types_find_timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHM" id="NHM"><img src="multimap_text_find_timing_test_large_s2p_hash_msvc.png" alt="no image" /></a></h6>NHM: Native and primary hash-based multimap types find timing test - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_hash_mmap- -<tt>stdext::hash_multimap</tt></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_lu_mtf_set- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="list_update.html"><tt>list_update</tt></a> - with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a> -</li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NHL_res_div"> -<div id="NHL_local"> -<div id="NHL_multimap_text_find_timing_test_large_s2p_hash"> -<div id="NHL_assoc"> -<div id="NHL__Native_and_primary_hash-based_multimap_types_find_timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHL" id= "NHL"><img src="multimap_text_find_timing_test_large_s2p_hash_local.png" alt="no image" /></a></h6>NHL: Native and primary hash-based multimap types find timing test - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<h2><a name="observations" id="observations">Observations</a></h2> -<p>See <a href="assoc_performance_tests.html#msc">Observations::Mapping-Semantics - Considerations</a>.</p> -</div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_hash_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_hash_gcc.png Binary files differdeleted file mode 100644 index 03a62f52b04..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_hash_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_hash_local.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_hash_local.png Binary files differdeleted file mode 100644 index 121af9e45a1..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_hash_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_hash_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_hash_msvc.png Binary files differdeleted file mode 100644 index 4462d289afd..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_hash_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_tree_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_tree_gcc.png Binary files differdeleted file mode 100644 index 89e464481fd..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_tree_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_tree_local.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_tree_local.png Binary files differdeleted file mode 100644 index 3ac90d56c86..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_tree_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_tree_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_tree_msvc.png Binary files differdeleted file mode 100644 index 20320953e0d..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_tree_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small.html b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small.html deleted file mode 100644 index 1b379d821c3..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small.html +++ /dev/null @@ -1,215 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> -<title>"Multimap" Text Find Timing Test with Small Average - Secondary-Key to Primary-Key Ratio</title> -<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /> -</head> -<body> -<div id="page"> -<h1>"Multimap" Text Find Timing Test with Small Average - Secondary-Key to Primary-Key Ratio</h1> -<h2><a name="description" id="description">Description</a></h2> -<p>This test inserts a number of pairs into a container. The - first item of each pair is a string from an arbitrary text - [<a href="references.html#wickland96thirty">wickland96thirty</a>], and - the second is a uniform i.i.d.integer. The container is a - "multimap" - it considers the first member of each pair as a - primary key, and the second member of each pair as a secondary - key (see <a href="motivation.html#assoc_mapping_semantics">Motivation::Associative - Containers::Alternative to Multiple Equivalent Keys</a>). There - are 400 distinct primary keys, and the ratio of secondary keys - to primary keys ranges from 1 to 5.</p> -<p>The test measures the average find-time as a function of the - number of values inserted. For <tt>pb_ds</tt>'s containers, it - finds the secondary key from a container obtained from finding - a primary key. For the native multimaps, it searches a range - obtained using <tt>std::equal_range</tt> on a primary key.</p> -<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/multimap_text_find_timing_small.cc"><tt>multimap_text_find_timing_test</tt></a> - thirty_years_among_the_dead_preproc.txt 400 1 1 6)</p> -<h2><a name="purpose" id="purpose">Purpose</a></h2> -<p>The test checks the find-time scalability of different - "multimap" designs (see <a href="motivation.html#assoc_mapping_semantics">Motivation::Associative - Containers::Mapping Semantics</a>).</p> -<h2><a name="results" id="results">Results</a></h2> -<p>Figures <a href="#NTG">NTG</a>, <a href="#NTM">NTM</a>, and - <a href="#NTL">NTL</a> show the results for "multimaps" which - use a tree-based container for primary keys, in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>, and - <a href="assoc_performance_tests.html#local"><u>local</u></a>, - respectively; Figures <a href="#NHG"></a>NHG, <a href="#NHM">NHM</a>, and <a href="#NHL">NHL</a> show the results for - "multimaps" which use a hash-based container for primary keys, - in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, - <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>, - and <a href="assoc_performance_tests.html#local"><u>local</u></a>, - respectively.</p> -<div id="NTG_res_div"> -<div id="NTG_gcc"> -<div id="NTG_multimap_text_find_timing_test_small_s2p_tree"> -<div id="NTG_assoc"> -<div id="NHG_Native_and_primary_tree-based_multimap_types_find_timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTG" id="NTG"><img src="multimap_text_find_timing_test_small_s2p_tree_gcc.png" alt="no image" /></a></h6>NTG: NHG Native and primary tree-based multimap types find timing test - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_mmap- -<tt>std::multimap</tt></li> -<li> -rb_tree_mmap_lu_mtf_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -, mapping each key to <a href="list_update.html"><tt>list_update</tt></a> - with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a> -</li> -<li> -rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NTM_res_div"> -<div id="NTM_msvc"> -<div id="NTM_multimap_text_find_timing_test_small_s2p_tree"> -<div id="NTM_assoc"> -<div id="NHM_Native_and_primary_tree-based_multimap_types_find_timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTM" id="NTM"><img src="multimap_text_find_timing_test_small_s2p_tree_msvc.png" alt="no image" /></a></h6>NTM: NHM Native and primary tree-based multimap types find timing test - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_mmap- -<tt>std::multimap</tt></li> -<li> -rb_tree_mmap_lu_mtf_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -, mapping each key to <a href="list_update.html"><tt>list_update</tt></a> - with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a> -</li> -<li> -rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NTL_res_div"> -<div id="NTL_local"> -<div id="NTL_multimap_text_find_timing_test_small_s2p_tree"> -<div id="NTL_assoc"> -<div id="NTL_Native_and_primary_tree-based_multimap_types_find_timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTL" id= "NTL"><img src="multimap_text_find_timing_test_small_s2p_tree_local.png" alt="no image" /></a></h6>NTL: Native and primary tree-based multimap types find timing test - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NHG_res_div"> -<div id="NHG_gcc"> -<div id="NHG_multimap_text_find_timing_test_small_s2p_hash"> -<div id="NHG_assoc"> -<div id="NHG_Native_and_primary_hash-based_multimap_types_find_timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHG" id="NHG"><img src="multimap_text_find_timing_test_small_s2p_hash_gcc.png" alt="no image" /></a></h6>NHG: Native and primary hash-based multimap types find timing test - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_hash_mmap- -<tt>__gnucxx::hash_multimap</tt></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_lu_mtf_set- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="list_update.html"><tt>list_update</tt></a> - with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a> -</li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NHM_res_div"> -<div id="NHM_msvc"> -<div id="NHM_multimap_text_find_timing_test_small_s2p_hash"> -<div id="NHM_assoc"> -<div id="NHM_Native_and_primary_hash-based_multimap_types_find_timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHM" id="NHM"><img src="multimap_text_find_timing_test_small_s2p_hash_msvc.png" alt="no image" /></a></h6>NHM: Native and primary hash-based multimap types find timing test - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_hash_mmap- -<tt>stdext::hash_multimap</tt></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_lu_mtf_set- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="list_update.html"><tt>list_update</tt></a> - with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a> -</li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NHL_res_div"> -<div id="NHL_local"> -<div id="NHL_multimap_text_find_timing_test_small_s2p_hash"> -<div id="NHL_assoc"> -<div id="NHL__Native_and_primary_hash-based_multimap_types_find_timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHL" id= "NHL"><img src="multimap_text_find_timing_test_small_s2p_hash_local.png" alt="no image" /></a></h6>NHL: Native and primary hash-based multimap types find timing test - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<h2><a name="observations" id="observations">Observations</a></h2> -<p>See <a href="assoc_performance_tests.html#msc">Observations::Mapping-Semantics - Considerations</a>.</p> -</div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_hash_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_hash_gcc.png Binary files differdeleted file mode 100644 index 60e850937a9..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_hash_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_hash_local.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_hash_local.png Binary files differdeleted file mode 100644 index 4fc3d594afc..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_hash_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_hash_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_hash_msvc.png Binary files differdeleted file mode 100644 index 11aa9e07b6a..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_hash_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_tree_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_tree_gcc.png Binary files differdeleted file mode 100644 index f54369b15b4..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_tree_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_tree_local.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_tree_local.png Binary files differdeleted file mode 100644 index 123c3a648b8..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_tree_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_tree_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_tree_msvc.png Binary files differdeleted file mode 100644 index 035fd9389b6..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_tree_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large.html b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large.html deleted file mode 100644 index 4affbf44054..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large.html +++ /dev/null @@ -1,210 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> -<title>Hash-List "Multimap" Text Memory Use Test with Large - Average Secondary-Key to Primary-Key Ratio</title> -<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /> -</head> -<body> -<div id="page"> -<h1>"Multimap" Text Memory Use Test with Large Average - Secondary-Key to Primary-Key Ratio</h1> -<h2><a name="description" id="description">Description</a></h2> -<p>This test inserts a number of pairs into a container. The - first item of each pair is a string from an arbitrary text - [<a href="references.html#wickland96thirty">wickland96thirty</a>], and - the second is a uniform i.i.d.integer. The container is a - "multimap" - it considers the first member of each pair as a - primary key, and the second member of each pair as a secondary - key (see <a href="motivation.html#assoc_mapping_semantics">Motivation::Associative - Containers::Alternative to Multiple Equivalent Keys</a>). There - are 100 distinct primary keys. The test measures the memory use - as a function of the number of values inserted.</p> -<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem_usage_large.cc"><tt>multimap_text_insert_mem_usage_test</tt></a> - thirty_years_among_the_dead_preproc.txt 100 200 2100 100)</p> -<h2><a name="purpose" id="purpose">Purpose</a></h2> -<p>The test checks the memory scalability of different - "multimap" designs (see <a href="motivation.html#assoc_mapping_semantics">Motivation::Associative - Containers::Mapping Semantics</a>).</p> -<h2><a name="results" id="results">Results</a></h2> -<p>Figures <a href="#NTG">NTG</a>, <a href="#NTM">NTM</a>, and - <a href="#NTL">NTL</a> show the results for "multimaps" which - use a tree-based container for primary keys, in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>, and - <a href="assoc_performance_tests.html#local"><u>local</u></a>, - respectively; Figures <a href="#NHG"></a>NHG, <a href="#NHM">NHM</a>, and <a href="#NHL">NHL</a> show the results for - "multimaps" which use a hash-based container for primary keys, - in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, - <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>, - and <a href="assoc_performance_tests.html#local"><u>local</u></a>, - respectively.</p> -<div id="NTG_res_div"> -<div id="NTG_gcc"> -<div id="NTG_multimap_text_insert_mem_usage_test_large_s2p_tree"> -<div id="NTG_assoc"> -<div id="NHG_Native_and_primary_tree-based_multimap_types_mem_usage_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTG" id="NTG"><img src="multimap_text_insert_mem_usage_test_large_s2p_tree_gcc.png" alt="no image" /></a></h6>NTG: NHG Native and primary tree-based multimap types mem usage test - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -<li> -n_mmap- -<tt>std::multimap</tt></li> -<li> -rb_tree_mmap_lu_mtf_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -, mapping each key to <a href="list_update.html"><tt>list_update</tt></a> - with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NTM_res_div"> -<div id="NTM_msvc"> -<div id="NTM_multimap_text_insert_mem_usage_test_large_s2p_tree"> -<div id="NTM_assoc"> -<div id="NHM_Native_and_primary_tree-based_multimap_types_mem_usage_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTM" id="NTM"><img src="multimap_text_insert_mem_usage_test_large_s2p_tree_msvc.png" alt="no image" /></a></h6>NTM: NHM Native and primary tree-based multimap types mem usage test - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_mmap- -<tt>std::multimap</tt></li> -<li> -rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -<li> -rb_tree_mmap_lu_mtf_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -, mapping each key to <a href="list_update.html"><tt>list_update</tt></a> - with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NTL_res_div"> -<div id="NTL_local"> -<div id="NTL_multimap_text_insert_mem_usage_test_large_s2p_tree"> -<div id="NTL_assoc"> -<div id="NTL_Native_and_primary_tree-based_multimap_types_mem_usage_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTL" id= "NTL"><img src="multimap_text_insert_mem_usage_test_large_s2p_tree_local.png" alt="no image" /></a></h6>NTL: Native and primary tree-based multimap types mem usage test - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NHG_res_div"> -<div id="NHG_gcc"> -<div id="NHG_multimap_text_insert_mem_usage_test_large_s2p_hash"> -<div id="NHG_assoc"> -<div id="NHG_Native_and_primary_hash-based_multimap_types_mem_usage_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHG" id="NHG"><img src="multimap_text_insert_mem_usage_test_large_s2p_hash_gcc.png" alt="no image" /></a></h6>NHG: Native and primary hash-based multimap types mem usage test - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -<li> -n_hash_mmap- -<tt>__gnucxx::hash_multimap</tt></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_lu_mtf_set- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="list_update.html"><tt>list_update</tt></a> - with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NHM_res_div"> -<div id="NHM_msvc"> -<div id="NHM_multimap_text_insert_mem_usage_test_large_s2p_hash"> -<div id="NHM_assoc"> -<div id="NHM_Native_and_primary_hash-based_multimap_types_mem_usage_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHM" id="NHM"><img src="multimap_text_insert_mem_usage_test_large_s2p_hash_msvc.png" alt="no image" /></a></h6>NHM: Native and primary hash-based multimap types mem usage test - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_hash_mmap- -<tt>stdext::hash_multimap</tt></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_lu_mtf_set- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="list_update.html"><tt>list_update</tt></a> - with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NHL_res_div"> -<div id="NHL_local"> -<div id="NHL_multimap_text_insert_mem_usage_test_large_s2p_hash"> -<div id="NHL_assoc"> -<div id="NHL__Native_and_primary_hash-based_multimap_types_mem_usage_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHL" id= "NHL"><img src="multimap_text_insert_mem_usage_test_large_s2p_hash_local.png" alt="no image" /></a></h6>NHL: Native and primary hash-based multimap types mem usage test - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<h2><a name="observations" id="observations">Observations</a></h2> -<p>See <a href="assoc_performance_tests.html#msc">Observations::Mapping-Semantics - Considerations</a>.</p> -</div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_hash_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_hash_gcc.png Binary files differdeleted file mode 100644 index 51a3f8d61c1..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_hash_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_hash_local.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_hash_local.png Binary files differdeleted file mode 100644 index 73a35cef612..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_hash_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_hash_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_hash_msvc.png Binary files differdeleted file mode 100644 index 3a938c0bb0f..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_hash_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_tree_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_tree_gcc.png Binary files differdeleted file mode 100644 index a992d8f7cfb..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_tree_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_tree_local.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_tree_local.png Binary files differdeleted file mode 100644 index fce364cb318..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_tree_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_tree_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_tree_msvc.png Binary files differdeleted file mode 100644 index 26841bd1073..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_tree_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small.html b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small.html deleted file mode 100644 index 462fce4ca36..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small.html +++ /dev/null @@ -1,212 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> -<title>Hash-List "Multimap" Text Memory Use Test with Small - Average Secondary-Key to Primary-Key Ratio</title> -<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /> -</head> -<body> -<div id="page"> -<h1>"Multimap" Text Memory Use Test with Small Average - Secondary-Key to Primary-Key Ratio</h1> -<h2><a name="description" id="description">Description</a></h2> -<p>This test inserts a number of pairs into a container. The - first item of each pair is a string from an arbitrary text - [<a href="references.html#wickland96thirty">wickland96thirty</a>], and - the second is a uniform i.i.d.integer. The container is a - "multimap" - it considers the first member of each pair as a - primary key, and the second member of each pair as a secondary - key (see <a href="motivation.html#assoc_mapping_semantics">Motivation::Associative - Containers::Alternative to Multiple Equivalent Keys</a>). There - are 100 distinct primary keys, and the ratio of secondary keys - to primary keys ranges to about 20.</p> -<p>The test measures the memory use as a function of the number - of values inserted.</p> -<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem_usage_small.cc"><tt>multimap_text_insert_mem_usage_test</tt></a> - thirty_years_among_the_dead_preproc.txt 100 3 4 4)</p> -<h2><a name="purpose" id="purpose">Purpose</a></h2> -<p>The test checks the memory scalability of different - "multimap" designs (see <a href="motivation.html#assoc_mapping_semantics">Motivation::Associative - Containers::Mapping Semantics</a>).</p> -<h2><a name="results" id="results">Results</a></h2> -<p>Figures <a href="#NTG">NTG</a>, <a href="#NTM">NTM</a>, and - <a href="#NTL">NTL</a> show the results for "multimaps" which - use a tree-based container for primary keys, in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>, and - <a href="assoc_performance_tests.html#local"><u>local</u></a>, - respectively; Figures <a href="#NHG"></a>NHG, <a href="#NHM">NHM</a>, and <a href="#NHL">NHL</a> show the results for - "multimaps" which use a hash-based container for primary keys, - in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, - <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>, - and <a href="assoc_performance_tests.html#local"><u>local</u></a>, - respectively.</p> -<div id="NTG_res_div"> -<div id="NTG_gcc"> -<div id="NTG_multimap_text_insert_mem_usage_test_small_s2p_tree"> -<div id="NTG_assoc"> -<div id="NTG_Native_and_primary_tree-based_multimap_types_mem_usage_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTG" id="NTG"><img src="multimap_text_insert_mem_usage_test_small_s2p_tree_gcc.png" alt="no image" /></a></h6>NTG: Native and primary tree-based multimap types mem usage test - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -<li> -n_mmap- -<tt>std::multimap</tt></li> -<li> -rb_tree_mmap_lu_mtf_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -, mapping each key to <a href="list_update.html"><tt>list_update</tt></a> - with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NTM_res_div"> -<div id="NTM_msvc"> -<div id="NTM_multimap_text_insert_mem_usage_test_small_s2p_tree"> -<div id="NTM_assoc"> -<div id="NHM_Native_and_primary_tree-based_multimap_types_mem_usage_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTM" id="NTM"><img src="multimap_text_insert_mem_usage_test_small_s2p_tree_msvc.png" alt="no image" /></a></h6>NTM: NHM Native and primary tree-based multimap types mem usage test - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -<li> -n_mmap- -<tt>std::multimap</tt></li> -<li> -rb_tree_mmap_lu_mtf_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -, mapping each key to <a href="list_update.html"><tt>list_update</tt></a> - with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NTL_res_div"> -<div id="NTL_local"> -<div id="NTL_multimap_text_insert_mem_usage_test_small_s2p_tree"> -<div id="NTL_assoc"> -<div id="NTL_Native_and_primary_tree-based_multimap_types_mem_usage_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTL" id= "NTL"><img src="multimap_text_insert_mem_usage_test_small_s2p_tree_local.png" alt="no image" /></a></h6>NTL: Native and primary tree-based multimap types mem usage test - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NHG_res_div"> -<div id="NHG_gcc"> -<div id="NHG_multimap_text_insert_mem_usage_test_small_s2p_hash"> -<div id="NHG_assoc"> -<div id="NHG_Native_and_primary_hash-based_multimap_types_mem_usage_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHG" id="NHG"><img src="multimap_text_insert_mem_usage_test_small_s2p_hash_gcc.png" alt="no image" /></a></h6>NHG: Native and primary hash-based multimap types mem usage test - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -<li> -n_hash_mmap- -<tt>__gnucxx::hash_multimap</tt></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_lu_mtf_set- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="list_update.html"><tt>list_update</tt></a> - with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NHM_res_div"> -<div id="NHM_msvc"> -<div id="NHM_multimap_text_insert_mem_usage_test_small_s2p_hash"> -<div id="NHM_assoc"> -<div id="NHM_Native_and_primary_hash-based_multimap_types_mem_usage_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHM" id="NHM"><img src="multimap_text_insert_mem_usage_test_small_s2p_hash_msvc.png" alt="no image" /></a></h6>NHM: Native and primary hash-based multimap types mem usage test - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -<li> -n_hash_mmap- -<tt>stdext::hash_multimap</tt></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_lu_mtf_set- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="list_update.html"><tt>list_update</tt></a> - with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NHL_res_div"> -<div id="NHL_local"> -<div id="NHL_multimap_text_insert_mem_usage_test_small_s2p_hash"> -<div id="NHL_assoc"> -<div id="NHL__Native_and_primary_hash-based_multimap_types_mem_usage_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHL" id= "NHL"><img src="multimap_text_insert_mem_usage_test_small_s2p_hash_local.png" alt="no image" /></a></h6>NHL: Native and primary hash-based multimap types mem usage test - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<h2><a name="observations" id="observations">Observations</a></h2> -<p>See <a href="assoc_performance_tests.html#msc">Observations::Mapping-Semantics - Considerations</a>.</p> -</div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_hash_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_hash_gcc.png Binary files differdeleted file mode 100644 index d3eba9da47e..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_hash_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_hash_local.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_hash_local.png Binary files differdeleted file mode 100644 index df0becc112c..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_hash_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_hash_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_hash_msvc.png Binary files differdeleted file mode 100644 index 1828896ee5f..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_hash_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_tree_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_tree_gcc.png Binary files differdeleted file mode 100644 index 9334bc35bc7..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_tree_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_tree_local.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_tree_local.png Binary files differdeleted file mode 100644 index 9bacb35ce54..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_tree_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_tree_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_tree_msvc.png Binary files differdeleted file mode 100644 index 2f20e57e555..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_tree_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large.html b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large.html deleted file mode 100644 index b9a2d995294..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large.html +++ /dev/null @@ -1,212 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> -<title>"Multimap" Text Insert Timing Test with Large Average - Secondary-Key to Primary-Key Ratio</title> -<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /> -</head> -<body> -<div id="page"> -<h1>"Multimap" Text Insert Timing Test with Large Average - Secondary-Key to Primary-Key Ratio</h1> -<h2><a name="description" id="description">Description</a></h2> -<p>This test inserts a number of pairs into a container. The - first item of each pair is a string from an arbitrary text - [<a href="references.html#wickland96thirty">wickland96thirty</a>], and - the second is a uniform i.i.d.integer. The container is a - "multimap" - it considers the first member of each pair as a - primary key, and the second member of each pair as a secondary - key (see <a href="motivation.html#assoc_mapping_semantics">Motivation::Associative - Containers::Alternative to Multiple Equivalent Keys</a>). There - are 100 distinct primary keys, and the ratio of secondary keys - to primary keys ranges to about 20.</p> -<p>The test measures the memory use as a function of the number - of values inserted.</p> -<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem_usage_large.cc"><tt>multimap_text_insert_mem_usage_test</tt></a> - thirty_years_among_the_dead_preproc.txt 400 1 6 6)</p> -<h2><a name="purpose" id="purpose">Purpose</a></h2> -<p>The test checks the insert-time scalability of different - "multimap" designs (see <a href="motivation.html#assoc_mapping_semantics">Motivation::Associative - Containers::Mapping Semantics</a>).</p> -<h2><a name="results" id="results">Results</a></h2> -<p>Figures <a href="#NTG">NTG</a>, <a href="#NTM">NTM</a>, and - <a href="#NTL">NTL</a> show the results for "multimaps" which - use a tree-based container for primary keys, in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>, and - <a href="assoc_performance_tests.html#local"><u>local</u></a>, - respectively; Figures <a href="#NHG"></a>NHG, <a href="#NHM">NHM</a>, and <a href="#NHL">NHL</a> show the results for - "multimaps" which use a hash-based container for primary keys, - in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, - <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>, - and <a href="assoc_performance_tests.html#local"><u>local</u></a>, - respectively.</p> -<div id="NTG_res_div"> -<div id="NTG_gcc"> -<div id="NTG_multimap_text_insert_timing_test_large_s2p_tree"> -<div id="NTG_assoc"> -<div id="NTG_Native_and_primary_tree-based_multimap_types_insert_timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTG" id="NTG"><img src="multimap_text_insert_timing_test_large_s2p_tree_gcc.png" alt="no image" /></a></h6>NTG: Native and primary tree-based multimap types insert timing test - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_mmap- -<tt>std::multimap</tt></li> -<li> -rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -<li> -rb_tree_mmap_lu_mtf_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -, mapping each key to <a href="list_update.html"><tt>list_update</tt></a> - with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NTM_res_div"> -<div id="NTM_msvc"> -<div id="NTM_multimap_text_insert_timing_test_large_s2p_tree"> -<div id="NTM_assoc"> -<div id="NHM_Native_and_primary_tree-based_multimap_types_insert_timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTM" id="NTM"><img src="multimap_text_insert_timing_test_large_s2p_tree_msvc.png" alt="no image" /></a></h6>NTM: NHM Native and primary tree-based multimap types insert timing test - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -<li> -n_mmap- -<tt>std::multimap</tt></li> -<li> -rb_tree_mmap_lu_mtf_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -, mapping each key to <a href="list_update.html"><tt>list_update</tt></a> - with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NTL_res_div"> -<div id="NTL_local"> -<div id="NTL_multimap_text_insert_timing_test_large_s2p_tree"> -<div id="NTL_assoc"> -<div id="NTL_Native_and_primary_tree-based_multimap_types_insert_timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTL" id= "NTL"><img src="multimap_text_insert_timing_test_large_s2p_tree_local.png" alt="no image" /></a></h6>NTL: Native and primary tree-based multimap types insert timing test - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NHG_res_div"> -<div id="NHG_gcc"> -<div id="NHG_multimap_text_insert_timing_test_large_s2p_hash"> -<div id="NHG_assoc"> -<div id="NHG_Native_and_primary_hash-based_multimap_types_insert_timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHG" id="NHG"><img src="multimap_text_insert_timing_test_large_s2p_hash_gcc.png" alt="no image" /></a></h6>NHG: Native and primary hash-based multimap types insert timing test - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_hash_mmap- -<tt>__gnucxx::hash_multimap</tt></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_lu_mtf_set- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="list_update.html"><tt>list_update</tt></a> - with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NHM_res_div"> -<div id="NHM_msvc"> -<div id="NHM_multimap_text_insert_timing_test_large_s2p_hash"> -<div id="NHM_assoc"> -<div id="NHM_Native_and_primary_hash-based_multimap_types_insert_timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHM" id="NHM"><img src="multimap_text_insert_timing_test_large_s2p_hash_msvc.png" alt="no image" /></a></h6>NHM: Native and primary hash-based multimap types insert timing test - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_hash_mmap- -<tt>stdext::hash_multimap</tt></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_lu_mtf_set- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="list_update.html"><tt>list_update</tt></a> - with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NHL_res_div"> -<div id="NHL_local"> -<div id="NHL_multimap_text_insert_timing_test_large_s2p_hash"> -<div id="NHL_assoc"> -<div id="NHL__Native_and_primary_hash-based_multimap_types_insert_timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHL" id= "NHL"><img src="multimap_text_insert_timing_test_large_s2p_hash_local.png" alt="no image" /></a></h6>NHL: Native and primary hash-based multimap types insert timing test - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<h2><a name="observations" id="observations">Observations</a></h2> -<p>See <a href="assoc_performance_tests.html#msc">Observations::Mapping-Semantics - Considerations</a>.</p> -</div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_hash_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_hash_gcc.png Binary files differdeleted file mode 100644 index 55b0bf46732..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_hash_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_hash_local.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_hash_local.png Binary files differdeleted file mode 100644 index de6ee23391e..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_hash_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_hash_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_hash_msvc.png Binary files differdeleted file mode 100644 index 02f5d0b20ae..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_hash_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_tree_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_tree_gcc.png Binary files differdeleted file mode 100644 index 83366eb3756..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_tree_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_tree_local.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_tree_local.png Binary files differdeleted file mode 100644 index 307ca2db187..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_tree_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_tree_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_tree_msvc.png Binary files differdeleted file mode 100644 index 47196bff7f2..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_tree_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small.html b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small.html deleted file mode 100644 index cda3629b7b2..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small.html +++ /dev/null @@ -1,217 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> -<title>"Multimap" Text Insert Timing Test with Small Average - Secondary-Key to Primary-Key Ratio</title> -<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /> -</head> -<body> -<div id="page"> -<h1>"Multimap" Text Insert Timing Test with Small Average - Secondary-Key to Primary-Key Ratio</h1> -<h2><a name="description" id="description">Description</a></h2> -<p>This test inserts a number of pairs into a container. The - first item of each pair is a string from an arbitrary text - [<a href="references.html#wickland96thirty">wickland96thirty</a>], and - the second is a uniform i.i.d.integer. The container is a - "multimap" - it considers the first member of each pair as a - primary key, and the second member of each pair as a secondary - key (see <a href="motivation.html#assoc_mapping_semantics">Motivation::Associative - Containers::Alternative to Multiple Equivalent Keys</a>). There - are 400 distinct primary keys, and the ratio of secondary keys - to primary keys ranges from 1 to 5.</p> -<p>The test measures the average insert-time as a function of - the number of values inserted. For <tt>pb_ds</tt>'s containers, - it inserts a primary key into the primary associative - container, then a secondary key into the secondary associative - container. For the native multimaps, it obtains a range using - <tt>std::equal_range</tt>, and inserts a value only if it was - not contained already.</p> -<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_timing_small.cc"><tt>multimap_text_insert_timing_test</tt></a> - thirty_years_among_the_dead_preproc.txt 400 1 1 6)</p> -<h2><a name="purpose" id="purpose">Purpose</a></h2> -<p>The test checks the insert-time scalability of different - "multimap" designs (see <a href="motivation.html#assoc_mapping_semantics">Motivation::Associative - Containers::Alternative to Multiple Equivalent Keys</a>).</p> -<h2><a name="results" id="results">Results</a></h2> -<p>Figures <a href="#NTG">NTG</a>, <a href="#NTM">NTM</a>, and - <a href="#NTL">NTL</a> show the results for "multimaps" which - use a tree-based container for primary keys, in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>, and - <a href="assoc_performance_tests.html#local"><u>local</u></a>, - respectively; Figures <a href="#NHG"></a>NHG, <a href="#NHM">NHM</a>, and <a href="#NHL">NHL</a> show the results for - "multimaps" which use a hash-based container for primary keys, - in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, - <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>, - and <a href="assoc_performance_tests.html#local"><u>local</u></a>, - respectively.</p> -<div id="NTG_res_div"> -<div id="NTG_gcc"> -<div id="NTG_multimap_text_insert_timing_test_small_s2p_tree"> -<div id="NTG_assoc"> -<div id="NTG_Native_and_primary_tree-based_multimap_types_insert_timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTG" id="NTG"><img src="multimap_text_insert_timing_test_small_s2p_tree_gcc.png" alt="no image" /></a></h6>NTG: Native and primary tree-based multimap types insert timing test - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_mmap- -<tt>std::multimap</tt></li> -<li> -rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -<li> -rb_tree_mmap_lu_mtf_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -, mapping each key to <a href="list_update.html"><tt>list_update</tt></a> - with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NTM_res_div"> -<div id="NTM_msvc"> -<div id="NTM_multimap_text_insert_timing_test_small_s2p_tree"> -<div id="NTM_assoc"> -<div id="NHM_Native_and_primary_tree-based_multimap_types_insert_timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTM" id="NTM"><img src="multimap_text_insert_timing_test_small_s2p_tree_msvc.png" alt="no image" /></a></h6>NTM: NHM Native and primary tree-based multimap types insert timing test - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -<li> -n_mmap- -<tt>std::multimap</tt></li> -<li> -rb_tree_mmap_lu_mtf_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -, mapping each key to <a href="list_update.html"><tt>list_update</tt></a> - with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NTL_res_div"> -<div id="NTL_local"> -<div id="NTL_multimap_text_insert_timing_test_small_s2p_tree"> -<div id="NTL_assoc"> -<div id="NTL_Native_and_primary_tree-based_multimap_types_insert_timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTL" id= "NTL"><img src="multimap_text_insert_timing_test_small_s2p_tree_local.png" alt="no image" /></a></h6>NTL: Native and primary tree-based multimap types insert timing test - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NHG_res_div"> -<div id="NHG_gcc"> -<div id="NHG_multimap_text_insert_timing_test_small_s2p_hash"> -<div id="NHG_assoc"> -<div id="NHG_Native_and_primary_hash-based_multimap_types_insert_timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHG" id="NHG"><img src="multimap_text_insert_timing_test_small_s2p_hash_gcc.png" alt="no image" /></a></h6>NHG: Native and primary hash-based multimap types insert timing test - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_hash_mmap- -<tt>__gnucxx::hash_multimap</tt></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_lu_mtf_set- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="list_update.html"><tt>list_update</tt></a> - with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NHM_res_div"> -<div id="NHM_msvc"> -<div id="NHM_multimap_text_insert_timing_test_small_s2p_hash"> -<div id="NHM_assoc"> -<div id="NHM_Native_and_primary_hash-based_multimap_types_insert_timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHM" id="NHM"><img src="multimap_text_insert_timing_test_small_s2p_hash_msvc.png" alt="no image" /></a></h6>NHM: Native and primary hash-based multimap types insert timing test - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i></li> -<li> -n_hash_mmap- -<tt>stdext::hash_multimap</tt></li> -<li> -cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_mmap_lu_mtf_set- -<a href="cc_hash_table.html"><tt>cc_hash_table</tt></a> -with <tt>Comb_Hash_Fn</tt> = <a href="direct_mask_range_hashing.html"><tt>direct_mask_range_hashing</tt></a> -, and <tt>Resize_Policy</tt> = <a href="hash_standard_resize_policy.html"><tt>hash_standard_resize_policy</tt></a> - with <tt>Size_Policy</tt> = <a href="hash_exponential_size_policy.html"><tt>hash_exponential_size_policy</tt></a> -, and <tt>Trigger_Policy</tt> = <a href="hash_load_check_resize_trigger.html"><tt>hash_load_check_resize_trigger</tt></a> - with <i>α<sub>min</sub></i> = <i>1/8</i> and <i>α<sub>max</sub></i> = <i>1/2</i>, mapping each key to <a href="list_update.html"><tt>list_update</tt></a> - with <tt>Update_Policy</tt> = <a href="move_to_front_lu_policy.html"><tt>move_to_front_lu_policy</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NHL_res_div"> -<div id="NHL_local"> -<div id="NHL_multimap_text_insert_timing_test_small_s2p_hash"> -<div id="NHL_assoc"> -<div id="NHL_Native_and_primary_hash-based_multimap_types_insert_timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NHL" id= "NHL"><img src="multimap_text_insert_timing_test_small_s2p_hash_local.png" alt="no image" /></a></h6>NHL: Native and primary hash-based multimap types insert timing test - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<h2><a name="observations" id="observations">Observations</a></h2> -<p>See <a href="assoc_performance_tests.html#msc">Observations::Mapping-Semantics - Considerations</a>.</p> -</div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_hash_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_hash_gcc.png Binary files differdeleted file mode 100644 index 3c2d87ecfac..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_hash_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_hash_local.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_hash_local.png Binary files differdeleted file mode 100644 index 4174fabe923..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_hash_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_hash_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_hash_msvc.png Binary files differdeleted file mode 100644 index 81d5839044e..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_hash_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_tree_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_tree_gcc.png Binary files differdeleted file mode 100644 index 368f07350c2..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_tree_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_tree_local.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_tree_local.png Binary files differdeleted file mode 100644 index c5f4e57e6d7..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_tree_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_tree_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_tree_msvc.png Binary files differdeleted file mode 100644 index 99f2d690fa5..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_tree_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/null_hash_fn.html b/libstdc++-v3/doc/html/ext/pb_ds/null_hash_fn.html deleted file mode 100644 index 34f1ee06aa7..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/null_hash_fn.html +++ /dev/null @@ -1,32 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>null_hash_fn Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>null_hash_fn</tt> Interface</h1> - - <p>A "null" hash function, indicating that the combining hash - function is actually a ranged hash function.</p> - - <p><a href= - "concepts.html#concepts_null_policies">Interface::Concepts::Null - Policy Classes</a> explains the concept of a null policy. See - also <a href= - "hash_based_containers.html#hash_policies">Design::Hash-Based - Containers::Hash Policies</a>.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/hash_policy.hpp"><tt>hash_policy.hpp</tt></a></p> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/null_lu_metadata.html b/libstdc++-v3/doc/html/ext/pb_ds/null_lu_metadata.html deleted file mode 100644 index e8fb6a3c825..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/null_lu_metadata.html +++ /dev/null @@ -1,25 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>null_lu_metadata Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>null_lu_metadata</tt> Interface</h1> - - <p>A null type that means that each link in a list-based - container does not actually need metadata.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/list_update_policy.hpp"><tt>list_update_policy.hpp</tt></a></p> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/null_mapped_type.html b/libstdc++-v3/doc/html/ext/pb_ds/null_mapped_type.html deleted file mode 100644 index d62fac5c93e..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/null_mapped_type.html +++ /dev/null @@ -1,25 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>null_mapped_type Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>null_mapped_type</tt> Interface</h1> - - <p>A mapped-policy indicating that an associative container is - a "set"</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/null_probe_fn.html b/libstdc++-v3/doc/html/ext/pb_ds/null_probe_fn.html deleted file mode 100644 index 1c8811e9652..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/null_probe_fn.html +++ /dev/null @@ -1,29 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>null_probe_fn Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>null_probe_fn</tt> Interface</h1> - - <p>A "null" probe function, indicating that the combining probe - function is actually a ranged probe function.</p> - - <p><a href= - "concepts.html#concepts_null_policies">Interface::Concepts::Null - Policy Classes</a> explains the concept of a null policy.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/hash_policy.hpp"><tt>hash_policy.hpp</tt></a></p> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/null_tree_node_update.html b/libstdc++-v3/doc/html/ext/pb_ds/null_tree_node_update.html deleted file mode 100644 index cc1c9005471..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/null_tree_node_update.html +++ /dev/null @@ -1,101 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>null_tree_node_update Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>null_tree_node_update</tt> Interface</h1> - - <p>A "null" node updater, indicating that no node updates are - required.</p> - - <p><a href= - "concepts.html#concepts_null_policies">Interface::Concepts::Null - Policy Classes</a> explains the concept of a null policy.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tree_policy.hpp"><tt>tree_policy.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Template Parameters</a></h2> - - <table class="c1" width="100%" border="1" summary= - "Template Parameters"> - <tr> - <td width="20%" align="left"><b>Parameter</b></td> - - <td width="50%" align="left"><b>Description</b></td> - - <td width="30%" align="left"><b>Default Value</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="Const_Node_Iterator1933878761" id= -"Const_Node_Iterator1933878761"><b>class</b> Const_Node_Iterator</a> -</pre> - </td> - - <td> - <p>Const node iterator type.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Node_Iterator4206909839" id= -"Node_Iterator4206909839"><b>class</b> Node_Iterator</a> -</pre> - </td> - - <td> - <p>Node iterator type.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Cmp_Fn294335" id="Cmp_Fn294335"><b>class</b> Cmp_Fn</a> -</pre> - </td> - - <td> - <p>Comparison functor.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Allocator35940069" id= -"Allocator35940069"><b>class</b> Allocator</a> -</pre> - </td> - - <td> - <p>Allocator type.</p> - </td> - - <td>-</td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/null_trie_node_update.html b/libstdc++-v3/doc/html/ext/pb_ds/null_trie_node_update.html deleted file mode 100644 index 18ea00739d5..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/null_trie_node_update.html +++ /dev/null @@ -1,102 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>null_trie_node_update Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>null_trie_node_update</tt> Interface</h1> - - <p>A "null" node updater, indicating that no node updates are - required.</p> - - <p><a href= - "concepts.html#concepts_null_policies">Interface::Concepts::Null - Policy Classes</a> explains the concept of a null policy.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/trie_policy.hpp"><tt>trie_policy.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Template Parameters</a></h2> - - <table class="c1" width="100%" border="1" summary= - "Template Parameters"> - <tr> - <td width="20%" align="left"><b>Parameter</b></td> - - <td width="50%" align="left"><b>Description</b></td> - - <td width="30%" align="left"><b>Default Value</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="Const_Node_Iterator1933878761" id= -"Const_Node_Iterator1933878761"><b>class</b> Const_Node_Iterator</a> -</pre> - </td> - - <td> - <p>Const node iterator type.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Node_Iterator4206909839" id= -"Node_Iterator4206909839"><b>class</b> Node_Iterator</a> -</pre> - </td> - - <td> - <p>Node iterator type.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="E_Access_Traits686553840" id= -"E_Access_Traits686553840"><b>class</b> E_Access_Traits</a> -</pre> - </td> - - <td> - <p>Comparison functor.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Allocator35940069" id= -"Allocator35940069"><b>class</b> Allocator</a> -</pre> - </td> - - <td> - <p>Allocator type.</p> - </td> - - <td>-</td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/ov_tree_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/ov_tree_tag.html deleted file mode 100644 index 01d7f9082f7..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/ov_tree_tag.html +++ /dev/null @@ -1,47 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>ov_tree_tag Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>ov_tree_tag</tt> Interface</h1> - - <p>Ordered-vector tree data structure tag.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Base Classes</a></h2> - - <table class="c1" width="100%" border="1" summary="Bases"> - <tr> - <td width="80%" align="left"><b>Class</b></td> - - <td width="20%" align="left"><b>Derivation Type</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="tree_tag.html"><span class= -"c2"><tt>tree_tag</tt></span></a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/pairing_heap_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/pairing_heap_tag.html deleted file mode 100644 index 5901d1a88c5..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/pairing_heap_tag.html +++ /dev/null @@ -1,47 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>pairing_heap_tag Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>pairing_heap_tag</tt> Interface</h1> - - <p>Pairing-heap data structure tag.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Base Classes</a></h2> - - <table class="c1" width="100%" border="1" summary="Bases"> - <tr> - <td width="80%" align="left"><b>Class</b></td> - - <td width="20%" align="left"><b>Derivation Type</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="priority_queue_tag.html"><span class= -"c2"><tt>priority_queue_tag</tt></span></a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_pop_timing_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_pop_timing_test_gcc.png Binary files differdeleted file mode 100644 index 4168787ecad..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_pop_timing_test_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_pop_timing_test_local.png b/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_pop_timing_test_local.png Binary files differdeleted file mode 100644 index 81f7a5900a0..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_pop_timing_test_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_pop_timing_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_pop_timing_test_msvc.png Binary files differdeleted file mode 100644 index 42b707965ff..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_pop_timing_test_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_timing_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_timing_test_gcc.png Binary files differdeleted file mode 100644 index 9a7ce6c361f..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_timing_test_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_timing_test_local.png b/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_timing_test_local.png Binary files differdeleted file mode 100644 index 472d8691f2e..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_timing_test_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_timing_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_timing_test_msvc.png Binary files differdeleted file mode 100644 index d5488efcf48..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_timing_test_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/pat_trie_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/pat_trie_tag.html deleted file mode 100644 index 2e9a32c9141..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/pat_trie_tag.html +++ /dev/null @@ -1,47 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>pat_trie_tag Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>pat_trie_tag</tt> Interface</h1> - - <p>PATRICIA trie data structure tag.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Base Classes</a></h2> - - <table class="c1" width="100%" border="1" summary="Bases"> - <tr> - <td width="80%" align="left"><b>Class</b></td> - - <td width="20%" align="left"><b>Derivation Type</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="tree_tag.html"><span class= -"c2"><tt>tree_tag</tt></span></a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/point_invalidation_guarantee.html b/libstdc++-v3/doc/html/ext/pb_ds/point_invalidation_guarantee.html deleted file mode 100644 index f67722169c1..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/point_invalidation_guarantee.html +++ /dev/null @@ -1,51 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>point_invalidation_guarantee Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>point_invalidation_guarantee</tt> Interface</h1> - - <p>Signifies an invalidation guarantee that includes all those - of its base, and additionally, that any point-type iterator, - pointer, or reference to a container object's mapped value type - is valid as long as its corresponding entry has not be erased, - regardless of modifications to the container object.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Base Classes</a></h2> - - <table class="c1" width="100%" border="1" summary="Bases"> - <tr> - <td width="80%" align="left"><b>Class</b></td> - - <td width="20%" align="left"><b>Derivation Type</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="basic_invalidation_guarantee.html"><span class= -"c2"><tt>basic_invalidation_guarantee</tt></span></a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/pq_container_traits.html b/libstdc++-v3/doc/html/ext/pb_ds/pq_container_traits.html deleted file mode 100644 index dcd995f5f7c..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/pq_container_traits.html +++ /dev/null @@ -1,132 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>container_traits Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>container_traits</tt> Interface</h1> - - <p>Traits of a priority-queue container based on its underlying - data structure.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Template Parameters</a></h2> - - <table class="c1" width="100%" border="1" summary= - "Template Parameters"> - <tr> - <td width="20%" align="left"><b>Parameter</b></td> - - <td width="50%" align="left"><b>Description</b></td> - - <td width="30%" align="left"><b>Default Value</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="Cntnr59189" id="Cntnr59189"><b>class</b> Cntnr</a> -</pre> - </td> - - <td> - <p>Container type.</p> - </td> - - <td>-</td> - </tr> - </table> - - <h2><a name="link2" id="link2">Public Types and - Constants</a></h2> - - <h3><a name="link3" id="link3">Container Attributes</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="container_category1247973216" id= -"container_category1247973216">container_category</a> -</pre> - </td> - - <td> - <pre> -Underlying data structure. -</pre> - </td> - - <td> - <p>Data structure category.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="invalidation_guarantee3793555937" id= -"invalidation_guarantee3793555937">invalidation_guarantee</a> -</pre> - </td> - - <td> - <pre> -Invalidation guarantee. -</pre> - </td> - - <td> - <p>Invalidation-guarantee type.</p> - - <p>This is either <a href= - "basic_invalidation_guarantee.html"><span class= - "c2"><tt>basic_invalidation_guarantee</tt></span></a>, - <a href="point_invalidation_guarantee.html"><span class= - "c2"><tt>point_invalidation_guarantee</tt></span></a>, or - <a href="range_invalidation_guarantee.html"><span class= - "c2"><tt>range_invalidation_guarantee</tt></span></a></p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="split_join_can_throw3200477759" id= -"split_join_can_throw3200477759">split_join_can_throw</a> -</pre> - </td> - - <td> - <pre> -True only if split or join operations can throw. -</pre> - </td> - - <td> - <p>Split-join throw indicator.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/pq_design.html b/libstdc++-v3/doc/html/ext/pb_ds/pq_design.html deleted file mode 100644 index 95956004527..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/pq_design.html +++ /dev/null @@ -1,381 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>Priority-Queues</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1>Priority-Queue Design</h1> - - <h2><a name="overview" id="overview">Overview</a></h2> - - <p>The priority-queue container has the following - declaration:</p> - <pre> -<b>template</b>< - <b>typename</b> Value_Type, - <b>typename</b> Cmp_Fn = std::less<Value_Type>, - <b>typename</b> Tag = <a href="pairing_heap_tag.html">pairing_heap_tag</a>, - <b>typename</b> Allocator = std::allocator<<b>char</b>> > -<b>class</b> <a href="priority_queue.html">priority_queue</a>; -</pre> - - <p>The parameters have the following meaning:</p> - - <ol> - <li><tt>Value_Type</tt> is the value type.</li> - - <li><tt>Cmp_Fn</tt> is a value comparison functor</li> - - <li><tt>Tag</tt> specifies which underlying data structure - to use.</li> - - <li><tt>Allocator</tt> is an allocator - type.</li> - </ol> - - <p>The <tt>Tag</tt> parameter specifies which underlying - data structure to use. Instantiating it by <a href= - "pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>, - <a href= - "binary_heap_tag.html"><tt>binary_heap_tag</tt></a>, - <a href= - "binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a>, - <a href= - "rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a>, - or <a href= - "thin_heap_tag.html"><tt>thin_heap_tag</tt></a>, - specifies, respectively, an underlying pairing heap [<a href= - "references.html#fredman86pairing">fredman86pairing</a>], - binary heap [<a href="references.html#clrs2001">clrs2001</a>], - binomial heap [<a href= - "references.html#clrs2001">clrs2001</a>], a binomial heap with - a redundant binary counter [<a href= - "references.html#maverik_lowerbounds">maverik_lowerbounds</a>], - or a thin heap [<a href= - "references.html#kt99fat_heaps">kt99fat_heas</a>]. These are - explained further in <a href="#pq_imp">Implementations</a>.</p> - - <p>As mentioned in <a href= - "tutorial.html#pq">Tutorial::Priority Queues</a>, - <a href= - "priority_queue.html"><tt>__gnu_pbds::priority_queue</tt></a> - shares most of the same interface with <tt>std::priority_queue</tt>. - <i>E.g.</i> if <tt>q</tt> is a priority queue of type - <tt>Q</tt>, then <tt>q.top()</tt> will return the "largest" - value in the container (according to <tt><b>typename</b> - Q::cmp_fn</tt>). <a href= - "priority_queue.html"><tt>__gnu_pbds::priority_queue</tt></a> - has a larger (and very slightly different) interface than - <tt>std::priority_queue</tt>, however, since typically - <tt>push</tt> and <tt>pop</tt> are deemed insufficient for - manipulating priority-queues. </p> - - <p>Different settings require different priority-queue - implementations which are described in <a href= - "#pq_imp">Implementations</a>; <a href="#pq_traits">Traits</a> - discusses ways to differentiate between the different traits of - different implementations.</p> - - <h2><a name="pq_it" id="pq_it">Iterators</a></h2> - - <p>There are many different underlying-data structures for - implementing priority queues. Unfortunately, most such - structures are oriented towards making <tt>push</tt> and - <tt>top</tt> efficient, and consequently don't allow efficient - access of other elements: for instance, they cannot support an efficient - <tt>find</tt> method. In the use case where it - is important to both access and "do something with" an - arbitrary value, one would be out of luck. For example, many graph algorithms require - modifying a value (typically increasing it in the sense of the - priority queue's comparison functor).</p> - - <p>In order to access and manipulate an arbitrary value in a - priority queue, one needs to reference the internals of the - priority queue from some form of an associative container - - this is unavoidable. Of course, in order to maintain the - encapsulation of the priority queue, this needs to be done in a - way that minimizes exposure to implementation internals.</p> - - <p>In <tt>pb_ds</tt> the priority queue's <tt>insert</tt> - method returns an iterator, which if valid can be used for subsequent <tt>modify</tt> and - <tt>erase</tt> operations. This both preserves the priority - queue's encapsulation, and allows accessing arbitrary values (since the - returned iterators from the <tt>push</tt> operation can be - stored in some form of associative container).</p> - - <p>Priority queues' iterators present a problem regarding their - invalidation guarantees. One assumes that calling - <tt><b>operator</b>++</tt> on an iterator will associate it - with the "next" value. Priority-queues are - self-organizing: each operation changes what the "next" value - means. Consequently, it does not make sense that <tt>push</tt> - will return an iterator that can be incremented - this can have - no possible use. Also, as in the case of hash-based containers, - it is awkward to define if a subsequent <tt>push</tt> operation - invalidates a prior returned iterator: it invalidates it in the - sense that its "next" value is not related to what it - previously considered to be its "next" value. However, it might not - invalidate it, in the sense that it can be - de-referenced and used for <tt>modify</tt> and <tt>erase</tt> - operations.</p> - - <p>Similarly to the case of the other unordered associative - containers, <tt>pb_ds</tt> uses a distinction between - point-type and range type iterators. A priority queue's <tt>iterator</tt> can always be - converted to a <tt>point_iterator</tt>, and a - <tt>const_iterator</tt> can always be converted to a - <tt>const_point_iterator</tt>.</p> - - <p>The following snippet demonstrates manipulating an arbitrary - value:</p> - <pre> -<i>// A priority queue of integers.</i> -<a href= -"priority_queue.html">priority_queue</a><<b>int</b>> p; - -<i>// Insert some values into the priority queue.</i> -<a href= -"priority_queue.html">priority_queue</a><<b>int</b>>::point_iterator it = p.push(0); - -p.push(1); -p.push(2); - -<i>// Now modify a value.</i> -p.modify(it, 3); - -assert(p.top() == 3); -</pre> - - <p>(<a href="pq_examples.html#xref">Priority Queue - Examples::Cross-Referencing</a> shows a more detailed - example.)</p> - - <p>It should be noted that an alternative design could embed an - associative container in a priority queue. Could, but most probably should not. To begin with, it should be noted that one - could always encapsulate a priority queue and an associative - container mapping values to priority queue iterators with no - performance loss. One cannot, however, "un-encapsulate" a - priority queue embedding an associative container, which might - lead to performance loss. Assume, that one needs to - associate each value with some data unrelated to priority - queues. Then using <tt>pb_ds</tt>'s design, one could use an - associative container mapping each value to a pair consisting - of this data and a priority queue's iterator. Using the - embedded method would need to use two associative - containers. Similar problems might arise in cases where a value - can reside simultaneously in many priority queues.</p> - - <h2><a name="pq_imp" id="pq_imp">Implementations</a></h2> - - <p>There are three main implementations of priority queues: the - first employs a binary heap, typically one which uses a - sequence; the second uses a tree (or forest of trees), which is - typically less structured than an associative container's tree; - the third simply uses an associative container. These are - shown, respectively, in Figures <a href= - "#pq_different_underlying_dss">Underlying Priority-Queue - Data-Structures</a> A1 and A2, Figure <a href= - "#pq_different_underlying_dss">Underlying Priority-Queue - Data-Structures</a> B, and Figures <a href= - "#pq_different_underlying_dss">Underlying Priority-Queue - Data-Structures</a> C.</p> - - <h6 class="c1"><a name="pq_different_underlying_dss" id= - "pq_different_underlying_dss"><img src= - "pq_different_underlying_dss.png" alt="no image" /></a></h6> - - <h6 class="c1">Underlying Priority-Queue Data-Structures.</h6> - - <p>Roughly speaking, any value that is both pushed and popped - from a priority queue must incur a logarithmic expense (in the - amortized sense). Any priority queue implementation that would - avoid this, would violate known bounds on comparison-based - sorting (see, <i>e.g.</i>, [<a href= - "references.html#clrs2001">clrs2001</a>] and <a href= - "references.html#brodal96priority">brodal96priority</a>]).</p> - - <p>Most implementations do - not differ in the asymptotic amortized complexity of - <tt>push</tt> and <tt>pop</tt> operations, but they differ in - the constants involved, in the complexity of other operations - (<i>e.g.</i>, <tt>modify</tt>), and in the worst-case - complexity of single operations. In general, the more - "structured" an implementation (<i>i.e.</i>, the more internal - invariants it possesses) - the higher its amortized complexity - of <tt>push</tt> and <tt>pop</tt> operations.</p> - - <p><tt>pb_ds</tt> implements different algorithms using a - single class: <a href="priority_queue.html">priority_queue</a>. - Instantiating the <tt>Tag</tt> template parameter, "selects" - the implementation:</p> - - <ol> - <li>Instantiating <tt>Tag = <a href= - "binary_heap_tag.html">binary_heap_tag</a></tt> creates - a binary heap of the form in Figures <a href= - "#pq_different_underlying_dss">Underlying Priority-Queue - Data-Structures</a> A1 or A2. The former is internally - selected by <a href="priority_queue.html">priority_queue</a> - if <tt>Value_Type</tt> is instantiated by a primitive type - (<i>e.g.</i>, an <tt><b>int</b></tt>); the latter is - internally selected for all other types (<i>e.g.</i>, - <tt>std::string</tt>). This implementations is relatively - unstructured, and so has good <tt>push</tt> and <tt>pop</tt> - performance; it is the "best-in-kind" for primitive - types, <i>e.g.</i>, <tt><b>int</b></tt>s. Conversely, it has - high worst-case performance, and can support only linear-time - <tt>modify</tt> and <tt>erase</tt> operations; this is - explained further in <a href="#pq_traits">Traits</a>.</li> - - <li>Instantiating <tt>Tag = <a href= - "pairing_heap_tag.html">pairing_heap_tag</a></tt> - creates a pairing heap of the form in Figure <a href= - "#pq_different_underlying_dss">Underlying Priority-Queue - Data-Structures</a> B. This implementations too is relatively - unstructured, and so has good <tt>push</tt> and <tt>pop</tt> - performance; it is the "best-in-kind" for non-primitive - types, <i>e.g.</i>, <tt>std:string</tt>s. It also has very - good worst-case <tt>push</tt> and <tt>join</tt> performance - (<i>O(1)</i>), but has high worst-case <tt>pop</tt> - complexity.</li> - - <li>Instantiating <tt>Tag = <a href= - "binomial_heap_tag.html">binomial_heap_tag</a></tt> - creates a binomial heap of the form in Figure <a href= - "#pq_different_underlying_dss">Underlying Priority-Queue - Data-Structures</a> B. This implementations is more - structured than a pairing heap, and so has worse - <tt>push</tt> and <tt>pop</tt> performance. Conversely, it - has sub-linear worst-case bounds for <tt>pop</tt>, - <i>e.g.</i>, and so it might be preferred in cases where - responsiveness is important.</li> - - <li>Instantiating <tt>Tag = <a href= - "rc_binomial_heap_tag.html">rc_binomial_heap_tag</a></tt> - creates a binomial heap of the form in Figure <a href= - "#pq_different_underlying_dss">Underlying Priority-Queue - Data-Structures</a> B, accompanied by a redundant counter - which governs the trees. This implementations is therefore - more structured than a binomial heap, and so has worse - <tt>push</tt> and <tt>pop</tt> performance. Conversely, it - guarantees <i>O(1)</i> <tt>push</tt> complexity, and so it - might be preferred in cases where the responsiveness of a - binomial heap is insufficient.</li> - - <li>Instantiating <tt>Tag = <a href= - "thin_heap_tag.html">thin_heap_tag</a></tt> creates a - thin heap of the form in Figure <a href= - "#pq_different_underlying_dss">Underlying Priority-Queue - Data-Structures</a> B. This implementations too is more - structured than a pairing heap, and so has worse - <tt>push</tt> and <tt>pop</tt> performance. Conversely, it - has better worst-case and identical amortized complexities - than a Fibonacci heap, and so might be more appropriate for - some graph algorithms.</li> - </ol> - - <p><a href="pq_performance_tests.html">Priority-Queue - Performance Tests</a> shows some results for the above, and - discusses these points further.</p> - - <p>Of course, one can use any order-preserving associative - container as a priority queue, as in Figure <a href= - "#pq_different_underlying_dss">Underlying Priority-Queue - Data-Structures</a> C, possibly by creating an adapter class - over the associative container (much as - <tt>std::priority_queue</tt> can adapt <tt>std::vector</tt>). - This has the advantage that no cross-referencing is necessary - at all; the priority queue itself is an associative container. - Most associative containers are too structured to compete with - priority queues in terms of <tt>push</tt> and <tt>pop</tt> - performance.</p> - - <h2><a name="pq_traits" id="pq_traits">Traits</a></h2> - - <p>It would be nice if all priority queues could - share exactly the same behavior regardless of implementation. Sadly, this is not possible. Just one for instance is in join operations: joining - two binary heaps might throw an exception (not corrupt - any of the heaps on which it operates), but joining two pairing - heaps is exception free.</p> - - <p>Tags and traits are very useful for manipulating generic - types. <a href= - "priority_queue.html"><tt>__gnu_pbds::priority_queue</tt></a> - publicly defines <tt>container_category</tt> as one of the tags - discussed in <a href="#pq_imp">Implementations</a>. Given any - container <tt>Cntnr</tt>, the tag of the underlying - data structure can be found via <tt><b>typename</b> - Cntnr::container_category</tt>; this is one of the types shown in - Figure <a href="#pq_tag_cd">Data-structure tag class - hierarchy</a>.</p> - - <h6 class="c1"><a name="pq_tag_cd" id= - "pq_tag_cd"><img src="priority_queue_tag_cd.png" alt= - "no image" /></a></h6> - - <h6 class="c1">Data-structure tag class hierarchy.</h6> - - <p>Additionally, a traits mechanism can be used to query a - container type for its attributes. Given any container - <tt>Cntnr</tt>, then <tt><a href= - "assoc_container_traits.html">__gnu_pbds::container_traits</a><Cntnr></tt> - is a traits class identifying the properties of the - container.</p> - - <p>To find if a container might throw if two of its objects are - joined, one can use <a href= - "assoc_container_traits.html"><tt>container_traits</tt></a><tt><Cntnr>::split_join_can_throw</tt>, - for example.</p> - - <p>Different priority-queue implementations have different invalidation guarantees. This is - especially important, since as explained in <a href= - "#pq_it">Iterators</a>, there is no way to access an arbitrary - value of priority queues except for iterators. Similarly to - associative containers, one can use - <a href= - "assoc_container_traits.html"><tt>container_traits</tt></a><tt><Cntnr>::invalidation_guarantee</tt> - to get the invalidation guarantee type of a priority queue.</p> - - <p>It is easy to understand from Figure <a href= - "#pq_different_underlying_dss">Underlying Priority-Queue - Data-Structures</a>, what <a href= - "assoc_container_traits.html"><tt>container_traits</tt></a><tt><Cntnr>::invalidation_guarantee</tt> - will be for different implementations. All implementations of - type <a href="#pq_different_underlying_dss">Underlying - Priority-Queue Data-Structures</a> B have <a href= - "point_invalidation_guarantee.html"><tt>point_invalidation_guarantee</tt></a>: - the container can freely internally reorganize the nodes - - range-type iterators are invalidated, but point-type iterators - are always valid. Implementations of type <a href= - "#pq_different_underlying_dss">Underlying Priority-Queue - Data-Structures</a> A1 and A2 have <a href= - "basic_invalidation_guarantee.html"><tt>basic_invalidation_guarantee</tt></a>: - the container can freely internally reallocate the array - both - point-type and range-type iterators might be invalidated.</p> - - <p>This has major implications, and constitutes a good reason to avoid - using binary heaps. A binary heap can perform <tt>modify</tt> - or <tt>erase</tt> efficiently <u>given a valid point-type - iterator</u>. However, inn order to supply it with a valid point-type - iterator, one needs to iterate (linearly) over all - values, then supply the relevant iterator (recall that a - range-type iterator can always be converted to a point-type - iterator). This means that if the number of <tt>modify</tt> or - <tt>erase</tt> operations is non-negligible (say - super-logarithmic in the total sequence of operations) - binary - heaps will perform badly.</p> - <pre> - -</pre> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/pq_examples.html b/libstdc++-v3/doc/html/ext/pb_ds/pq_examples.html deleted file mode 100644 index 15311ebc35e..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/pq_examples.html +++ /dev/null @@ -1,54 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>Examples</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1>Priority-Queue Examples</h1> - - <h2><a name="basic_usage" id="basic_usage">Basic Use</a></h2> - - <ol> - <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/basic_priority_queue.cc"><tt>basic_priority_queue.cc</tt></a> - Basic use of priority queues.</li> - - <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/priority_queue_split_join.cc"><tt>priority_queue_split_join.cc</tt></a> - Splitting and joining priority queues.</li> - - <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/priority_queue_erase_if.cc"><tt>priority_queue_erase_if.cc</tt></a> - Conditionally erasing values from a container object.</li> - </ol> - - <h2><a name="generics" id="generics">Generics</a></h2> - - <ol> - <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/priority_queue_container_traits.cc"><tt>priority_queue_container_traits.cc</tt></a> - Using <a href="assoc_container_traits.html"><tt>container_traits</tt></a> - to query about underlying data structure behavior.</li> - </ol> - - <h2><a name="xref" id="xref">Cross Referencing</a></h2> - - - <ol> - <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/priority_queue_xref.cc"><tt>priority_queue_xref.cc</tt></a> - Cross referencing an associative container and a priority - queue.</li> - - <li><a href= "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/priority_queue_dijkstra.cc"><tt>priority_queue_dijkstra.cc</tt></a> - Cross referencing a vector and a priority queue using a - <u>very</u> simple version of Dijkstra's shortest path - algorithm.</li> - </ol> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/pq_performance_tests.html b/libstdc++-v3/doc/html/ext/pb_ds/pq_performance_tests.html deleted file mode 100644 index 3a6b2691208..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/pq_performance_tests.html +++ /dev/null @@ -1,332 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> -<title>Priority-Queue Performance Tests</title> -<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /> -</head> -<body> -<div id="page"> -<h1>Priority-Queue Performance Tests</h1> -<h2><a name="settings" id="settings">Settings</a></h2> -<p>This section describes performance tests and their results. - In the following, <a href="#gcc"><u>g++</u></a>, <a href="#msvc"><u>msvc++</u></a>, and <a href="#local"><u>local</u></a> (the build used for generating this - documentation) stand for three different builds:</p> -<div id="gcc_settings_div"> -<div class="c1"> -<h3><a name="gcc" id="gcc"><u>g++</u></a></h3> -<ul> -<li>CPU speed - cpu MHz : 2660.644</li> -<li>Memory - MemTotal: 484412 kB</li> -<li>Platform - - Linux-2.6.12-9-386-i686-with-debian-testing-unstable</li> -<li>Compiler - g++ (GCC) 4.0.2 20050808 (prerelease) - (Ubuntu 4.0.1-4ubuntu9) Copyright (C) 2005 Free Software - Foundation, Inc. This is free software; see the source - for copying conditions. There is NO warranty; not even - for MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE.</li> -</ul> -</div> -<div class="c2"></div> -</div> -<div id="msvc_settings_div"> -<div class="c1"> -<h3><a name="msvc" id="msvc"><u>msvc++</u></a></h3> -<ul> -<li>CPU speed - cpu MHz : 2660.554</li> -<li>Memory - MemTotal: 484412 kB</li> -<li>Platform - Windows XP Pro</li> -<li>Compiler - Microsoft (R) 32-bit C/C++ Optimizing - Compiler Version 13.10.3077 for 80x86 Copyright (C) - Microsoft Corporation 1984-2002. All rights - reserved.</li> -</ul> -</div> -<div class="c2"></div> -</div> -<div id="local_settings_div"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h3><a name = "local"><u>local</u></a></h3><ul> -<li>CPU speed - cpu MHz : 2250.000</li> -<li>Memory - MemTotal: 2076248 kB</li> -<li>Platform - Linux-2.6.16-1.2133_FC5-i686-with-redhat-5-Bordeaux</li> -<li>Compiler - g++ (GCC) 4.1.1 20060525 (Red Hat 4.1.1-1) -Copyright (C) 2006 Free Software Foundation, Inc. -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -</li> -</ul> -</div><div style = "width: 100%; height: 20px"></div></div> -<h2><a name="pq_tests" id="pq_tests">Tests</a></h2> -<ol> -<li><a href="priority_queue_text_push_timing_test.html">Priority Queue - Text <tt>push</tt> Timing Test</a></li> -<li><a href="priority_queue_text_push_pop_timing_test.html">Priority - Queue Text <tt>push</tt> and <tt>pop</tt> Timing - Test</a></li> -<li><a href="priority_queue_random_int_push_timing_test.html">Priority - Queue Random Integer <tt>push</tt> Timing Test</a></li> -<li><a href="priority_queue_random_int_push_pop_timing_test.html">Priority - Queue Random Integer <tt>push</tt> and <tt>pop</tt> Timing - Test</a></li> -<li><a href="priority_queue_text_pop_mem_usage_test.html">Priority Queue - Text <tt>pop</tt> Memory Use Test</a></li> -<li><a href="priority_queue_text_join_timing_test.html">Priority Queue - Text <tt>join</tt> Timing Test</a></li> -<li><a href="priority_queue_text_modify_up_timing_test.html">Priority - Queue Text <tt>modify</tt> Timing Test - I</a></li> -<li><a href="priority_queue_text_modify_down_timing_test.html">Priority - Queue Text <tt>modify</tt> Timing Test - II</a></li> -</ol> -<h2><a name="pq_observations" id="pq_observations">Observations</a></h2> -<h3><a name="pq_observations_cplx" id="pq_observations_cplx">Underlying Data Structures - Complexity</a></h3> -<p>The following table shows the complexities of the different - underlying data structures in terms of orders of growth. It is - interesting to note that this table implies something about the - constants of the operations as well (see <a href="#pq_observations_amortized_push_pop">Amortized <tt>push</tt> - and <tt>pop</tt> operations</a>).</p> -<table class="c1" width="100%" border="1" summary="pq complexities"> -<tr> -<td align="left"></td> -<td align="left"><tt>push</tt></td> -<td align="left"><tt>pop</tt></td> -<td align="left"><tt>modify</tt></td> -<td align="left"><tt>erase</tt></td> -<td align="left"><tt>join</tt></td> -</tr> -<tr> -<td align="left"> -<p><tt>std::priority_queue</tt></p> -</td> -<td align="left"> -<p><i>Θ(n)</i> worst</p> -<p><i>Θ(log(n))</i> amortized</p> -</td> -<td align="left"> -<p class="c1">Θ(log(n)) Worst</p> -</td> -<td align="left"> -<p><i>Theta;(n log(n))</i> Worst</p> -<p><sub><a href="#std_mod1">[std note 1]</a></sub></p> -</td> -<td align="left"> -<p class="c3">Θ(n log(n))</p> -<p><sub><a href="#std_mod2">[std note 2]</a></sub></p> -</td> -<td align="left"> -<p class="c3">Θ(n log(n))</p> -<p><sub><a href="#std_mod1">[std note 1]</a></sub></p> -</td> -</tr> -<tr> -<td align="left"> -<p><a href="priority_queue.html"><tt>priority_queue</tt></a></p> -<p>with <tt>Tag</tt> =</p> -<p><a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a></p> -</td> -<td align="left"> -<p class="c1">O(1)</p> -</td> -<td align="left"> -<p><i>Θ(n)</i> worst</p> -<p><i>Θ(log(n))</i> amortized</p> -</td> -<td align="left"> -<p><i>Θ(n)</i> worst</p> -<p><i>Θ(log(n))</i> amortized</p> -</td> -<td align="left"> -<p><i>Θ(n)</i> worst</p> -<p><i>Θ(log(n))</i> amortized</p> -</td> -<td align="left"> -<p class="c1">O(1)</p> -</td> -</tr> -<tr> -<td align="left"> -<p><a href="priority_queue.html"><tt>priority_queue</tt></a></p> -<p>with <tt>Tag</tt> =</p> -<p><a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a></p> -</td> -<td align="left"> -<p><i>Θ(n)</i> worst</p> -<p><i>Θ(log(n))</i> amortized</p> -</td> -<td align="left"> -<p><i>Θ(n)</i> worst</p> -<p><i>Θ(log(n))</i> amortized</p> -</td> -<td align="left"> -<p class="c1">Θ(n)</p> -</td> -<td align="left"> -<p class="c1">Θ(n)</p> -</td> -<td align="left"> -<p class="c1">Θ(n)</p> -</td> -</tr> -<tr> -<td align="left"> -<p><a href="priority_queue.html"><tt>priority_queue</tt></a></p> -<p>with <tt>Tag</tt> =</p> -<p><a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a></p> -</td> -<td align="left"> -<p><i>Θ(log(n))</i> worst</p> -<p><i>O(1)</i> amortized</p> -</td> -<td align="left"> -<p class="c1">Θ(log(n))</p> -</td> -<td align="left"> -<p class="c1">Θ(log(n))</p> -</td> -<td align="left"> -<p class="c1">Θ(log(n))</p> -</td> -<td align="left"> -<p class="c1">Θ(log(n))</p> -</td> -</tr> -<tr> -<td align="left"> -<p><a href="priority_queue.html"><tt>priority_queue</tt></a></p> -<p>with <tt>Tag</tt> =</p> -<p><a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a></p> -</td> -<td align="left"> -<p class="c1">O(1)</p> -</td> -<td align="left"> -<p class="c1">Θ(log(n))</p> -</td> -<td align="left"> -<p class="c1">Θ(log(n))</p> -</td> -<td align="left"> -<p class="c1">Θ(log(n))</p> -</td> -<td align="left"> -<p class="c1">Θ(log(n))</p> -</td> -</tr> -<tr> -<td align="left"> -<p><a href="priority_queue.html"><tt>priority_queue</tt></a></p> -<p>with <tt>Tag</tt> =</p> -<p><a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a></p> -</td> -<td align="left"> -<p class="c1">O(1)</p> -</td> -<td align="left"> -<p><i>Θ(n)</i> worst</p> -<p><i>Θ(log(n))</i> amortized</p> -</td> -<td align="left"> -<p><i>Θ(log(n))</i> worst</p> -<p><i>O(1)</i> amortized,</p>or - - <p><i>Θ(log(n))</i> amortized</p> -<p><sub><a href="#thin_heap_note">[thin_heap_note]</a></sub></p> -</td> -<td align="left"> -<p><i>Θ(n)</i> worst</p> -<p><i>Θ(log(n))</i> amortized</p> -</td> -<td align="left"> -<p class="c1">Θ(n)</p> -</td> -</tr> -</table> -<p><sub><a name="std_mod1" id="std_mod1">[std note 1]</a> This - is not a property of the algorithm, but rather due to the fact - that the STL's priority queue implementation does not support - iterators (and consequently the ability to access a specific - value inside it). If the priority queue is adapting an - <tt>std::vector</tt>, then it is still possible to reduce this - to <i>Θ(n)</i> by adapting over the STL's adapter and - using the fact that <tt>top</tt> returns a reference to the - first value; if, however, it is adapting an - <tt>std::deque</tt>, then this is impossible.</sub></p> -<p><sub><a name="std_mod2" id="std_mod2">[std note 2]</a> As - with <a href="#std_mod1">[std note 1]</a>, this is not a - property of the algorithm, but rather the STL's implementation. - Again, if the priority queue is adapting an - <tt>std::vector</tt> then it is possible to reduce this to - <i>Θ(n)</i>, but with a very high constant (one must call - <tt>std::make_heap</tt> which is an expensive linear - operation); if the priority queue is adapting an - <tt>std::dequeu</tt>, then this is impossible.</sub></p> -<p><sub><a name="thin_heap_note" id="thin_heap_note">[thin_heap_note]</a> A thin heap has - <i>&Theta(log(n))</i> worst case <tt>modify</tt> time - always, but the amortized time depends on the nature of the - operation: I) if the operation increases the key (in the sense - of the priority queue's comparison functor), then the amortized - time is <i>O(1)</i>, but if II) it decreases it, then the - amortized time is the same as the worst case time. Note that - for most algorithms, I) is important and II) is not.</sub></p> -<h3><a name="pq_observations_amortized_push_pop" id="pq_observations_amortized_push_pop">Amortized <tt>push</tt> - and <tt>pop</tt> operations</a></h3> -<p>In many cases, a priority queue is needed primarily for - sequences of <tt>push</tt> and <tt>pop</tt> operations. All of - the underlying data structures have the same amortized - logarithmic complexity, but they differ in terms of - constants.</p> -<p>The table above shows that the different data structures are - "constrained" in some respects. In general, if a data structure - has lower worst-case complexity than another, then it will - perform slower in the amortized sense. Thus, for example a - redundant-counter binomial heap (<a href="priority_queue.html"><tt>priority_queue</tt></a> with - <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a>) - has lower worst-case <tt>push</tt> performance than a binomial - heap (<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a>), - and so its amortized <tt>push</tt> performance is slower in - terms of constants.</p> -<p>As the table shows, the "least constrained" underlying - data structures are binary heaps and pairing heaps. - Consequently, it is not surprising that they perform best in - terms of amortized constants.</p> -<ol> -<li>Pairing heaps seem to perform best for non-primitive - types (<i>e.g.</i>, <tt>std::string</tt>s), as shown by - <a href="priority_queue_text_push_timing_test.html">Priority - Queue Text <tt>push</tt> Timing Test</a> and <a href="priority_queue_text_push_pop_timing_test.html">Priority - Queue Text <tt>push</tt> and <tt>pop</tt> Timing - Test</a></li> -<li>binary heaps seem to perform best for primitive types - (<i>e.g.</i>, <tt><b>int</b></tt>s), as shown by <a href="priority_queue_random_int_push_timing_test.html">Priority - Queue Random Integer <tt>push</tt> Timing Test</a> and - <a href="priority_queue_random_int_push_pop_timing_test.html">Priority - Queue Random Integer <tt>push</tt> and <tt>pop</tt> Timing - Test</a>.</li> -</ol> -<h3><a name="pq_observations_graph" id="pq_observations_graph">Graph Algorithms</a></h3> -<p>In some graph algorithms, a decrease-key operation is - required [<a href="references.html#clrs2001">clrs2001</a>]; - this operation is identical to <tt>modify</tt> if a value is - increased (in the sense of the priority queue's comparison - functor). The table above and <a href="priority_queue_text_modify_up_timing_test.html">Priority Queue - Text <tt>modify</tt> Timing Test - I</a> show that a thin heap - (<a href="priority_queue.html"><tt>priority_queue</tt></a> with - <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a>) - outperforms a pairing heap (<a href="priority_queue.html"><tt>priority_queue</tt></a> with - <tt>Tag</tt> =<tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>), - but the rest of the tests show otherwise.</p> -<p>This makes it difficult to decide which implementation to - use in this case. Dijkstra's shortest-path algorithm, for - example, requires <i>Θ(n)</i> <tt>push</tt> and - <tt>pop</tt> operations (in the number of vertices), but - <i>O(n<sup>2</sup>)</i> <tt>modify</tt> operations, which can - be in practice <i>Θ(n)</i> as well. It is difficult to - find an <i>a-priori</i> characterization of graphs in which the - <u>actual</u> number of <tt>modify</tt> operations will dwarf - the number of <tt>push</tt> and <tt>pop</tt> operations.</p> -</div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/pq_regression_tests.html b/libstdc++-v3/doc/html/ext/pb_ds/pq_regression_tests.html deleted file mode 100644 index 9084409d350..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/pq_regression_tests.html +++ /dev/null @@ -1,52 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>Priority-Queue Regression Tests</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1>Priority-Queue Regression Tests</h1> - - <h2><a name="assoc_desc" id="assoc_desc">Description</a></h2> - - <p>The library contains a single comprehensive regression test. - For a given container type in <tt>pb_ds</tt>, the test creates - an object of the container type and an object of the - corresponding STL type (<i>i.e.</i>, - <tt>std::priority_queue</tt>). It then performs a random - sequence of methods with random arguments (<i>e.g.</i>, pushes, - pops, and so forth) on both objects. At each operation, the - test checks the return value of the method, and optionally both - compares <tt>pb_ds</tt>'s object with the STL's object as well - as performing other consistency checks on <tt>pb_ds</tt>'s - object (<i>e.g.</i>, that the size returned by the - <tt>size</tt> method corresponds to the distance between its - <tt>begin</tt> and end iterators).</p> - - <p>Additionally, the test integrally checks exception safety - and resource leaks. This is done as follows. A special - allocator type, written for the purpose of the test, both - randomly throws an exceptions when allocations are performed, - and tracks allocations and de-allocations. The exceptions thrown - at allocations simulate memory-allocation failures; the - tracking mechanism checks for memory-related bugs (<i>e.g.</i>, - resource leaks and multiple de-allocations). Both - <tt>pb_ds</tt>'s containers and the containers' value-types are - configured to use this allocator.</p> - - <h2><a name="pq_tests" id="pq_tests">Tests</a></h2> - - <p><a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/regression/priority_queue_rand.cc"><tt>priority_queue_rand.cc</tt></a> - checks all priority queue types.</p> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/pq_tests.html b/libstdc++-v3/doc/html/ext/pb_ds/pq_tests.html deleted file mode 100644 index de8cb447c71..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/pq_tests.html +++ /dev/null @@ -1,24 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>Priority-Queue Tests</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1>Priority-Queue Tests</h1> - - <p><a href="pq_regression_tests.html">Priority-Queue Regression - Tests</a> describes the regression tests; <a href= - "pq_performance_tests.html">Priority-Queue Performance - Tests</a> describes the performance tests.</p> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/prerequisites.html b/libstdc++-v3/doc/html/ext/pb_ds/prerequisites.html deleted file mode 100644 index 7c888849918..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/prerequisites.html +++ /dev/null @@ -1,46 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>Prerequisites</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1>Usage Prerequisites</h1> - - <p><tt>pb_ds</tt> has been successfully tested with the - following compilers:</p> - - <ol> - <li>g++ 3.3.1, 3.4.4, 4.0, 4.1, and what will be 4.2</li> - - <li>Intel icpc 8.1 and 9</li> - - <li>Visual C++ .Net 2005</li> - </ol> - - <p>The library contains only header files, and does not require - any other libraries except the STL. All classes are defined in - <tt><b>namespace</b> pb_ds</tt>. The library internally uses - macros beginning with <tt>PB_DS</tt> (<i>e.g.</i>, for header - guards), but <tt>#<b>undef</b></tt>s anything it - <tt>#<b>define</b></tt>s (except for header guards). Compiling - the library in an environment where macros beginning in - <tt>PB_DS</tt> are defined, may yield unpredictable results in - compilation, execution, or both.</p> - - <p> Further dependencies are necessary to create the visual output - for the performance tests. To create these graphs, two additional - packages will be needed: <b>pychart</b> and <b>Beautiful - Soup</b>. Both are freely available. - </p> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue.html b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue.html deleted file mode 100644 index def310f0c00..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue.html +++ /dev/null @@ -1,995 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>priority_queue Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>priority_queue</tt> Interface</h1> - - <p>Basic priority queue.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/priority_queue.hpp"><tt>priority_queue.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Template Parameters</a></h2> - - <table class="c1" width="100%" border="1" summary= - "Template Parameters"> - <tr> - <td width="20%" align="left"><b>Parameter</b></td> - - <td width="50%" align="left"><b>Description</b></td> - - <td width="30%" align="left"><b>Default Value</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="Value_Type216514186" id= -"Value_Type216514186"><b>typename</b> Value_Type</a> -</pre> - </td> - - <td> - <p>Value type.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Cmp_Fn294335" id="Cmp_Fn294335"><b>class</b> Cmp_Fn </a> -</pre> - </td> - - <td> - <p>Comparison functor.</p> - </td> - - <td> - <pre> -std::less<<a href= -"#Value_Type216514186"><tt>Value_Type</tt></a>> -</pre> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="Tag278938" id="Tag278938"><b>class</b> Tag </a> -</pre> - </td> - - <td> - <p>Data-structure tag.</p> - </td> - - <td><a href="pairing_heap_tag.html"><span class= - "c2"><tt>pairing_heap_tag</tt></span></a></td> - </tr> - - <tr> - <td> - <pre> -<a name="Allocator35940069" id= -"Allocator35940069"><b>class</b> Allocator </a> -</pre> - </td> - - <td> - <p>Allocator type.</p> - </td> - - <td> - <pre> -std::allocator<<b>char</b>> -</pre> - </td> - </tr> - </table> - - <h2><a name="link2" id="link2">Public Types and - Constants</a></h2> - - <h3><a name="link3" id="link3">General Container - Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="size_type55424436" id="size_type55424436">size_type</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#Allocator35940069"><tt>Allocator</tt></a>::size_type -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="difference_type868028452" id= -"difference_type868028452">difference_type</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#Allocator35940069"><tt>Allocator</tt></a>::difference_type -</pre> - </td> - - <td> - <p>Difference type.</p> - </td> - </tr> - </table> - - <h3><a name="link4" id="link4">Categories</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="container_category1247973216" id= -"container_category1247973216">container_category</a> -</pre> - </td> - - <td> - <pre> -<a href="#Tag278938"><tt>Tag</tt></a> -</pre> - </td> - - <td> - <p>The underlying mapped-structure tag of the - container.</p> - - <p>This is one of:</p> - - <ol> - <li><a href="binary_heap_tag.html"><span class= - "c2"><tt>binary_heap_tag</tt></span></a></li> - - <li><a href="binomial_heap_tag.html"><span class= - "c2"><tt>binomial_heap_tag</tt></span></a></li> - - <li><a href="rc_binomial_heap_tag.html"><span class= - "c2"><tt>rc_binomial_heap_tag</tt></span></a></li> - - <li><a href="pairing_heap_tag.html"><span class= - "c2"><tt>pairing_heap_tag</tt></span></a></li> - - <li><a href="thin_heap_tag.html"><span class= - "c2"><tt>thin_heap_tag</tt></span></a></li> - </ol> - </td> - </tr> - </table> - - <h3><a name="link5" id="link5">Policy Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="cmp_fn394495" id="cmp_fn394495">cmp_fn</a> -</pre> - </td> - - <td> - <pre> -<a href="#Cmp_Fn294335"><tt>Cmp_Fn</tt></a> -</pre> - </td> - - <td> - <p>Comparison functor type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="allocator48440069" id="allocator48440069">allocator</a> -</pre> - </td> - - <td> - <pre> -<a href="#Allocator35940069"><tt>Allocator</tt></a> -</pre> - </td> - - <td> - <p><a href="#Allocator35940069"><tt>Allocator</tt></a> - type.</p> - </td> - </tr> - </table> - - <h3><a name="link6" id="link6">Value-Type Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="value_type279018186" id= -"value_type279018186">value_type</a> -</pre> - </td> - - <td> - <pre> -<a href="#Value_Type216514186"><tt>Value_Type</tt></a> -</pre> - </td> - - <td> - <p>Value type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="reference54418471" id="reference54418471">reference</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind< - <a href= -"#value_type279018186"><tt>value_type</tt></a>>::other::reference -</pre> - </td> - - <td> - <p>Value reference type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="const_reference495461441" id= -"const_reference495461441">const_reference</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind< - <a href= -"#value_type279018186"><tt>value_type</tt></a>>::other::const_reference -</pre> - </td> - - <td> - <p>Const value <a href= - "#reference54418471"><tt>reference</tt></a> type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="pointer2179769" id="pointer2179769">pointer</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind< - <a href= -"#value_type279018186"><tt>value_type</tt></a>>::other::pointer -</pre> - </td> - - <td> - <p>Value pointer type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="const_pointer878814947" id= -"const_pointer878814947">const_pointer</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#allocator48440069"><tt>allocator</tt></a>::<b>template</b> rebind< - <a href= -"#value_type279018186"><tt>value_type</tt></a>>::other::const_pointer -</pre> - </td> - - <td> - <p>Const Value <a href= - "#pointer2179769"><tt>pointer</tt></a> type.</p> - </td> - </tr> - </table> - - <h3><a name="link7" id="link7">Iterator Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="const_point_iterator2364676009" id= -"const_point_iterator2364676009">const_point_iterator</a> -</pre> - </td> - - <td> - <pre> -Const point-type iterator. -</pre> - </td> - - <td> - <p>Const point-type iterator.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="point_iterator2789896775" id= -"point_iterator2789896775">point_iterator</a> -</pre> - </td> - - <td> - <pre> -Point-type iterator. -</pre> - </td> - - <td> - <p>Point-type iterator.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="const_iterator98626788" id= -"const_iterator98626788">const_iterator</a> -</pre> - </td> - - <td> - <pre> -Const range-type iterator. -</pre> - </td> - - <td> - <p>Const range-type iterator.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="iterator10418194" id="iterator10418194">iterator</a> -</pre> - </td> - - <td> - <pre> -Range-type iterator. -</pre> - </td> - - <td> - <p>Range-type iterator.</p> - </td> - </tr> - </table> - - <h2><a name="link8" id="link8">Public Methods</a></h2> - - <h3><a name="link9" id="link9">Constructors, Destructor, and - Related</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> - priority_queue - () -</pre> - </td> - - <td> - <p>Default constructor.</p> - </td> - </tr> - - <tr> - <td> - <pre> - priority_queue - (<b>const</b> <a href= -"#cmp_fn394495"><tt>cmp_fn</tt></a> &r_cmp_fn) -</pre> - </td> - - <td> - <p>Constructor taking some policy objects. <span class= - "c1"><tt>r_cmp_fn</tt></span> will be copied by the - <a href="#Cmp_Fn294335"><tt>Cmp_Fn</tt></a> object of the - container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>template</b>< - <b>class</b> It> - priority_queue - (It first_it, - It last_it) -</pre> - </td> - - <td> - <p>Constructor taking iterators to a range of <a href= - "#value_type279018186"><tt>value_type</tt></a>s. The - <a href="#value_type279018186"><tt>value_type</tt></a>s - between <span class="c1"><tt>first_it</tt></span> and - <span class="c1"><tt>last_it</tt></span> will be inserted - into the container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>template</b>< - <b>class</b> It> - priority_queue - (It first_it, - It last_it, - <b>const</b> <a href= -"#cmp_fn394495"><tt>cmp_fn</tt></a> &r_cmp_fn) -</pre> - </td> - - <td> - <p>Constructor taking iterators to a range of <a href= - "#value_type279018186"><tt>value_type</tt></a>s and some - policy objects The <a href= - "#value_type279018186"><tt>value_type</tt></a>s between - <span class="c1"><tt>first_it</tt></span> and - <span class="c1"><tt>last_it</tt></span> will be inserted - into the container object. <span class= - "c1"><tt>r_cmp_fn</tt></span> will be copied by the - <a href="#cmp_fn394495"><tt>cmp_fn</tt></a> object of the - container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> - priority_queue - (<b>const</b> <span class= -"c2"><tt>priority_queue</tt></span> &other) -</pre> - </td> - - <td> - <p>Copy constructor.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> - ~priority_queue - () -</pre> - </td> - - <td> - <p>Destructor.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<span class="c2"><tt>priority_queue</tt></span> & - <b>operator</b>= - (<b>const</b> <span class= -"c2"><tt>priority_queue</tt></span> &other) -</pre> - </td> - - <td> - <p>Assignment operator.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - swap - (<span class="c2"><tt>priority_queue</tt></span> &other) -</pre> - </td> - - <td> - <p>Swaps content.</p> - </td> - </tr> - </table> - - <h3><a name="link10" id="link10">Information Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a> - size - () <b>const</b> -</pre> - </td> - - <td> - <p>Returns the number of distinct <a href= - "#value_type279018186"><tt>value_type</tt></a> objects - the container object is storing.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a> - max_size - () <b>const</b> -</pre> - </td> - - <td> - <p>Returns an upper bound on the number of distinct - <a href="#value_type279018186"><tt>value_type</tt></a> - objects this container can store.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>bool</b> - empty - () <b>const</b> -</pre> - </td> - - <td> - <p>Returns whether the container object is not storing - any <a href= - "#value_type279018186"><tt>value_type</tt></a> - objects.</p> - </td> - </tr> - </table> - - <h3><a name="link11" id="link11">Insert Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href= -"#point_iterator2789896775"><tt>point_iterator</tt></a> - push - (<a href= -"#const_reference495461441"><tt>const_reference</tt></a> r_val) -</pre> - </td> - - <td> - <p>Inserts a <a href= - "#value_type279018186"><tt>value_type</tt></a> object. - returns a <a href= - "#point_iterator2789896775"><tt>point_iterator</tt></a> - object associated with the new pushed <span class= - "c1"><tt>r_val</tt></span>.</p> - </td> - </tr> - </table> - - <h3><a name="link12" id="link12">Find Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href= -"#const_reference495461441"><tt>const_reference</tt></a> - top - () <b>const</b> -</pre> - </td> - - <td> - <p>Returns the <a href= - "#const_reference495461441"><tt>const_reference</tt></a> - of the largest <a href= - "#value_type279018186"><tt>value_type</tt></a> in the - container object, i.e., a <a href= - "#value_type279018186"><tt>value_type</tt></a> v_max for - which any other <a href= - "#value_type279018186"><tt>value_type</tt></a> v in the - container object will satisfy !<a href= - "#cmp_fn394495"><tt>cmp_fn</tt></a>()(v_max, v).</p> - </td> - </tr> - </table> - - <h3><a name="link13" id="link13">Modify Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - modify - (<a href= -"#point_iterator2789896775"><tt>point_iterator</tt></a> it, - <a href= -"#const_reference495461441"><tt>const_reference</tt></a> r_new_val) -</pre> - </td> - - <td> - <p>Modifies the <a href= - "#value_type279018186"><tt>value_type</tt></a> associated - with the <a href= - "#point_iterator2789896775"><tt>point_iterator</tt></a> - <span class="c1"><tt>it</tt></span> into <span class= - "c1"><tt>r_new_val</tt></span>.</p> - - <p>To use this method, <a href= - "#value_type279018186"><tt>value_type</tt></a> must be - assignable.</p> - </td> - </tr> - </table> - - <h3><a name="link14" id="link14">Erase Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - pop - () -</pre> - </td> - - <td> - <p>Pops the largest <a href= - "#value_type279018186"><tt>value_type</tt></a>.</p> - - <p>If the container object is empty, results are - undefined.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - erase - (<a href= -"#point_iterator2789896775"><tt>point_iterator</tt></a> it) -</pre> - </td> - - <td> - <p>Erases the <a href= - "#value_type279018186"><tt>value_type</tt></a> associated - with the <a href= - "#point_iterator2789896775"><tt>point_iterator</tt></a> - <span class="c1"><tt>it</tt></span>.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>template</b>< - <b>class</b> Pred> -<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a> - erase_if - (Pred prd) -</pre> - </td> - - <td> - <p>Erases any <a href= - "#value_type279018186"><tt>value_type</tt></a> satisfying - the predicate <span class="c1"><tt>prd</tt></span>; - returns the number of <a href= - "#value_type279018186"><tt>value_type</tt></a>s - erased.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - clear - () -</pre> - </td> - - <td> - <p>Clears the container object.</p> - </td> - </tr> - </table> - - <h3><a name="link15" id="link15">Split and join - Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - join - (<span class="c2"><tt>priority_queue</tt></span> &other) -</pre> - </td> - - <td> - <p>Joins two container objects. When this function - returns, <span class="c1"><tt>other</tt></span> will be - empty.</p> - - <p>When calling this method, <span class= - "c1"><tt>other</tt></span>'s policies must be - equivalent to this object's policies.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>template</b>< - <b>class</b> Pred> -<b>inline</b> <b>void</b> - split - (Pred prd, - <span class="c2"><tt>priority_queue</tt></span> &other) -</pre> - </td> - - <td> - <p>Splits into two container objects. When this function - returns, <span class="c1"><tt>other</tt></span> will be - contain only values v for which <span class= - "c1"><tt>prd</tt></span>(v) is <tt><b>true</b></tt>.</p> - - <p>When calling this method, <span class= - "c1"><tt>other</tt></span>'s policies must be - equivalent to this object's policies.</p> - </td> - </tr> - </table> - - <h3><a name="link16" id="link16">Iteration Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href="#iterator10418194"><tt>iterator</tt></a> - begin - () -</pre> - </td> - - <td> - <p>Returns an <a href= - "#iterator10418194"><tt>iterator</tt></a> corresponding - to the first <a href= - "#value_type279018186"><tt>value_type</tt></a> in the - container.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href= -"#const_iterator98626788"><tt>const_iterator</tt></a> - begin - () <b>const</b> -</pre> - </td> - - <td> - <p>Returns a <a href= - "#const_iterator98626788"><tt>const_iterator</tt></a> - corresponding to the first <a href= - "#value_type279018186"><tt>value_type</tt></a> in the - container.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href="#iterator10418194"><tt>iterator</tt></a> - end - () -</pre> - </td> - - <td> - <p>Returns an <a href= - "#iterator10418194"><tt>iterator</tt></a> corresponding - to the just-after-last <a href= - "#value_type279018186"><tt>value_type</tt></a> in the - container.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href= -"#const_iterator98626788"><tt>const_iterator</tt></a> - end - () <b>const</b> -</pre> - </td> - - <td> - <p>Returns a <a href= - "#const_iterator98626788"><tt>const_iterator</tt></a> - corresponding to the just-after-last <a href= - "#value_type279018186"><tt>value_type</tt></a> in the - container.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test.html deleted file mode 100644 index 903331d9d7d..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test.html +++ /dev/null @@ -1,161 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> -<title>Priority Queue Random Int Push Pop Timing Test</title> -<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /> -</head> -<body> -<div id="page"> -<h1>Priority Queue Random Integer <tt>push</tt> and - <tt>pop</tt> Timing Test</h1> -<h2><a name="description" id="description">Description</a></h2> -<p>This test inserts a number of values with i.i.d. integer - keys into a container using <tt>push</tt> , then removes them - using <tt>pop</tt> . It measures the average time for - <tt>push</tt> and <tt>pop</tt> as a function of the number of - values.</p> -<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/priority_queue_random_int_push_pop_timing.cc"> -<tt>priority_queue_random_int_push_pop_timing_test</tt></a> - thirty_years_among_the_dead_preproc.txt 200 200 2100)</p> -<h2><a name="purpose" id="purpose">Purpose</a></h2> -<p>The test checks the effect of different underlying - data structures (see <a href="pq_design.html#pq_imp">Design::Priority - Queues::Implementations</a>).</p> -<h2><a name="results" id="results">Results</a></h2> -<p>Figures <a href="#NPG">NPG</a>, <a href="#NPM">NPM</a>, and - <a href="#NPL">NPL</a> shows the results for the native - priority queues and <tt>pb_ds</tt> 's priority queues in - <a href="pq_performance_tests.html#gcc"><u>g++</u></a>, - <a href="pq_performance_tests.html#msvc"><u>msvc++</u></a>, and - <a href="pq_performance_tests.html#local"><u>local</u></a>, - respectively.</p> -<div id="NPG_res_div"> -<div id="NPG_gcc"> -<div id="NPG_priority_queue_random_int_push_pop_timing_test"> -<div id="NPG_pq"> -<div id="NPG_Native_and__tt_pb_ds_455tt__priority_queue__tt_push_455tt___tt_pop_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPG" id="NPG"><img src="priority_queue_random_int_push_pop_timing_test_gcc.png" alt="no image" /></a></h6>NPG: Native and <tt>pb ds</tt> priority queue <tt>push</tt> <tt>pop</tt> timing test - <a href="pq_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -thin_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a> -</li> -<li> -rc_binomial_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a> -</li> -<li> -binomial_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a> -</li> -<li> -pairing_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a> -</li> -<li> -n_pq_deque- -<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li> -<li> -n_pq_vector- -<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li> -<li> -binary_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NPM_res_div"> -<div id="NPM_msvc"> -<div id="NPM_priority_queue_random_int_push_pop_timing_test"> -<div id="NPM_pq"> -<div id="NPM_Native_and__tt_pb_ds_455tt__priority_queue__tt_push_455tt___tt_pop_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPM" id="NPM"><img src="priority_queue_random_int_push_pop_timing_test_msvc.png" alt="no image" /></a></h6>NPM: Native and <tt>pb ds</tt> priority queue <tt>push</tt> <tt>pop</tt> timing test - <a href="pq_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -thin_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a> -</li> -<li> -rc_binomial_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a> -</li> -<li> -binomial_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a> -</li> -<li> -pairing_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a> -</li> -<li> -n_pq_deque- -<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li> -<li> -n_pq_vector- -<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li> -<li> -binary_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NPL_res_div"> -<div id="NPL_local"> -<div id="NPL_priority_queue_random_int_push_pop_timing_test"> -<div id="NPL_pq"> -<div id="NPL_Native_and__tt_pb_ds_455tt__priority_queue__tt_push_455tt___tt_pop_455tt__timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPL" id= "NPL"><img src="priority_queue_random_int_push_pop_timing_test_local.png" alt="no image" /></a></h6>NPL: Native and <tt>pb ds</tt> priority queue <tt>push</tt> <tt>pop</tt> timing test - <a href = "pq_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<h2><a name="observations" id="observations">Observations</a></h2> -<p>Binary heaps are the most suited for sequences of - <tt>push</tt> and <tt>pop</tt> operations of primitive types - (<i>e.g.</i> <tt><b>int</b></tt>s). This is explained in - <a href="priority_queue_random_int_push_timing_test.html">Priority - Queue Random Int <tt>push</tt> Timing Test</a> . (See <a href="priority_queue_text_push_pop_timing_test.html">Priority Queue - Text <tt>push</tt> Timing Test</a> for the case of primitive - types.)</p> -<p>At first glance it seems that the STL's vector-based - priority queue is approximately on par with <tt>pb_ds</tt>'s - corresponding priority queue. There are two differences - however:</p> -<ol> -<li>The STL's priority queue does not downsize the underlying - vector (or deque) as the priority queue becomes smaller - (see <a href="priority_queue_text_pop_mem_usage_test.html">Priority Queue - Text <tt>pop</tt> Memory Use Test</a>). It is therefore - gaining some speed at the expense of space.</li> -<li>From <a href="priority_queue_random_int_push_pop_timing_test.html">Priority - Queue Random Integer <tt>push</tt> and <tt>pop</tt> Timing - Test</a>, it seems that the STL's priority queue is slower in - terms of <tt>pus</tt> operations. Since the number of - <tt>pop</tt> operations is at most that of <tt>push</tt> - operations, the test here is the "best" for the STL's - priority queue.</li> -</ol> -<p><a href="pq_performance_tests.html#pq_observations">Priority-Queue - Performance Tests::Observations</a> discusses this further and - summarizes.</p> -</div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test_gcc.png Binary files differdeleted file mode 100644 index 68f5e2b6bdb..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test_local.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test_local.png Binary files differdeleted file mode 100644 index b8cc15330ab..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test_msvc.png Binary files differdeleted file mode 100644 index 4fc191c8b1c..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test.html deleted file mode 100644 index ba91f601a29..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test.html +++ /dev/null @@ -1,200 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> -<title>Priority Queue Random Int Push Timing Test</title> -<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /> -</head> -<body> -<div id="page"> -<h1>Priority Queue Random Integer <tt>push</tt> Timing - Test</h1> -<h2><a name="description" id="description">Description</a></h2> -<p>This test inserts a number of values with i.i.d integer keys - into a container using <tt>push</tt> . It measures the average - time for <tt>push</tt> as a function of the number of - values.</p> -<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/priority_queue_random_int_push_timing.cc"><tt> - priority_queue_random_intpush_timing_test</tt></a> - thirty_years_among_the_dead_preproc.txt 200 200 2100)</p> -<h2><a name="purpose" id="purpose">Purpose</a></h2> -<p>The test checks the effect of different underlying - data structures (see <a href="pq_design.html#pq_imp">Design::Priority - Queues::Implementations</a>).</p> -<h2><a name="results" id="results">Results</a></h2> -<p>Figures <a href="#NPG">NPG</a>, <a href="#NPM">NPM</a>, and - <a href="#NPL">NPL</a> show the results for the native priority - queues and <tt>pb_ds</tt> 's priority queues in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>, and - <a href="assoc_performance_tests.html#local"><u>local</u></a>, - respectively; Figures <a href="#NBPG">NBPG</a>, <a href="#NBPM">NBPM</a>, and <a href="#NBPL">NBPL</a> shows the - results for the binary-heap based native priority queues and - <tt>pb_ds</tt> 's priority queues in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>, and - <a href="assoc_performance_tests.html#local"><u>local</u></a>, - respectively</p> -<div id="NPG_res_div"> -<div id="NPG_gcc"> -<div id="NPG_priority_queue_random_int_push_timing_test"> -<div id="NPG_pq"> -<div id="NPG_Native_and__tt_pb_ds_455tt__priority_queue__tt_push_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPG" id="NPG"><img src="priority_queue_random_int_push_timing_test_gcc.png" alt="no image" /></a></h6>NPG: Native and <tt>pb ds</tt> priority queue <tt>push</tt> timing test - <a href="pq_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -rc_binomial_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a> -</li> -<li> -binomial_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a> -</li> -<li> -n_pq_deque- -<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li> -<li> -pairing_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a> -</li> -<li> -thin_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a> -</li> -<li> -n_pq_vector- -<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li> -<li> -binary_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NPM_res_div"> -<div id="NPM_msvc"> -<div id="NPM_priority_queue_random_int_push_timing_test"> -<div id="NPM_pq"> -<div id="NPM_Native_and__tt_pb_ds_455tt__priority_queue__tt_push_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPM" id="NPM"><img src="priority_queue_random_int_push_timing_test_msvc.png" alt="no image" /></a></h6>NPM: Native and <tt>pb ds</tt> priority queue <tt>push</tt> timing test - <a href="pq_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -rc_binomial_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a> -</li> -<li> -binomial_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a> -</li> -<li> -pairing_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a> -</li> -<li> -thin_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a> -</li> -<li> -n_pq_deque- -<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li> -<li> -n_pq_vector- -<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li> -<li> -binary_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NPL_res_div"> -<div id="NPL_local"> -<div id="NPL_priority_queue_random_int_push_timing_test"> -<div id="NPL_pq"> -<div id="NPL_Native_and__tt_pb_ds_455tt__priority_queue__tt_push_455tt__timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPL" id= "NPL"><img src="priority_queue_random_int_push_timing_test_local.png" alt="no image" /></a></h6>NPL: Native and <tt>pb ds</tt> priority queue <tt>push</tt> timing test - <a href = "pq_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NBPG_res_div"> -<div id="NBPG_gcc"> -<div id="NBPG_binary_priority_queue_random_int_push_timing_test"> -<div id="NBPG_pq"> -<div id="NBPG_Native_and__tt_pb_ds_455tt__binary_priority_queue__tt_push_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NBPG" id="NBPG"><img src="binary_priority_queue_random_int_push_timing_test_gcc.png" alt="no image" /></a></h6>NBPG: Native and <tt>pb ds</tt> binary priority queue <tt>push</tt> timing test - <a href="pq_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_pq_deque- -<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li> -<li> -n_pq_vector- -<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li> -<li> -binary_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NBPM_res_div"> -<div id="NBPM_msvc"> -<div id="NBPM_binary_priority_queue_random_int_push_timing_test"> -<div id="NBPM_pq"> -<div id="NBPM_Native_and__tt_pb_ds_455tt__binary_priority_queue__tt_push_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NBPM" id="NBPM"><img src="binary_priority_queue_random_int_push_timing_test_msvc.png" alt="no image" /></a></h6>NBPM: Native and <tt>pb ds</tt> binary priority queue <tt>push</tt> timing test - <a href="pq_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_pq_deque- -<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li> -<li> -n_pq_vector- -<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li> -<li> -binary_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NBPL_res_div"> -<div id="NBPL_local"> -<div id="NBPL_binary_priority_queue_random_int_push_timing_test"> -<div id="NBPL_pq"> -<div id="NBPL_Native_and__tt_pb_ds_455tt__binary_priority_queue__tt_push_455tt__timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NBPL" id= "NBPL"><img src="binary_priority_queue_random_int_push_timing_test_local.png" alt="no image" /></a></h6>NBPL: Native and <tt>pb ds</tt> binary priority queue <tt>push</tt> timing test - <a href = "pq_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<h2><a name="observations" id="observations">Observations</a></h2> -<p>Binary heaps are the most suited for sequences of - <tt>push</tt> and <tt>pop</tt> operations of primitive types - (<i>e.g.</i> <tt><b>int</b></tt>s). They are less constrained - than any other type, and since it is very efficient to store - such types in arrays, they outperform even pairing heaps. (See - <a href="priority_queue_text_push_timing_test.html">Priority - Queue Text <tt>push</tt> Timing Test</a> for the case of - non-primitive types.)</p> -<p><a href="pq_performance_tests.html#pq_observations">Priority-Queue - Performance Tests::Observations</a> discusses this further and - summarizes.</p> -</div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test_gcc.png Binary files differdeleted file mode 100644 index ee8c9b7d9a9..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test_local.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test_local.png Binary files differdeleted file mode 100644 index 51fa718d279..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test_msvc.png Binary files differdeleted file mode 100644 index 0a1a8eaefbc..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_tag.html deleted file mode 100644 index 8b6d81c37ec..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_tag.html +++ /dev/null @@ -1,47 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>priority_queue_tag Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>priority_queue_tag</tt> Interface</h1> - - <p>Basic priority-queue data structure tag.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Base Classes</a></h2> - - <table class="c1" width="100%" border="1" summary="Bases"> - <tr> - <td width="80%" align="left"><b>Class</b></td> - - <td width="20%" align="left"><b>Derivation Type</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="container_tag.html"><span class= -"c2"><tt>container_tag</tt></span></a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_tag_cd.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_tag_cd.png Binary files differdeleted file mode 100644 index ed8d875f0f8..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_tag_cd.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_tag_cd.svg b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_tag_cd.svg deleted file mode 100644 index be007aecb8d..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_tag_cd.svg +++ /dev/null @@ -1,368 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://web.resource.org/cc/" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="11in" - height="8.5in" - id="svg2" - sodipodi:version="0.32" - inkscape:version="0.43" - version="1.0" - sodipodi:docbase="/mnt/share/src/policy_based_data_structures/pb_ds_images" - sodipodi:docname="pq_tag_diagram_2.svg" - inkscape:export-filename="/mnt/share/src/policy_based_data_structures/pb_ds_images/pq_tag_diagram_2.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> - <defs - id="defs4"> - <marker - inkscape:stockid="Arrow1Mstart" - orient="auto" - refY="0.0" - refX="0.0" - id="Arrow1Mstart" - style="overflow:visible"> - <path - id="path3311" - d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " - style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none" - transform="scale(0.4)" /> - </marker> - <marker - inkscape:stockid="Arrow2Sstart" - orient="auto" - refY="0" - refX="0" - id="Arrow2Sstart" - style="overflow:visible"> - <path - id="path3319" - style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " - transform="matrix(0.3,0,0,0.3,-1.5,0)" /> - </marker> - <marker - inkscape:stockid="Arrow1Sstart" - orient="auto" - refY="0" - refX="0" - id="Arrow1Sstart" - style="overflow:visible"> - <path - id="path3337" - d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z " - style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" - transform="scale(0.2,0.2)" /> - </marker> - <marker - inkscape:stockid="Arrow2Send" - orient="auto" - refY="0" - refX="0" - id="Arrow2Send" - style="overflow:visible"> - <path - id="path3316" - style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " - transform="matrix(-0.3,0,0,-0.3,1.5,0)" /> - </marker> - <marker - inkscape:stockid="Arrow2Mend" - orient="auto" - refY="0" - refX="0" - id="Arrow2Mend" - style="overflow:visible"> - <path - id="path3322" - style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " - transform="matrix(-0.6,0,0,-0.6,3,0)" /> - </marker> - <marker - inkscape:stockid="Arrow1Lend" - orient="auto" - refY="0" - refX="0" - id="Arrow1Lend" - style="overflow:visible"> - <path - id="path3346" - d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z " - style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" - transform="scale(-0.8,-0.8)" /> - </marker> - <marker - inkscape:stockid="Arrow2Lstart" - orient="auto" - refY="0" - refX="0" - id="Arrow2Lstart" - style="overflow:visible"> - <path - id="path3331" - style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " - transform="matrix(1.1,0,0,1.1,-5.5,0)" /> - </marker> - <marker - inkscape:stockid="Arrow2Lend" - orient="auto" - refY="0" - refX="0" - id="Arrow2Lend" - style="overflow:visible"> - <path - id="path3328" - style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " - transform="matrix(-1.1,0,0,-1.1,5.5,0)" /> - </marker> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="2" - inkscape:cx="608.69002" - inkscape:cy="490.05621" - inkscape:document-units="in" - inkscape:current-layer="layer1" - showguides="true" - inkscape:guide-bbox="true" - inkscape:window-width="1278" - inkscape:window-height="973" - inkscape:window-x="0" - inkscape:window-y="0" - gridtolerance="0.125in" - guidetolerance="0.125in"> - <sodipodi:guide - orientation="horizontal" - position="629" - id="guide1307" /> - <sodipodi:guide - orientation="horizontal" - position="449" - id="guide1309" /> - <sodipodi:guide - orientation="horizontal" - position="269" - id="guide1311" /> - <sodipodi:guide - orientation="vertical" - position="496" - id="guide1313" /> - <sodipodi:guide - orientation="vertical" - position="383" - id="guide1315" /> - <sodipodi:guide - orientation="vertical" - position="241" - id="guide1317" /> - <sodipodi:guide - orientation="vertical" - position="680" - id="guide1319" /> - <sodipodi:guide - orientation="vertical" - position="749" - id="guide1321" /> - <sodipodi:guide - orientation="vertical" - position="124" - id="guide1345" /> - <sodipodi:guide - orientation="vertical" - position="901" - id="guide1347" /> - <sodipodi:guide - orientation="horizontal" - position="539" - id="guide3390" /> - <sodipodi:guide - orientation="horizontal" - position="359" - id="guide3392" /> - <sodipodi:guide - orientation="vertical" - position="280.5" - id="guide3324" /> - <sodipodi:guide - orientation="vertical" - position="195" - id="guide3326" /> - <sodipodi:guide - orientation="vertical" - position="427" - id="guide3328" /> - <sodipodi:guide - orientation="vertical" - position="795" - id="guide3340" /> - <sodipodi:guide - orientation="horizontal" - position="179" - id="guide1395" /> - </sodipodi:namedview> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:creator> - <cc:Agent> - <dc:title>Benjamin Kosnik</dc:title> - </cc:Agent> - </dc:creator> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1"> - <rect - y="382.17499" - x="241.73018" - height="23.200001" - width="141.64481" - id="rect3420" - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - id="rect3418" - width="141.64481" - height="23.200001" - x="52.730194" - y="382.17499" /> - <text - xml:space="preserve" - style="font-size:9.60000038;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" - x="122.35258" - y="395.91092" - id="text3394" - sodipodi:linespacing="100%"><tspan - sodipodi:role="line" - id="tspan1383" - x="122.35258" - y="395.91092">pairing_heap_tag</tspan></text> - <text - sodipodi:linespacing="100%" - id="text3400" - y="395.91092" - x="310.55255" - style="font-size:9.60000038;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans" - xml:space="preserve"><tspan - sodipodi:role="line" - id="tspan1381" - x="310.55255" - y="395.91092">bionomial_heap_tag</tspan></text> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - id="rect3380" - width="141.64481" - height="23.200001" - x="425.57764" - y="292.56177" /> - <text - xml:space="preserve" - style="font-size:9.60000038;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans" - x="495.20001" - y="307.09772" - id="text1323" - sodipodi:linespacing="100%"><tspan - sodipodi:role="line" - id="tspan1363" - x="495.20001" - y="307.09772">priority_queue_tag</tspan></text> - <path - style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.16226137;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="M 124.54034,382.1132 L 124.54034,360.6132 L 311.75594,359.6132 L 311.75594,382.1132" - id="path2244" /> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - id="rect3422" - width="141.64481" - height="23.200001" - x="425.73022" - y="382.17499" /> - <text - sodipodi:linespacing="100%" - id="text3406" - y="395.91092" - x="495.3526" - style="font-size:9.60000038;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans" - xml:space="preserve"><tspan - sodipodi:role="line" - id="tspan1377" - x="495.3526" - y="395.91092">rc_binomial_heap_tag</tspan></text> - <rect - y="382.17499" - x="607.93024" - height="23.200001" - width="141.64481" - id="rect3424" - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - <text - xml:space="preserve" - style="font-size:9.60000038;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans" - x="679.15259" - y="395.91092" - id="text3412" - sodipodi:linespacing="100%"><tspan - sodipodi:role="line" - id="tspan1379" - x="679.15259" - y="395.91092">binary_heap_tag</tspan></text> - <path - id="path3347" - d="M 495.79886,382.13056 L 495.79886,321.40547" - style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - id="rect2281" - width="141.64481" - height="23.200001" - x="795.625" - y="382.17499" /> - <text - sodipodi:linespacing="100%" - id="text2283" - y="395.91092" - x="866.84735" - style="font-size:9.60000038;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans" - xml:space="preserve"><tspan - sodipodi:role="line" - id="tspan1359" - x="866.84735" - y="395.91092">thin_heap_tag</tspan></text> - <path - style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="M 311.5,360 L 680,360" - id="path2309" /> - <use - x="0" - y="0" - xlink:href="#path2244" - id="use2311" - transform="matrix(-1,0,0,1,992.3371,0)" - width="990" - height="765" /> - </g> -</svg> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test.html deleted file mode 100644 index a4bf576ff52..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test.html +++ /dev/null @@ -1,141 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> -<title>Priority Queue Text Join Timing Test</title> -<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /> -</head> -<body> -<div id="page"> -<h1>Priority Queue Text <tt>join</tt> Timing Test</h1> -<h2><a name="description" id="description">Description</a></h2> -<p>This test inserts a number of values with keys from an - arbitrary text ([ <a href="references.html#wickland96thirty">wickland96thirty</a> ]) into - two containers, then merges the containers. It uses - <tt>join</tt> for <tt>pb_ds</tt>'s priority queues; for the - STL's priority queues, it successively pops values from one - container and pushes them into the other. The test measures the - average time as a function of the number of values.</p> -<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/priority_queue_text_join_timing.cc"><tt>priority_queue_text_join_timing_test</tt></a> - thirty_years_among_the_dead_preproc.txt 200 200 2100)</p> -<h2><a name="purpose" id="purpose">Purpose</a></h2> -<p>The test checks the effect of different underlying - data structures (see <a href="pq_design.html#pq_imp">Design::Priority - Queues::Implementations</a>).</p> -<h2><a name="results" id="results">Results</a></h2> -<p>Figures <a href="#NPG">NPG</a>, <a href="#NPM">NPM</a>, and - <a href="#NPL">NPL</a> show the results for the native priority - queues and <tt>pb_ds</tt> 's priority queues in <a href="pq_performance_tests.html#gcc"><u>g++</u></a>, <a href="pq_performance_tests.html#msvc"><u>msvc</u></a>, and <a href="pq_performance_tests.html#local"><u>local</u></a>, - respectively.</p> -<div id="NPG_res_div"> -<div id="NPG_gcc"> -<div id="NPG_priority_queue_text_join_timing_test"> -<div id="NPG_pq"> -<div id="NPG_Native_tree_and__tt_pb_ds_455tt__priority_queue__tt_push_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPG" id="NPG"><img src="priority_queue_text_join_timing_test_gcc.png" alt="no image" /></a></h6>NPG: Native tree and <tt>pb ds</tt> priority queue <tt>push</tt> timing test - <a href="pq_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_pq_deque- -<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li> -<li> -n_pq_vector- -<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li> -<li> -binary_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a> -</li> -<li> -thin_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a> -</li> -<li> -rc_binomial_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a> -</li> -<li> -pairing_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a> -</li> -<li> -binomial_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NPM_res_div"> -<div id="NPM_msvc"> -<div id="NPM_priority_queue_text_join_timing_test"> -<div id="NPM_pq"> -<div id="NPM_Native_tree_and__tt_pb_ds_455tt__priority_queue__tt_push_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPM" id="NPM"><img src="priority_queue_text_join_timing_test_msvc.png" alt="no image" /></a></h6>NPM: Native tree and <tt>pb ds</tt> priority queue <tt>push</tt> timing test - <a href="pq_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_pq_deque- -<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li> -<li> -n_pq_vector- -<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li> -<li> -binary_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a> -</li> -<li> -thin_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a> -</li> -<li> -rc_binomial_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a> -</li> -<li> -pairing_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a> -</li> -<li> -binomial_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NPL_res_div"> -<div id="NPL_local"> -<div id="NPL_priority_queue_text_join_timing_test"> -<div id="NPL_pq"> -<div id="NPL_Native_tree_and__tt_pb_ds_455tt__priority_queue__tt_push_455tt__timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPL" id= "NPL"><img src="priority_queue_text_join_timing_test_local.png" alt="no image" /></a></h6>NPL: Native tree and <tt>pb ds</tt> priority queue <tt>push</tt> timing test - <a href = "pq_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<h2><a name="observations" id="observations">Observations</a></h2> -<p>In this test the node-based heaps perform <tt>join</tt> in - either logarithmic or constant time. The binary heap requires - linear time, since the well-known heapify algorithm [<a href="references.html#clrs2001">clrs2001</a>] is linear.</p> -<p>It would be possible to apply the heapify algorithm to the - STL containers, if they would support iteration (which they - don't). Barring iterators, it is still somehow possible to - perform linear-time merge on a <tt>std::vector</tt>-based STL - priority queue, using <tt>top()</tt> and <tt>size()</tt> (since - they are enough to expose the underlying array), but this is - impossible for a <tt>std::deque</tt>-based STL priority queue. - Without heapify, the cost is super-linear.</p> -</div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test_gcc.png Binary files differdeleted file mode 100644 index a48bb358605..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test_local.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test_local.png Binary files differdeleted file mode 100644 index 67318f04896..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test_msvc.png Binary files differdeleted file mode 100644 index 0575b99c0c3..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test.html deleted file mode 100644 index 7ece80bcf12..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test.html +++ /dev/null @@ -1,204 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> -<title>Priority Queue Text Modify (Down) Timing Test</title> -<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /> -</head> -<body> -<div id="page"> -<h1>Priority Queue Text <tt>modify</tt> Timing Test - II</h1> -<h2><a name="description" id="description">Description</a></h2> -<p>This test inserts a number of values with keys from an - arbitrary text ([ <a href="references.html#wickland96thirty">wickland96thirty</a> ]) into - into a container then modifies each one "down" (<i>i.e.,</i> it - makes it smaller). It uses <tt>modify</tt> for <tt>pb_ds</tt>'s - priority queues; for the STL's priority queues, it pops values - from a container until it reaches the value that should be - modified, then pushes values back in. It measures the average - time for <tt>modify</tt> as a function of the number of - values.</p> -<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify_timing.cc"><tt>priority_queue_text_modify_down_timing_test</tt></a> - thirty_years_among_the_dead_preproc.txt 200 200 2100 f)</p> -<h2><a name="purpose" id="purpose">Purpose</a></h2> -<p>The main purpose of this test is to contrast <a href="priority_queue_text_modify_up_timing_test.html">Priority Queue - Text <tt>modify</tt> Timing Test - I</a>.</p> -<h2><a name="results" id="results">Results</a></h2> -<p>Figures <a href="#NPG">NPG</a>, <a href="#NPM">NPM</a>, and - <a href="#NPL">NPL</a> show the results for the native priority - queues and <tt>pb_ds</tt> 's priority queues in <a href="pq_performance_tests.html#gcc"><u>g++</u></a>, <a href="pq_performance_tests.html#msvc"><u>msvc++</u></a>, and - <a href="pq_performance_tests.html#local"><u>local</u></a>, - respectively; Figures <a href="#NRTG">NRTG</a>, <a href="#NRTM">NRTM</a>, and <a href="#NRTL">NRTL</a> show the results - for the pairing heap and thin heaps in <a href="pq_performance_tests.html#gcc"><u>g++</u></a>, <a href="pq_performance_tests.html#msvc"><u>msvc++</u></a>, and - <a href="pq_performance_tests.html#local"><u>local</u></a>, - respectively,</p> -<div id="NPG_res_div"> -<div id="NPG_gcc"> -<div id="NPG_priority_queue_text_modify_down_timing_test"> -<div id="NPG_pq"> -<div id="NPG_Native_and__tt_pb_ds_455tt__priority_queue__tt_modify_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPG" id="NPG"><img src="priority_queue_text_modify_down_timing_test_gcc.png" alt="no image" /></a></h6>NPG: Native and <tt>pb ds</tt> priority queue <tt>modify</tt> timing test - <a href="pq_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_pq_deque- -<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li> -<li> -n_pq_vector- -<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li> -<li> -binary_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a> -</li> -<li> -thin_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a> -</li> -<li> -rc_binomial_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a> -</li> -<li> -binomial_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a> -</li> -<li> -pairing_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NPM_res_div"> -<div id="NPM_msvc"> -<div id="NPM_priority_queue_text_modify_down_timing_test"> -<div id="NPM_pq"> -<div id="NPM_Native_and__tt_pb_ds_455tt__priority_queue__tt_modify_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPM" id="NPM"><img src="priority_queue_text_modify_down_timing_test_msvc.png" alt="no image" /></a></h6>NPM: Native and <tt>pb ds</tt> priority queue <tt>modify</tt> timing test - <a href="pq_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_pq_deque- -<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li> -<li> -n_pq_vector- -<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li> -<li> -binary_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a> -</li> -<li> -thin_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a> -</li> -<li> -rc_binomial_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a> -</li> -<li> -binomial_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a> -</li> -<li> -pairing_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NPL_res_div"> -<div id="NPL_local"> -<div id="NPL_priority_queue_text_modify_down_timing_test"> -<div id="NPL_pq"> -<div id="NPL_Native_and__tt_pb_ds_455tt__priority_queue__tt_modify_455tt__timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPL" id= "NPL"><img src="priority_queue_text_modify_down_timing_test_local.png" alt="no image" /></a></h6>NPL: Native and <tt>pb ds</tt> priority queue <tt>modify</tt> timing test - <a href = "pq_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NRTG_res_div"> -<div id="NRTG_gcc"> -<div id="NRTG_priority_queue_text_modify_down_timing_test_pairing_thin"> -<div id="NRTG_pq"> -<div id="NRTG_Pairing_and_thin__priority_queue__tt_modify_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NRTG" id="NRTG"><img src="priority_queue_text_modify_down_timing_test_pairing_thin_gcc.png" alt="no image" /></a></h6>NRTG: Pairing and thin priority queue <tt>modify</tt> timing test - <a href="pq_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -thin_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a> -</li> -<li> -pairing_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NRTM_res_div"> -<div id="NRTM_msvc"> -<div id="NRTM_priority_queue_text_modify_down_timing_test_pairing_thin"> -<div id="NRTM_pq"> -<div id="NRTM_Pairing_and_thin__priority_queue__tt_modify_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NRTM" id="NRTM"><img src="priority_queue_text_modify_down_timing_test_pairing_thin_msvc.png" alt="no image" /></a></h6>NRTM: Pairing and thin priority queue <tt>modify</tt> timing test - <a href="pq_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -thin_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a> -</li> -<li> -pairing_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NRTL_res_div"> -<div id="NRTL_local"> -<div id="NRTL_priority_queue_text_modify_down_timing_test_pairing_thin"> -<div id="NRTL_pq"> -<div id="NRTL_Pairing_and_thin__priority_queue__tt_modify_455tt__timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NRTL" id= "NRTL"><img src="priority_queue_text_modify_down_timing_test_pairing_thin_local.png" alt="no image" /></a></h6>NRTL: Pairing and thin priority queue <tt>modify</tt> timing test - <a href = "pq_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<h2><a name="observations" id="observations">Observations</a></h2> -<p>Most points in these results are similar to <a href="priority_queue_text_modify_up_timing_test.html">Priority Queue - Text <tt>modify</tt> Timing Test - I</a>.</p> -<p>It is interesting to note, however, that as opposed to that - test, a thin heap (<a href="priority_queue.html"><tt>priority_queue</tt></a> with - <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a>) is - outperformed by a pairing heap (<a href="priority_queue.html"><tt>priority_queue</tt></a> with - <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>). - In this case, both heaps essentially perform an <tt>erase</tt> - operation followed by a <tt>push</tt> operation. As the other - tests show, a pairing heap is usually far more efficient than a - thin heap, so this is not surprising.</p> -<p>Most algorithms that involve priority queues increase values - (in the sense of the priority queue's comparison functor), and - so <a href="priority_queue_text_modify_up_timing_test.html">Priority Queue - Text <tt>modify</tt> Timing Test - I</a> is more interesting - than this test.</p> -</div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_gcc.png Binary files differdeleted file mode 100644 index 74cbc652369..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_local.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_local.png Binary files differdeleted file mode 100644 index d8d3b7a7ada..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_msvc.png Binary files differdeleted file mode 100644 index 20b66373667..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_pairing_thin_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_pairing_thin_gcc.png Binary files differdeleted file mode 100644 index ca901831eff..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_pairing_thin_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_pairing_thin_local.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_pairing_thin_local.png Binary files differdeleted file mode 100644 index 23ac5e73ec1..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_pairing_thin_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_pairing_thin_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_pairing_thin_msvc.png Binary files differdeleted file mode 100644 index bf68bf99292..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_pairing_thin_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test.html deleted file mode 100644 index 72a1e0a757b..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test.html +++ /dev/null @@ -1,222 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> -<title>Priority Queue Text Modify (Up) Timing Test</title> -<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /> -</head> -<body> -<div id="page"> -<h1>Priority Queue Text <tt>modify</tt> Timing Test - I</h1> -<h2><a name="description" id="description">Description</a></h2> -<p>This test inserts a number of values with keys from an - arbitrary text ([ <a href="references.html#wickland96thirty">wickland96thirty</a> ]) into - into a container then modifies each one "up" (<i>i.e.,</i> it - makes it larger). It uses <tt>modify</tt> for <tt>pb_ds</tt>'s - priority queues; for the STL's priority queues, it pops values - from a container until it reaches the value that should be - modified, then pushes values back in. It measures the average - time for <tt>modify</tt> as a function of the number of - values.</p> -<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify_timing.cc"><tt>priority_queue_text_modify_up_timing_test</tt></a> - thirty_years_among_the_dead_preproc.txt 200 200 2100 t)</p> -<h2><a name="purpose" id="purpose">Purpose</a></h2> -<p>The test checks the effect of different underlying - data structures (see <a href="pq_design.html#pq_imp">Design::Priority - Queues::Implementations</a>) for graph algorithms settings. - Note that making an arbitrary value larger (in the sense of the - priority queue's comparison functor) corresponds to - decrease-key in standard graph algorithms [<a href="references.html#clrs2001">clrs2001</a>].</p> -<h2><a name="results" id="results">Results</a></h2> -<p>Figures <a href="#NPG">NPG</a>, <a href="#NPM">NPM</a>, and - <a href="#NPL">NPL</a> show the results for the native priority - queues and <tt>pb_ds</tt> 's priority queues in <a href="pq_performance_tests.html#gcc"><u>g++</u></a>, <a href="pq_performance_tests.html#msvc"><u>msvc++</u></a>, and - <a href="pq_performance_tests.html#local"><u>local</u></a>, - respectively; Figures <a href="#NRTG">NRTG</a>, <a href="#NRTM">NRTM</a>, and <a href="#NRTL">NRTL</a> show the results - for the pairing heap and thin heaps in <a href="pq_performance_tests.html#gcc"><u>g++</u></a>, <a href="pq_performance_tests.html#msvc"><u>msvc++</u></a>, and - <a href="pq_performance_tests.html#local"><u>local</u></a>, - respectively,</p> -<div id="NPG_res_div"> -<div id="NPG_gcc"> -<div id="NPG_priority_queue_text_modify_up_timing_test"> -<div id="NPG_pq"> -<div id="NPG_Native_and__tt_pb_ds_455tt__priority_queue__tt_modify_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPG" id="NPG"><img src="priority_queue_text_modify_up_timing_test_gcc.png" alt="no image" /></a></h6>NPG: Native and <tt>pb ds</tt> priority queue <tt>modify</tt> timing test - <a href="pq_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_pq_deque- -<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li> -<li> -n_pq_vector- -<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li> -<li> -binary_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a> -</li> -<li> -rc_binomial_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a> -</li> -<li> -pairing_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a> -</li> -<li> -binomial_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a> -</li> -<li> -thin_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NPM_res_div"> -<div id="NPM_msvc"> -<div id="NPM_priority_queue_text_modify_up_timing_test"> -<div id="NPM_pq"> -<div id="NPM_Native_and__tt_pb_ds_455tt__priority_queue__tt_modify_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPM" id="NPM"><img src="priority_queue_text_modify_up_timing_test_msvc.png" alt="no image" /></a></h6>NPM: Native and <tt>pb ds</tt> priority queue <tt>modify</tt> timing test - <a href="pq_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_pq_deque- -<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li> -<li> -n_pq_vector- -<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li> -<li> -binary_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a> -</li> -<li> -rc_binomial_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a> -</li> -<li> -pairing_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a> -</li> -<li> -binomial_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a> -</li> -<li> -thin_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NPL_res_div"> -<div id="NPL_local"> -<div id="NPL_priority_queue_text_modify_up_timing_test"> -<div id="NPL_pq"> -<div id="NPL_Native_and__tt_pb_ds_455tt__priority_queue__tt_modify_455tt__timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPL" id= "NPL"><img src="priority_queue_text_modify_up_timing_test_local.png" alt="no image" /></a></h6>NPL: Native and <tt>pb ds</tt> priority queue <tt>modify</tt> timing test - <a href = "pq_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NRTG_res_div"> -<div id="NRTG_gcc"> -<div id="NRTG_priority_queue_text_modify_up_timing_test_pairing_thin"> -<div id="NRTG_pq"> -<div id="NRTG_Pairing_and_thin__priority_queue__tt_modify_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NRTG" id="NRTG"><img src="priority_queue_text_modify_up_timing_test_pairing_thin_gcc.png" alt="no image" /></a></h6>NRTG: Pairing and thin priority queue <tt>modify</tt> timing test - <a href="pq_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -pairing_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a> -</li> -<li> -thin_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NRTM_res_div"> -<div id="NRTM_msvc"> -<div id="NRTM_priority_queue_text_modify_up_timing_test_pairing_thin"> -<div id="NRTM_pq"> -<div id="NRTM_Pairing_and_thin__priority_queue__tt_modify_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NRTM" id="NRTM"><img src="priority_queue_text_modify_up_timing_test_pairing_thin_msvc.png" alt="no image" /></a></h6>NRTM: Pairing and thin priority queue <tt>modify</tt> timing test - <a href="pq_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -pairing_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a> -</li> -<li> -thin_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NRTL_res_div"> -<div id="NRTL_local"> -<div id="NRTL_priority_queue_text_modify_up_timing_test_pairing_thin"> -<div id="NRTL_pq"> -<div id="NRTL_Pairing_and_thin__priority_queue__tt_modify_455tt__timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NRTL" id= "NRTL"><img src="priority_queue_text_modify_up_timing_test_pairing_thin_local.png" alt="no image" /></a></h6>NRTL: Pairing and thin priority queue <tt>modify</tt> timing test - <a href = "pq_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<h2><a name="observations" id="observations">Observations</a></h2> -<p>As noted above, increasing an arbitrary value (in the sense - of the priority queue's comparison functor) is very common in - graph-related algorithms. In this case, a thin heap (<a href="priority_queue.html"><tt>priority_queue</tt></a> with - <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a>) - outperforms a pairing heap (<a href="priority_queue.html"><tt>priority_queue</tt></a> with - <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>). - Conversely, <a href="priority_queue_text_push_timing_test.html">Priority Queue Text - <tt>push</tt> Timing Test</a>, <a href="priority_queue_text_push_pop_timing_test.html">Priority Queue - Text <tt>push</tt> and <tt>pop</tt> Timing Test</a>, <a href="priority_queue_random_int_push_timing_test.html">Priority - Queue Random Integer <tt>push</tt> Timing Test</a>, and - <a href="priority_queue_random_int_push_pop_timing_test.html">Priority - Queue Random Integer <tt>push</tt> and <tt>pop</tt> Timing - Test</a> show that the situation is reversed for other - operations. It is not clear when to prefer one of these two - different types.</p> -<p>In this test <tt>pb_ds</tt>'s binary heaps effectively - perform modify in linear time. As explained in <a href="pq_design.html#pq_traits">Priority Queue Design::Traits</a>, - given a valid point-type iterator, a binary heap can perform - <tt>modify</tt> logarithmically. The problem is that binary - heaps invalidate their find iterators with each modifying - operation, and so the only way to obtain a valid point-type - iterator is to iterate using a range-type iterator until - finding the appropriate value, then use the range-type iterator - for the <tt>modify</tt> operation.</p> -<p>The explanation for the STL's priority queues' performance - is similar to that in <a href="priority_queue_text_join_timing_test.html">Priority Queue Text - <tt>join</tt> Timing Test</a>.</p> -<p><a href="pq_performance_tests.html#pq_observations">Priority-Queue - Performance Tests::Observations</a> discusses this further and - summarizes.</p> -</div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_gcc.png Binary files differdeleted file mode 100644 index d9dedc20cf4..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_local.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_local.png Binary files differdeleted file mode 100644 index dc48e39df5d..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_msvc.png Binary files differdeleted file mode 100644 index 4005547c812..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_pairing_thin_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_pairing_thin_gcc.png Binary files differdeleted file mode 100644 index 1aa5aba94bf..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_pairing_thin_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_pairing_thin_local.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_pairing_thin_local.png Binary files differdeleted file mode 100644 index 9a73934c773..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_pairing_thin_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_pairing_thin_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_pairing_thin_msvc.png Binary files differdeleted file mode 100644 index 740594384cb..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_pairing_thin_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test.html b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test.html deleted file mode 100644 index 2545fc07d1f..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test.html +++ /dev/null @@ -1,143 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> -<title>Priority Queue Text Pop Memory Use Test</title> -<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /> -</head> -<body> -<div id="page"> -<h1>Priority Queue Text <tt>pop</tt> Memory Use Test</h1> -<h2><a name="description" id="description">Description</a></h2> -<p>This test inserts a number of values with keys from an - arbitrary text ([ <a href="references.html#wickland96thirty">wickland96thirty</a> ]) into - a container, then pops them until only one is left in the - container. It measures the memory use as a function of the - number of values pushed to the container.</p> -<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/priority_queue_text_pop_mem_usage.cc"><tt>priority_queue_text_pop_mem_usage_test</tt></a> - thirty_years_among_the_dead_preproc.txt 200 200 2100)</p> -<h2><a name="purpose" id="purpose">Purpose</a></h2> -<p>The test checks the effect of different underlying - data structures (see <a href="pq_design.html#pq_imp">Design::Priority - Queues::Implementations</a>).</p> -<h2><a name="results" id="results">Results</a></h2> -<p>Figures <a href="#NPG">NPG</a>, <a href="#NPM">NPM</a>, and - <a href="#NPL">NPL</a> show the results for the native priority - queues and <tt>pb_ds</tt> 's priority queues in <a href="pq_performance_tests.html#gcc"><u>g++</u></a>, <a href="pq_performance_tests.html#msvc"><u>msvc++</u></a>, and - <a href="pq_performance_tests.html#local"><u>local</u></a>, - respectively.</p> -<div id="NPG_res_div"> -<div id="NPG_gcc"> -<div id="NPG_priority_queue_text_pop_mem_usage_test"> -<div id="NPG_pq"> -<div id="NPG_Native_and__tt_pb_ds_455tt__priority_queue__tt_pop_455tt__memory-use_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPG" id="NPG"><img src="priority_queue_text_pop_mem_usage_test_gcc.png" alt="no image" /></a></h6>NPG: Native and <tt>pb ds</tt> priority queue <tt>pop</tt> memory-use test - <a href="pq_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_pq_vector- -<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li> -<li> -n_pq_deque- -<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li> -<li> -binary_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a> -</li> -<li> -thin_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a> -</li> -<li> -binomial_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a> -</li> -<li> -rc_binomial_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a> -</li> -<li> -pairing_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NPM_res_div"> -<div id="NPM_msvc"> -<div id="NPM_priority_queue_text_pop_mem_usage_test"> -<div id="NPM_pq"> -<div id="NPM_Native_and__tt_pb_ds_455tt__priority_queue__tt_pop_455tt__memory-use_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPM" id="NPM"><img src="priority_queue_text_pop_mem_usage_test_msvc.png" alt="no image" /></a></h6>NPM: Native and <tt>pb ds</tt> priority queue <tt>pop</tt> memory-use test - <a href="pq_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_pq_vector- -<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li> -<li> -n_pq_deque- -<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li> -<li> -binary_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a> -</li> -<li> -thin_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a> -</li> -<li> -binomial_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a> -</li> -<li> -rc_binomial_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a> -</li> -<li> -pairing_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NPL_res_div"> -<div id="NPL_local"> -<div id="NPL_priority_queue_text_pop_mem_usage_test"> -<div id="NPL_pq"> -<div id="NPL_Native_and__tt_pb_ds_455tt__priority_queue__tt_pop_455tt__memory-use_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPL" id= "NPL"><img src="priority_queue_text_pop_mem_usage_test_local.png" alt="no image" /></a></h6>NPL: Native and <tt>pb ds</tt> priority queue <tt>pop</tt> memory-use test - <a href = "pq_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<h2><a name="observations" id="observations">Observations</a></h2> -<p>The priority queue implementations (excluding the STL's) use - memory proportionally to the number of values they hold: - node-based implementations (<i>e.g.</i>, a pairing heap) do so - naturally; <tt>pb_ds</tt>'s binary heap de-allocates memory when - a certain lower threshold is exceeded.</p> -<p>Note from <a href="priority_queue_text_push_pop_timing_test.html">Priority Queue - Text <tt>push</tt> and <tt>pop</tt> Timing Test</a> and - <a href="priority_queue_random_int_push_pop_timing_test.html">Priority - Queue Random Integer <tt>push</tt> and <tt>pop</tt> Timing - Test</a> that this does not impede performance compared to the - STL's priority queues.</p> -<p>(See <a href="hash_random_int_erase_mem_usage_test.html">Hash-Based Erase - Memory Use Test</a> for a similar phenomenon regarding priority - queues.)</p> -</div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test_gcc.png Binary files differdeleted file mode 100644 index 2c1918d0623..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test_local.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test_local.png Binary files differdeleted file mode 100644 index d1966e33d98..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test_msvc.png Binary files differdeleted file mode 100644 index 9717f498b7a..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test.html deleted file mode 100644 index 3c143fe5a1b..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test.html +++ /dev/null @@ -1,209 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> -<title>Priority Queue Text Push Pop Timing Test</title> -<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /> -</head> -<body> -<div id="page"> -<h1>Priority Queue Text <tt>push</tt> and <tt>pop</tt> Timing - Test</h1> -<h2><a name="description" id="description">Description</a></h2> -<p>This test inserts a number of values with keys from an - arbitrary text ([ <a href="references.html#wickland96thirty">wickland96thirty</a> ]) into - a container using <tt>push</tt> , then removes them using - <tt>pop</tt> . It measures the average time for <tt>push</tt> - as a function of the number of values.</p> -<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/priority_queue_text_push_pop_timing.cc"><tt> - priority_queue_text_push_pop_timing_test</tt></a> - thirty_years_among_the_dead_preproc.txt 200 200 2100)</p> -<h2><a name="purpose" id="purpose">Purpose</a></h2> -<p>The test checks the effect of different underlying - data structures (see <a href="pq_design.html#pq_imp">Design::Priority - Queues::Implementations</a>).</p> -<h2><a name="results" id="results">Results</a></h2> -<p>Figures <a href="#NPG">NPG</a>, <a href="#NPM">NPM</a>, and - <a href="#NPL">NPL</a> show the results for the native priority - queues and <tt>pb_ds</tt> 's priority queues in <a href="pq_performance_tests.html#gcc"><u>g++</u></a>, <a href="pq_performance_tests.html#msvc"><u>msvc++</u></a>, and - <a href="pq_performance_tests.html#local"><u>local</u></a>, - respectively; Figures <a href="#NBRG">NBRG</a>, <a href="#NBRM">NBRM</a>, and <a href="#NBRL">NBRL</a> show the results - for the native priority queues and <tt>pb_ds</tt>'s pairing - queues in <a href="pq_performance_tests.html#gcc"><u>g++</u></a>, <a href="pq_performance_tests.html#msvc"><u>msvc++</u></a>, and - <a href="pq_performance_tests.html#local"><u>local</u></a>, - respectively.</p> -<div id="NPG_res_div"> -<div id="NPG_gcc"> -<div id="NPG_priority_queue_text_push_pop_timing_test"> -<div id="NPG_pq"> -<div id="NPG_Native_tree_and__tt_pb_ds_455tt__priority_queue__tt_push_455tt__and__tt_pop_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPG" id="NPG"><img src="priority_queue_text_push_pop_timing_test_gcc.png" alt="no image" /></a></h6>NPG: Native tree and <tt>pb ds</tt> priority queue <tt>push</tt> and <tt>pop</tt> timing test - <a href="pq_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_pq_vector- -<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li> -<li> -n_pq_deque- -<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li> -<li> -thin_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a> -</li> -<li> -rc_binomial_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a> -</li> -<li> -binomial_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a> -</li> -<li> -binary_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a> -</li> -<li> -pairing_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NPM_res_div"> -<div id="NPM_msvc"> -<div id="NPM_priority_queue_text_push_pop_timing_test"> -<div id="NPM_pq"> -<div id="NPM_Native_tree_and__tt_pb_ds_455tt__priority_queue__tt_push_455tt__and__tt_pop_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPM" id="NPM"><img src="priority_queue_text_push_pop_timing_test_msvc.png" alt="no image" /></a></h6>NPM: Native tree and <tt>pb ds</tt> priority queue <tt>push</tt> and <tt>pop</tt> timing test - <a href="pq_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_pq_deque- -<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li> -<li> -n_pq_vector- -<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li> -<li> -thin_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a> -</li> -<li> -rc_binomial_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a> -</li> -<li> -binomial_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a> -</li> -<li> -pairing_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a> -</li> -<li> -binary_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NPL_res_div"> -<div id="NPL_local"> -<div id="NPL_priority_queue_text_push_pop_timing_test"> -<div id="NPL_pq"> -<div id="NPL_Native_tree_and__tt_pb_ds_455tt__priority_queue__tt_push_455tt__and__tt_pop_455tt__timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPL" id= "NPL"><img src="priority_queue_text_push_pop_timing_test_local.png" alt="no image" /></a></h6>NPL: Native tree and <tt>pb ds</tt> priority queue <tt>push</tt> and <tt>pop</tt> timing test - <a href = "pq_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NBRG_res_div"> -<div id="NBRG_gcc"> -<div id="NBRG_pairing_priority_queue_text_push_pop_timing_test"> -<div id="NBRG_pq"> -<div id="NBRG_Native_tree_and__tt_pb_ds_455tt__pairing_priority_queue__tt_push_455tt__and__tt_pop_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NBRG" id="NBRG"><img src="pairing_priority_queue_text_push_pop_timing_test_gcc.png" alt="no image" /></a></h6>NBRG: Native tree and <tt>pb ds</tt> pairing priority queue <tt>push</tt> and <tt>pop</tt> timing test - <a href="pq_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_pq_vector- -<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li> -<li> -n_pq_deque- -<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li> -<li> -pairing_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NBRM_res_div"> -<div id="NBRM_msvc"> -<div id="NBRM_pairing_priority_queue_text_push_pop_timing_test"> -<div id="NBRM_pq"> -<div id="NBRM_Native_tree_and__tt_pb_ds_455tt__pairing_priority_queue__tt_push_455tt__and__tt_pop_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NBRM" id="NBRM"><img src="pairing_priority_queue_text_push_pop_timing_test_msvc.png" alt="no image" /></a></h6>NBRM: Native tree and <tt>pb ds</tt> pairing priority queue <tt>push</tt> and <tt>pop</tt> timing test - <a href="pq_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_pq_deque- -<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li> -<li> -n_pq_vector- -<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li> -<li> -pairing_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NBRL_res_div"> -<div id="NBRL_local"> -<div id="NBRL_pairing_priority_queue_text_push_pop_timing_test"> -<div id="NBRL_pq"> -<div id="NBRL_Native_tree_and__tt_pb_ds_455tt__pairing_priority_queue__tt_push_455tt__and__tt_pop_455tt__timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NBRL" id= "NBRL"><img src="pairing_priority_queue_text_push_pop_timing_test_local.png" alt="no image" /></a></h6>NBRL: Native tree and <tt>pb ds</tt> pairing priority queue <tt>push</tt> and <tt>pop</tt> timing test - <a href = "pq_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<h2><a name="observations" id="observations">Observations</a></h2> -<p>These results are very similar to <a href="priority_queue_text_push_timing_test.html">Priority Queue Text - <tt>push</tt> Timing Test</a>. As stated there, pairing heaps - (<a href="priority_queue.html"><tt>priority_queue</tt></a> with - <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>) - are most suited for <tt>push</tt> and <tt>pop</tt> sequences of - non-primitive types such as strings. Observing these two tests, - one can note that a pairing heap outperforms the others in - terms of <tt>push</tt> operations, but equals binary heaps - (<a href="priority_queue.html"><tt>priority_queue</tt></a> with - <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a>) if - the number of <tt>push</tt> and <tt>pop</tt> operations is - equal. As the number of <tt>pop</tt> operations is at most - equal to the number of <tt>push</tt> operations, pairing heaps - are better in this case. See <a href="priority_queue_random_int_push_pop_timing_test.html">Priority - Queue Random Integer <tt>push</tt> and <tt>pop</tt> Timing - Test</a> for a case which is different.</p> -<p><a href="pq_performance_tests.html#pq_observations">Priority-Queue - Performance Tests::Observations</a> discusses this further and - summarizes.</p> -</div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test_gcc.png Binary files differdeleted file mode 100644 index d4886ae5967..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test_local.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test_local.png Binary files differdeleted file mode 100644 index fd52d5a16c5..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test_msvc.png Binary files differdeleted file mode 100644 index a5720402b3b..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test.html deleted file mode 100644 index 542eb913c49..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test.html +++ /dev/null @@ -1,219 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> -<title>Priority Queue Text Push Timing Test</title> -<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /> -</head> -<body> -<div id="page"> -<h1>Priority Queue Text <tt>push</tt> Timing Test</h1> -<h2><a name="description" id="description">Description</a></h2> -<p>This test inserts a number of values with keys from an - arbitrary text ([ <a href="references.html#wickland96thirty">wickland96thirty</a> ]) into - a container using <tt>push</tt> . It measures the average time - for <tt>push</tt> as a function of the number of values - pushed.</p> -<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/priority_queue_text_push_timing.cc"><tt>priority_queue_text_push_timing_test</tt></a> - thirty_years_among_the_dead_preproc.txt 200 200 2100)</p> -<h2><a name="purpose" id="purpose">Purpose</a></h2> -<p>The test checks the effect of different underlying - data structures (see <a href="pq_design.html#pq_imp">Design::Priority - Queues::Implementations</a>).</p> -<h2><a name="results" id="results">Results</a></h2> -<p>Figures <a href="#NPG">NPG</a>, <a href="#NPM">NPM</a>, and - <a href="#NPL">NPL</a> show the results for the native priority - queues and <tt>pb_ds</tt> 's priority queues in <a href="pq_performance_tests.html#gcc"><u>g++</u></a>, <a href="pq_performance_tests.html#msvc"><u>msvc++</u></a>, and - <a href="pq_performance_tests.html#local"><u>local</u></a>, - respectively; Figures <a href="#NBRG">NBRG</a>, <a href="#NBRM">NBRM</a>, and <a href="#NBRL">NBRL</a> shows the - results for the binary-heap based native priority queues and - <tt>pb_ds</tt>'s pairing-heap priority queues in <a href="pq_performance_tests.html#gcc"><u>g++</u></a>, <a href="pq_performance_tests.html#msvc"><u>msvc++</u></a>, and - <a href="pq_performance_tests.html#local"><u>local</u></a>, - respectively</p> -<div id="NPG_res_div"> -<div id="NPG_gcc"> -<div id="NPG_priority_queue_text_push_timing_test"> -<div id="NPG_pq"> -<div id="NPG_Native_and__tt_pb_ds_455tt__priority_queue__tt_push_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPG" id="NPG"><img src="priority_queue_text_push_timing_test_gcc.png" alt="no image" /></a></h6>NPG: Native and <tt>pb ds</tt> priority queue <tt>push</tt> timing test - <a href="pq_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_pq_vector- -<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li> -<li> -n_pq_deque- -<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li> -<li> -binary_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a> -</li> -<li> -rc_binomial_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a> -</li> -<li> -thin_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a> -</li> -<li> -binomial_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a> -</li> -<li> -pairing_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NPM_res_div"> -<div id="NPM_msvc"> -<div id="NPM_priority_queue_text_push_timing_test"> -<div id="NPM_pq"> -<div id="NPM_Native_and__tt_pb_ds_455tt__priority_queue__tt_push_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPM" id="NPM"><img src="priority_queue_text_push_timing_test_msvc.png" alt="no image" /></a></h6>NPM: Native and <tt>pb ds</tt> priority queue <tt>push</tt> timing test - <a href="pq_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_pq_deque- -<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li> -<li> -rc_binomial_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="rc_binomial_heap_tag.html"><tt>rc_binomial_heap_tag</tt></a> -</li> -<li> -binary_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binary_heap_tag.html"><tt>binary_heap_tag</tt></a> -</li> -<li> -binomial_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="binomial_heap_tag.html"><tt>binomial_heap_tag</tt></a> -</li> -<li> -n_pq_vector- -<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li> -<li> -pairing_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a> -</li> -<li> -thin_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NPL_res_div"> -<div id="NPL_local"> -<div id="NPL_priority_queue_text_push_timing_test"> -<div id="NPL_pq"> -<div id="NPL_Native_and__tt_pb_ds_455tt__priority_queue__tt_push_455tt__timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPL" id= "NPL"><img src="priority_queue_text_push_timing_test_local.png" alt="no image" /></a></h6>NPL: Native and <tt>pb ds</tt> priority queue <tt>push</tt> timing test - <a href = "pq_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NBRG_res_div"> -<div id="NBRG_gcc"> -<div id="NBRG_pairing_priority_queue_text_push_timing_test"> -<div id="NBRG_pq"> -<div id="NBRG_Native_and__tt_pb_ds_455tt__pairing_priority_queue__tt_push_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NBRG" id="NBRG"><img src="pairing_priority_queue_text_push_timing_test_gcc.png" alt="no image" /></a></h6>NBRG: Native and <tt>pb ds</tt> pairing priority queue <tt>push</tt> timing test - <a href="pq_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_pq_vector- -<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li> -<li> -n_pq_deque- -<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li> -<li> -thin_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a> -</li> -<li> -pairing_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NBRM_res_div"> -<div id="NBRM_msvc"> -<div id="NBRM_pairing_priority_queue_text_push_timing_test"> -<div id="NBRM_pq"> -<div id="NBRM_Native_and__tt_pb_ds_455tt__pairing_priority_queue__tt_push_455tt__timing_test"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NBRM" id="NBRM"><img src="pairing_priority_queue_text_push_timing_test_msvc.png" alt="no image" /></a></h6>NBRM: Native and <tt>pb ds</tt> pairing priority queue <tt>push</tt> timing test - <a href="pq_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_pq_deque- -<tt>std::priority_queue</tt> adapting <tt>std::deque</tt></li> -<li> -n_pq_vector- -<tt>std::priority_queue</tt> adapting <tt>std::vector</tt></li> -<li> -pairing_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a> -</li> -<li> -thin_heap- -<a href="priority_queue.html"><tt>priority_queue</tt></a> - with <tt>Tag</tt> = <a href="thin_heap_tag.html"><tt>thin_heap_tag</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NBRL_res_div"> -<div id="NBRL_local"> -<div id="NBRL_pairing_priority_queue_text_push_timing_test"> -<div id="NBRL_pq"> -<div id="NBRL_Native_and__tt_pb_ds_455tt__pairing_priority_queue__tt_push_455tt__timing_test"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NBRL" id= "NBRL"><img src="pairing_priority_queue_text_push_timing_test_local.png" alt="no image" /></a></h6>NBRL: Native and <tt>pb ds</tt> pairing priority queue <tt>push</tt> timing test - <a href = "pq_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<h2><a name="observations" id="observations">Observations</a></h2> -<p>Pairing heaps (<a href="priority_queue.html"><tt>priority_queue</tt></a> with - <tt>Tag</tt> = <a href="pairing_heap_tag.html"><tt>pairing_heap_tag</tt></a>) - are the most suited for sequences of <tt>push</tt> and - <tt>pop</tt> operations of non-primitive types (<i>e.g.</i> -<tt>std::string</tt>s). (see also <a href="priority_queue_text_push_pop_timing_test.html">Priority Queue - Text <tt>push</tt> and <tt>pop</tt> Timing Test</a>.) They are - less constrained than binomial heaps, <i>e.g.</i>, and since - they are node-based, they outperform binary heaps. (See - <a href="priority_queue_random_int_push_timing_test.html">Priority - Queue Random Integer <tt>push</tt> Timing Test</a> for the case - of primitive types.)</p> -<p>The STL's priority queues do not seem to perform well in - this case: the <tt>std::vector</tt> implementation needs to - perform a logarithmic sequence of string operations for each - operation, and the deque implementation is possibly hampered by - its need to manipulate a relatively-complex type (deques - support a <i>O(1)</i> <tt>push_front</tt>, even though it is - not used by <tt>std::priority_queue</tt>.)</p> -<p><a href="pq_performance_tests.html#pq_observations">Priority-Queue - Performance Tests::Observations</a> discusses this further and - summarizes.</p> -</div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test_gcc.png Binary files differdeleted file mode 100644 index 8895f507cfc..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test_local.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test_local.png Binary files differdeleted file mode 100644 index 18cca76c294..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test_msvc.png Binary files differdeleted file mode 100644 index ff39ca37dd9..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/quadratic_probe_fn.html b/libstdc++-v3/doc/html/ext/pb_ds/quadratic_probe_fn.html deleted file mode 100644 index 00367dac891..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/quadratic_probe_fn.html +++ /dev/null @@ -1,141 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>quadratic_probe_fn Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>quadratic_probe_fn</tt> Interface</h1> - - <p>A probe sequence policy using square increments.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/hash_policy.hpp"><tt>hash_policy.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Template Parameters</a></h2> - - <table class="c1" width="100%" border="1" summary= - "Template Parameters"> - <tr> - <td width="20%" align="left"><b>Parameter</b></td> - - <td width="50%" align="left"><b>Description</b></td> - - <td width="30%" align="left"><b>Default Value</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="Size_Type42920436" id= -"Size_Type42920436"><b>typename</b> Size_Type </a> -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - - <td>size_t</td> - </tr> - </table> - - <h2><a name="link2" id="link2">Public Types and - Constants</a></h2> - - <h3><a name="link3" id="link3">General Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="size_type55424436" id="size_type55424436">size_type</a> -</pre> - </td> - - <td> - <pre> -<a href="#Size_Type42920436"><tt>Size_Type</tt></a> -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - </tr> - </table> - - <h2><a name="link4" id="link4">Public Methods</a></h2> - - <h3><a name="link5" id="link5">Constructors, Destructor, and - Related</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - swap - (<span class= -"c2"><tt>quadratic_probe_fn</tt></span> &other) -</pre> - </td> - - <td> - <p>Swaps content.</p> - </td> - </tr> - </table> - - <h2><a name="link6" id="link6">Protected Methods</a></h2> - - <h3><a name="link7" id="link7">Offset Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a> - <b>operator</b>() - (<a href= -"#size_type55424436"><tt>size_type</tt></a> i) <b>const</b> -</pre> - </td> - - <td> - <p>Returns the <span class="c1"><tt>i</tt></span>-th - offset from the hash value.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/random_int_find_find_timing_test_tree_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/random_int_find_find_timing_test_tree_gcc.png Binary files differdeleted file mode 100644 index 61962704f71..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/random_int_find_find_timing_test_tree_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/random_int_find_find_timing_test_tree_local.png b/libstdc++-v3/doc/html/ext/pb_ds/random_int_find_find_timing_test_tree_local.png Binary files differdeleted file mode 100644 index dd7c184dd43..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/random_int_find_find_timing_test_tree_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/random_int_find_find_timing_test_tree_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/random_int_find_find_timing_test_tree_msvc.png Binary files differdeleted file mode 100644 index 2206cef5a90..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/random_int_find_find_timing_test_tree_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/range_invalidation_guarantee.html b/libstdc++-v3/doc/html/ext/pb_ds/range_invalidation_guarantee.html deleted file mode 100644 index 7bfba19e813..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/range_invalidation_guarantee.html +++ /dev/null @@ -1,52 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>range_invalidation_guarantee Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>range_invalidation_guarantee</tt> Interface</h1> - - <p>Signifies an invalidation guarantee that includes all those - of its base, and additionally, that any range-type iterator - (including the returns of begin() and end()) is in the correct - relative positions to other range-type iterators as long as its - corresponding entry has not be erased, regardless of - modifications to the container object.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Base Classes</a></h2> - - <table class="c1" width="100%" border="1" summary="Bases"> - <tr> - <td width="80%" align="left"><b>Class</b></td> - - <td width="20%" align="left"><b>Derivation Type</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="point_invalidation_guarantee.html"><span class= -"c2"><tt>point_invalidation_guarantee</tt></span></a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/rb_tree_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/rb_tree_tag.html deleted file mode 100644 index 2adbd09bfb3..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/rb_tree_tag.html +++ /dev/null @@ -1,47 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>rb_tree_tag Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>rb_tree_tag</tt> Interface</h1> - - <p>Red-black tree data structure tag.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Base Classes</a></h2> - - <table class="c1" width="100%" border="1" summary="Bases"> - <tr> - <td width="80%" align="left"><b>Class</b></td> - - <td width="20%" align="left"><b>Derivation Type</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="tree_tag.html"><span class= -"c2"><tt>tree_tag</tt></span></a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/rc_binomial_heap_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/rc_binomial_heap_tag.html deleted file mode 100644 index 1a4ba9f2e0e..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/rc_binomial_heap_tag.html +++ /dev/null @@ -1,47 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>rc_binomial_heap_tag Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>rc_binomial_heap_tag</tt> Interface</h1> - - <p>Redundant-counter binomial-heap data structure tag.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Base Classes</a></h2> - - <table class="c1" width="100%" border="1" summary="Bases"> - <tr> - <td width="80%" align="left"><b>Class</b></td> - - <td width="20%" align="left"><b>Derivation Type</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="priority_queue_tag.html"><span class= -"c2"><tt>priority_queue_tag</tt></span></a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/references.html b/libstdc++-v3/doc/html/ext/pb_ds/references.html deleted file mode 100644 index 064e924648e..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/references.html +++ /dev/null @@ -1,258 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>References</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1>References</h1> - - <ol> - <li>[<a name="abrahams97exception" id= - "abrahams97exception">abrahams97exception</a>] Dave Abrahams, - STL Exception Handling Contract, <a href= - "http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/1997/N1075.pdf"> - http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/1997/N1075.pdf</a></li> - - <li>[<a name="alexandrescu01modern" id= - "alexandrescu01modern">alexandrescu01modern</a>] Andrei - Alexandrescu, <i>Modern C++ Design: Generic Programming and - Design Patterns Applied</i>, Addison-Wesley Publishing - Company, 2001</li> - - <li>[<a name="andrew04mtf" id="andrew04mtf">andrew04mtf</a>] - K. Andrew and D. Gleich, "MTF, Bit, and COMB: A Guide to - Deterministic and Randomized Algorithms for the List Update - Problem"</li> - - <li>[<a name="austern00noset" id= - "austern00noset">austern00noset</a>] Matthew Austern, "Why - You shouldn't use <tt>set</tt> - and What You Should Use - Instead", C++ Report, April, 2000</li> - - <li>[<a name="austern01htprop" id= - "austern01htprop">austern01htprop</a>] Matthew Austern, "A - Proposal to Add Hashtables to the Standard Library", <a href= - "http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2001/n1326l.html"> - http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2001/n1326l.html</a></li> - - <li>[<a name="austern98segmented" id= - "austern98segmented">austern98segmented</a>] Matthew Austern, - "Segmented iterators and hierarchical algorithms", Generic - Programming, April 1998, pp. 80-90</li> - - <li>[<a name="boost_timer" id="boost_timer">boost_timer</a>], - "Boost timer library", <a href= - "http://www.boost.org/">http://www.boost.org</a> by Beman - Dawes</li> - - <li>[<a name="boost_pool" id="boost_pool">boost_pool</a>], - "Boost pool library", <a href= - "http://www.boost.org/">http://www.boost.org</a> by Stephen - Cleary</li> - - <li>[<a name="boost_type_traits" id= - "boost_type_traits">boost_type_traits</a>], "Boost - <tt>type_traits</tt> library", <a href= - "http://www.boost.org/">http://www.boost.org</a> by John - Maddock, Steve Cleary, <i>et. al.</i></li> - - <li>[<a name="brodal96priority" id= - "brodal96priority">brodal96priority</a>] Gerth Stolting - Brodal, <a href= - "http://portal.acm.org/citation.cfm?id=313883">Worst-case - efficient priority queues</a></li> - - <li>[<a name="bulka99efficient" id= - "bulka99efficient">bulka99efficient</a>] D. Bulka, and D. - Mayhew, "Efficient C++ Programming Techniques.", - Addison-Wesley Publishing Company, Addison-Wesley, 1997</li> - - <li>[<a name="clrs2001" id="clrs2001">clrs2001</a>] T. H. - Cormen, C. E., Leiserson, R. L. Rivest, C. and Stein, - "Introduction to Algorithms, 2nd ed.", MIT Press, 2001</li> - - <li>[<a name="dinkumware_stl" id= - "dinkumware_stl">dinkumware_stl</a>], "Dinkumware C++ Library - Reference", <a href= - "http://www.dinkumware.com/htm_cpl/index.html">http://www.dinkumware.com/htm_cpl/index.html</a></li> - - <li>[<a name="dubhashi98neg" id= - "dubhashi98neg">dubhashi98neg</a>] D. Dubashi, and D. Ranjan, - "Balls and bins: A study in negative dependence.", Random - Structures and Algorithms 13, 2 (1998), 99-124</li> - - <li>[<a name="fagin79extendible" id= - "fagin79extendible">fagin79extendible</a>] R. Fagin, J. - Nievergelt, N. Pippenger, and H. R. Strong, "Extendible - hashing - a fast access method for dynamic files", ACM Trans. - Database Syst. 4, 3 (1979), 315-344</li> - - <li>[<a name="filliatre2000ptset" id= - "filliatre2000ptset">filliatre2000ptset</a>], J. C. - Filliatre, "Ptset: Sets of integers implemented as Patricia - trees", <a href= - "http://www.lri.fr/~filliatr/ftp/ocaml/misc/ptset.ml">http://www.lri.fr/~filliatr/ftp/ocaml/misc/ptset.ml</a></li> - - <li>[<a name="fredman86pairing" id= - "fredman86pairing">fredman86pairing</a>], M. L. Fredman, R - Sedgewick, D. D. Sleator, R. E. Tarjan, <a href= - "http://www.cs.cmu.edu/~sleator/papers/pairing-heaps.pdf">The - pairing heap: a new form of self-adjusting heap</a></li> - - <li>[<a name="gamma95designpatterns" id= - "gamma95designpatterns">gamma95designpatterns</a>] E. Gamma, - R. Helm, R. Johnson, and J. Vlissides, "Design Patterns - - Elements of Reusable Object-Oriented Software", - Addison-Wesley Publishing Company, Addison-Wesley, 1995</li> - - <li>[<a name="garg86order" id="garg86order">garg86order</a>] - A. K. Garg and C. C. Gotlieb, "Order-preserving key - transformations", Trans. Database Syst. 11, 2 (1986), - 213-234</li> - - <li>[<a name="hyslop02making" id= - "hyslop02making">hyslop02making</a>] J. Hyslop, and H. - Sutter, "Making a real hash of things", C++ Report, May - 2002</li> - - <li>[<a name="jossutis01stl" id= - "jossutis01stl">jossutis01stl</a>] N. M. Jossutis, "The C++ - Standard Library - A Tutorial and Reference", Addison-Wesley - Publishing Company, Addison-Wesley, 2001</li> - - <li>[<a name="kt99fat_heaps" id= - "kt99fat_heaps">kt99fat_heas</a>] Haim Kaplan and Robert E. - Tarjan, <a href= - "http://www.cs.princeton.edu/research/techreps/TR-597-99">New - Heap Data Structures</a></li> - - <li>[<a name="kleft00sets" id="kleft00sets">kleft00sets</a>] - Klaus Kleft and Angelika Langer, "Are Set Iterators Mutable - or Immutable?", C/C++ Users Jornal, October 2000</li> - - <li>[<a name="knuth98sorting" id= - "knuth98sorting">knuth98sorting</a>] D. E. Knuth, "The Art of - Computer Programming - Sorting and Searching", Addison-Wesley - Publishing Company, Addison-Wesley, 1998</li> - - <li>[<a name="liskov98data" id= - "liskov98data">liskov98data</a>] B. Liskov, "Data abstraction - and hierarchy", SIGPLAN Notices 23, 5 (May 1998)</li> - - <li>[<a name="litwin80lh" id="litwin80lh">litwin80lh</a>] W. - Litwin, "Linear hashing: A new tool for file and table - addressing", Proceedings of International Conference on Very - Large Data Bases (June 1980), pp. 212-223</li> - - <li>[<a name="maverik_lowerbounds" id= - "maverik_lowerbounds">maverik_lowerbounds</a>] Maverik Woo, - <a href= - "http://magic.aladdin.cs.cmu.edu/2005/08/01/deamortization-part-2-binomial-heaps/"> - Deamortization - Part 2: Binomial Heaps</a></li> - - <li>[<a name="metrowerks_stl" id= - "metrowerks_stl">metrowerks_stl</a>], "Metrowerks CodeWarrior - Pro 7 MSL C++ Reference Manual",</li> - - <li>[<a name="meyers96more" id= - "meyers96more">meyers96more</a>] S. Meyers, "More Effective - C++: 35 New Ways to Improve Your Programs and Designs - 2nd - ed.", Addison-Wesley Publishing Company, Addison-Wesley, - 1996</li> - - <li>[<a name="meyers00nonmember" id= - "meyers00nonmember">meyers00nonmember</a>] S. Meyers, "How - Non-Member Functions Improve Encapsulation", C/C++ Users - Journal, 2000</li> - - <li>[<a name="meyers01stl" id="meyers01stl">meyers01stl</a>] - S. Meyers, "Effective STL: 50 Specific Ways to Improve Your - Use of the Standard Template Library", Addison-Wesley - Publishing Company, Addison-Wesley, 2001</li> - - <li>[<a name="meyers02both" id= - "meyers02both">meyers02both</a>] S. Meyers, "Class Template, - Member Template - or Both?", C/C++ Users Journal, 2003</li> - - <li>[<a name="motwani95random" id= - "motwani95random">motwani95random</a>] R. Motwani, and P. - Raghavan, "Randomized Algorithms", Cambridge University - Press</li> - - <li>[<a name="mscom" id="mscom">mscom</a>] <a href= - "http://www.microsoft.com/com">COM: Component Model Object - Technologies</a></li> - - <li>[<a name="musser95rationale" id= - "musser95rationale">musser95rationale</a>], David R. Musser, - "Rationale for Adding Hash Tables to the C++ Standard - Template Library"</li> - - <li>[<a name="musser96stltutorial" id= - "musser96stltutorial">musser96stltutorial</a>] D. R. Musser - and A. Saini, "STL Tutorial and Reference Guide", - Addison-Wesley Publishing Company, Addison-Wesley, 1996</li> - - <li>[<a name="nelson96stlpq" id= - "nelson96stlpq">nelson96stlpql</a>] Mark Nelson, <a href= - "http://www.dogma.net/markn/articles/pq_stl/priority.htm">Priority - Queues and the STL</a>, Dr. Dobbs Journal, January, 1996</li> - - <li>[<a name="okasaki98mereable" id= - "okasaki98mereable">okasaki98mereable</a>] C. Okasaki and A. - Gill, "Fast mergeable integer maps", In Workshop on ML, pages - 77--86, September 1998. 95</li> - - <li>[<a name="sgi_stl" id="sgi_stl">sgi_stl</a>] SGI, - "Standard Template Library Programmer's Guide", <a href= - "http://www.sgi.com/tech/stl/">http://www.sgi.com/tech/stl</a></li> - - <li>[<a name="select_man" id="select_man">select_man</a>] - <a href= - "http://www.scit.wlv.ac.uk/cgi-bin/mansec?3C+select"><tt>select</tt> - man page.</a></li> - - <li>[<a name="sleator84amortized" id= - "sleator84amortized">sleator84amortized</a>] D. D. Sleator - and R. E. Tarjan, "Amortized Efficiency of List Update - Problems", ACM Symposium on Theory of Computing, 1984</li> - - <li>[<a name="sleator85self" id= - "sleator85self">sleator85self</a>] D. D. Sleator and R. E. - Tarjan, "Self-Adjusting Binary Search Trees", ACM Symposium - on Theory of Computing, 1985</li> - - <li>[<a name="stepanov94standard" id= - "stepanov94standard">stepanov94standard</a>] A. A. Stepanov - and M. Lee", "The Standard Template Library"</li> - - <li>[<a name="stroustrup97cpp" id= - "stroustrup97cpp">stroustrup97cpp</a>] Bjarne Stroustrup, - <i>The C++ Programming Langugage -3rd ed.</i>, Addison-Wesley - Publishing Company,Reading, MA, USA, 1997</li> - - <li>[<a name="vandevoorde2002cpptemplates" id= - "vandevoorde2002cpptemplates">vandevoorde2002cpptemplates</a>] - D. Vandevoorde, and N. M. Josuttis, "C++ Templates: The - Complete Guide", Addison-Wesley Publishing Company, - Addison-Wesley, 2002</li> - - <li>[<a name="wickland96thirty" id= - "wickland96thirty">wickland96thirty</a>] C. A. Wickland, - "Thirty Years Among the Dead", National Psychological - Institute, Los Angeles, 1996,<a href= - "http://myweb.wvnet.edu/~gsa00121/books/amongdead30.zip">http://myweb.wvnet.edu/gsa00121/books/amongdead30.zip</a></li> - </ol> - <hr /> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/resize_error.html b/libstdc++-v3/doc/html/ext/pb_ds/resize_error.html deleted file mode 100644 index 6aab88c15a7..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/resize_error.html +++ /dev/null @@ -1,50 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - -<title>resize_error Interface</title> -<meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> -</head> - -<body> -<div id="page"> -<h1><tt>resize_error</tt> Interface</h1> - -<p>A container cannot be resized.</p> - -<p>Exception thrown when a size policy cannot supply an - adequate size for an external resize.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/exception.hpp"><tt>exception.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Base Classes</a></h2> - - <table class="c1" width="100%" border="1" summary="Bases"> - <tr> - <td width="80%" align="left"><b>Class</b></td> - - <td width="20%" align="left"><b>Derivation Type</b></td> - </tr> - - <tr> - <td> - <pre> - <a href="exceptions.html"><span class= - "c2"><tt>resize_error</tt></span></a> - </pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - </table> - </div> - </body> - </html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/sample_probe_fn.html b/libstdc++-v3/doc/html/ext/pb_ds/sample_probe_fn.html deleted file mode 100644 index 51dccce5ca9..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/sample_probe_fn.html +++ /dev/null @@ -1,152 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>sample_probe_fn Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>sample_probe_fn</tt> Interface</h1> - - <p>A sample probe policy.</p> - - <p>This class serves to show the interface a probe functor - needs to support.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp"><tt>sample_probe_fn.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Public Types and - Constants</a></h2> - - <h3><a name="link2" id="link2">General definitions.</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="size_type55424436" id="size_type55424436">size_type</a> -</pre> - </td> - - <td> - <pre> -size_t, e.g. -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - </tr> - </table> - - <h2><a name="link3" id="link3">Public Methods</a></h2> - - <h3><a name="link4" id="link4">Constructors, destructor, and - related.</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> - sample_probe_fn - () -</pre> - </td> - - <td> - <p>Default constructor.</p> - - <p>Must be default constructable.</p> - </td> - </tr> - - <tr> - <td> - <pre> - sample_probe_fn - (<b>const</b> sample_probe_fn &other) -</pre> - </td> - - <td> - <p>Copy constructor.</p> - - <p>Must be copy constructable.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - swap - (sample_probe_fn &other) -</pre> - </td> - - <td> - <p>Swaps content.</p> - - <p>Must be swappable (if there is such a word).</p> - </td> - </tr> - </table> - - <h2><a name="link5" id="link5">Protected Methods</a></h2> - - <h3><a name="link6" id="link6">Offset methods.</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a> - <b>operator</b>() - (const_key_reference r_key, - <a href= -"#size_type55424436"><tt>size_type</tt></a> i) <b>const</b> -</pre> - </td> - - <td> - <p>Returns the <span class="c1"><tt>i</tt></span>-th - offset from the hash value of some key <span class= - "c1"><tt>r_key</tt></span>.</p> - - <p><tt>size_type</tt> is the size type on which the - functor operates.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/sample_range_hashing.html b/libstdc++-v3/doc/html/ext/pb_ds/sample_range_hashing.html deleted file mode 100644 index 85051873c64..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/sample_range_hashing.html +++ /dev/null @@ -1,172 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>sample_range_hashing Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>sample_range_hashing</tt> Interface</h1> - - <p>A sample range-hashing functor.</p> - - <p>This class serves to show the interface a range-hashing - functor needs to support.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp"><tt>sample_range_hashing.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Public Types and - Constants</a></h2> - - <h3><a name="link2" id="link2">General definitions.</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="size_type55424436" id="size_type55424436">size_type</a> -</pre> - </td> - - <td> - <pre> -size_t, e.g. -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - </tr> - </table> - - <h2><a name="link3" id="link3">Public Methods</a></h2> - - <h3><a name="link4" id="link4">Constructors, destructor, and - related.</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> - sample_range_hashing - () -</pre> - </td> - - <td> - <p>Default constructor.</p> - - <p>Must be default constructable.</p> - </td> - </tr> - - <tr> - <td> - <pre> - sample_range_hashing - (<b>const</b> sample_range_hashing &other) -</pre> - </td> - - <td> - <p>Copy constructor.</p> - - <p>Must be copy constructable.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - swap - (sample_range_hashing &other) -</pre> - </td> - - <td> - <p>Swaps content.</p> - - <p>Must be swappable (if there is such a word).</p> - </td> - </tr> - </table> - - <h2><a name="link5" id="link5">Protected Methods</a></h2> - - <h3><a name="link6" id="link6">Notification methods.</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - notify_resized - (<a href="#size_type55424436"><tt>size_type</tt></a> size) -</pre> - </td> - - <td> - <p>Notifies the policy object that the container's size - has changed to <span class="c1"><tt>size</tt></span>.</p> - </td> - </tr> - </table> - - <h3><a name="link7" id="link7">Operators.</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a> - <b>operator</b>() - (<a href= -"#size_type55424436"><tt>size_type</tt></a> hash) <b>const</b> -</pre> - </td> - - <td> - <p>Transforms the hash value <span class= - "c1"><tt>hash</tt></span> into a ranged-hash value.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/sample_ranged_hash_fn.html b/libstdc++-v3/doc/html/ext/pb_ds/sample_ranged_hash_fn.html deleted file mode 100644 index 834f4965043..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/sample_ranged_hash_fn.html +++ /dev/null @@ -1,171 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>sample_ranged_hash_fn Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>sample_ranged_hash_fn</tt> Interface</h1> - - <p>A sample ranged-hash functor.</p> - - <p>This class serves to show the interface a ranged-hash - functor needs to support.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp"><tt>sample_ranged_hash_fn.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Public Types and - Constants</a></h2> - - <h3><a name="link2" id="link2">General definitions.</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="size_type55424436" id="size_type55424436">size_type</a> -</pre> - </td> - - <td> - <pre> -size_t, e.g. -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - </tr> - </table> - - <h2><a name="link3" id="link3">Public Methods</a></h2> - - <h3><a name="link4" id="link4">Constructors, destructor, and - related.</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> - sample_ranged_hash_fn - () -</pre> - </td> - - <td> - <p>Default constructor.</p> - - <p>Must be default constructable.</p> - </td> - </tr> - - <tr> - <td> - <pre> - sample_ranged_hash_fn - (<b>const</b> sample_ranged_hash_fn &other) -</pre> - </td> - - <td> - <p>Copy constructor.</p> - - <p>Must be copy constructable.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - swap - (sample_ranged_hash_fn &other) -</pre> - </td> - - <td> - <p>Swaps content.</p> - - <p>Must be swappable (if there is such a word).</p> - </td> - </tr> - </table> - - <h2><a name="link5" id="link5">Protected Methods</a></h2> - - <h3><a name="link6" id="link6">Notification methods.</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - notify_resized - (<a href="#size_type55424436"><tt>size_type</tt></a> size) -</pre> - </td> - - <td> - <p>Notifies the policy object that the container's size - has changed to <span class="c1"><tt>size</tt></span>.</p> - </td> - </tr> - </table> - - <h3><a name="link7" id="link7">Operators.</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a> - <b>operator</b>() - (const_key_reference r_key) <b>const</b> -</pre> - </td> - - <td> - <p>Transforms <span class="c1"><tt>r_key</tt></span> into - a position within the table.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/sample_ranged_probe_fn.html b/libstdc++-v3/doc/html/ext/pb_ds/sample_ranged_probe_fn.html deleted file mode 100644 index ee1bc066423..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/sample_ranged_probe_fn.html +++ /dev/null @@ -1,178 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>sample_ranged_probe_fn Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>sample_ranged_probe_fn</tt> Interface</h1> - - <p>A sample ranged-probe functor.</p> - - <p>This class serves to show the interface a ranged-probe - functor needs to support.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp"><tt>sample_ranged_probe_fn.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Public Types and - Constants</a></h2> - - <h3><a name="link2" id="link2">General definitions.</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="size_type55424436" id="size_type55424436">size_type</a> -</pre> - </td> - - <td> - <pre> -size_t, e.g. -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - </tr> - </table> - - <h2><a name="link3" id="link3">Public Methods</a></h2> - - <h3><a name="link4" id="link4">Constructors, destructor, and - related.</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> - sample_ranged_probe_fn - () -</pre> - </td> - - <td> - <p>Default constructor.</p> - - <p>Must be default constructable.</p> - </td> - </tr> - - <tr> - <td> - <pre> - sample_ranged_probe_fn - (<b>const</b> sample_ranged_probe_fn &other) -</pre> - </td> - - <td> - <p>Copy constructor.</p> - - <p>Must be copy constructable.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - swap - (sample_ranged_probe_fn &other) -</pre> - </td> - - <td> - <p>Swaps content.</p> - - <p>Must be swappable (if there is such a word).</p> - </td> - </tr> - </table> - - <h2><a name="link5" id="link5">Protected Methods</a></h2> - - <h3><a name="link6" id="link6">Notification methods.</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - notify_resized - (<a href="#size_type55424436"><tt>size_type</tt></a> size) -</pre> - </td> - - <td> - <p>Notifies the policy object that the container's size - has changed to <span class="c1"><tt>size</tt></span>.</p> - </td> - </tr> - </table> - - <h3><a name="link7" id="link7">Operators.</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a> - <b>operator</b>() - (const_key_reference r_key, - size_t hash, - <a href= -"#size_type55424436"><tt>size_type</tt></a> i) <b>const</b> -</pre> - </td> - - <td> - <p>Transforms the <tt><b>const</b></tt> key reference - <span class="c1"><tt>r_key</tt></span> <span class= - "c1"><tt>into the </tt></span><span class= - "c1"><tt>i-th </tt></span>position within the table. This - method <span class="c1"><tt>i</tt></span>s called for - each collision within the probe sequence.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/sample_resize_policy.html b/libstdc++-v3/doc/html/ext/pb_ds/sample_resize_policy.html deleted file mode 100644 index 61ff09ba05e..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/sample_resize_policy.html +++ /dev/null @@ -1,413 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>sample_resize_policy Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>sample_resize_policy</tt> Interface</h1> - - <p>A sample resize policy.</p> - - <p>This class serves to show the interface a resize policy - needs to support.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp"><tt>sample_resize_policy.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Public Types and - Constants</a></h2> - - <h3><a name="link2" id="link2">General definitions.</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="size_type55424436" id="size_type55424436">size_type</a> -</pre> - </td> - - <td> - <pre> -size_t, e.g. -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - </tr> - </table> - - <h2><a name="link3" id="link3">Public Methods</a></h2> - - <h3><a name="link4" id="link4">Constructors, destructor, and - related.</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> - sample_resize_policy - () -</pre> - </td> - - <td> - <p>Default constructor.</p> - - <p>Must be default constructable.</p> - </td> - </tr> - - <tr> - <td> - <pre> - sample_range_hashing - (<b>const</b> sample_resize_policy &other) -</pre> - </td> - - <td> - <p>Copy constructor.</p> - - <p>Must be copy constructable.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - swap - (sample_resize_policy &other) -</pre> - </td> - - <td> - <p>Swaps content.</p> - - <p>Must be swappable (if there is such a word).</p> - </td> - </tr> - </table> - - <h2><a name="link5" id="link5">Protected Methods</a></h2> - - <h3><a name="link6" id="link6">Insert search - notifications.</a></h3> - - <p>Notifications called during an insert operation.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_insert_search_start - () -</pre> - </td> - - <td> - <p>Notifies a search started.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_insert_search_collision - () -</pre> - </td> - - <td> - <p>Notifies a search encountered a collision.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_insert_search_end - () -</pre> - </td> - - <td> - <p>Notifies a search ended.</p> - </td> - </tr> - </table> - - <h3><a name="link7" id="link7">Find search - notifications.</a></h3> - - <p>Notifications called during a find operation.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_find_search_start - () -</pre> - </td> - - <td> - <p>Notifies a search started.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_find_search_collision - () -</pre> - </td> - - <td> - <p>Notifies a search encountered a collision.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_find_search_end - () -</pre> - </td> - - <td> - <p>Notifies a search ended.</p> - </td> - </tr> - </table> - - <h3><a name="link8" id="link8">Erase search - notifications.</a></h3> - - <p>Notifications called during an insert operation.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_erase_search_start - () -</pre> - </td> - - <td> - <p>Notifies a search started.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_erase_search_collision - () -</pre> - </td> - - <td> - <p>Notifies a search encountered a collision.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_erase_search_end - () -</pre> - </td> - - <td> - <p>Notifies a search ended.</p> - </td> - </tr> - </table> - - <h3><a name="link9" id="link9">Content change - notifications.</a></h3> - - <p>Notifications called when the content of the table changes - in a way that can affect the resize policy.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_inserted - (<a href="#size_type55424436"><tt>size_type</tt></a> num_e) -</pre> - </td> - - <td> - <p>Notifies an element was inserted.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_erased - (<a href="#size_type55424436"><tt>size_type</tt></a> num_e) -</pre> - </td> - - <td> - <p>Notifies an element was erased.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - notify_cleared - () -</pre> - </td> - - <td> - <p>Notifies the table was cleared.</p> - </td> - </tr> - </table> - - <h3><a name="link10" id="link10">Size change - notifications.</a></h3> - - <p>Notifications called when the table changes size.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - notify_resized - (<a href="#size_type55424436"><tt>size_type</tt></a> new_size) -</pre> - </td> - - <td> - <p>Notifies the table was resized to <span class= - "c1"><tt>new_size</tt></span>.</p> - </td> - </tr> - </table> - - <h3><a name="link11" id="link11">Queries.</a></h3> - - <p>Called to query whether/how to resize.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>bool</b> - is_resize_needed - () <b>const</b> -</pre> - </td> - - <td> - <p>Queries whether a resize is needed.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a href="#size_type55424436"><tt>size_type</tt></a> - get_new_size - (<a href="#size_type55424436"><tt>size_type</tt></a> size, - <a href= -"#size_type55424436"><tt>size_type</tt></a> num_used_e) <b>const</b> -</pre> - </td> - - <td> - <p>Queries what the new <span class= - "c1"><tt>size</tt></span> should be.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/sample_resize_trigger.html b/libstdc++-v3/doc/html/ext/pb_ds/sample_resize_trigger.html deleted file mode 100644 index 5c8173c8ebe..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/sample_resize_trigger.html +++ /dev/null @@ -1,462 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>sample_resize_trigger Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>sample_resize_trigger</tt> Interface</h1> - - <p>A sample resize trigger policy.</p> - - <p>This class serves to show the interface a trigger policy - needs to support.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp"><tt> - sample_resize_trigger.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Public Types and - Constants</a></h2> - - <h3><a name="link2" id="link2">General definitions.</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="size_type55424436" id="size_type55424436">size_type</a> -</pre> - </td> - - <td> - <pre> -size_t, e.g. -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - </tr> - </table> - - <h2><a name="link3" id="link3">Public Methods</a></h2> - - <h3><a name="link4" id="link4">Constructors, destructor, and - related.</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> - sample_resize_trigger - () -</pre> - </td> - - <td> - <p>Default constructor.</p> - - <p>Must be default constructable.</p> - </td> - </tr> - - <tr> - <td> - <pre> - sample_range_hashing - (<b>const</b> sample_resize_trigger &other) -</pre> - </td> - - <td> - <p>Copy constructor.</p> - - <p>Must be copy constructable.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - swap - (sample_resize_trigger &other) -</pre> - </td> - - <td> - <p>Swaps content.</p> - - <p>Must be swappable (if there is such a word).</p> - </td> - </tr> - </table> - - <h2><a name="link5" id="link5">Protected Methods</a></h2> - - <h3><a name="link6" id="link6">Insert search - notifications.</a></h3> - - <p>Notifications called during an insert operation.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_insert_search_start - () -</pre> - </td> - - <td> - <p>Notifies a search started.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_insert_search_collision - () -</pre> - </td> - - <td> - <p>Notifies a search encountered a collision.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_insert_search_end - () -</pre> - </td> - - <td> - <p>Notifies a search ended.</p> - </td> - </tr> - </table> - - <h3><a name="link7" id="link7">Find search - notifications.</a></h3> - - <p>Notifications called during a find operation.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_find_search_start - () -</pre> - </td> - - <td> - <p>Notifies a search started.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_find_search_collision - () -</pre> - </td> - - <td> - <p>Notifies a search encountered a collision.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_find_search_end - () -</pre> - </td> - - <td> - <p>Notifies a search ended.</p> - </td> - </tr> - </table> - - <h3><a name="link8" id="link8">Erase search - notifications.</a></h3> - - <p>Notifications called during an insert operation.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_erase_search_start - () -</pre> - </td> - - <td> - <p>Notifies a search started.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_erase_search_collision - () -</pre> - </td> - - <td> - <p>Notifies a search encountered a collision.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_erase_search_end - () -</pre> - </td> - - <td> - <p>Notifies a search ended.</p> - </td> - </tr> - </table> - - <h3><a name="link9" id="link9">Content change - notifications.</a></h3> - - <p>Notifications called when the content of the table changes - in a way that can affect the resize policy.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_inserted - (<a href="#size_type55424436"><tt>size_type</tt></a> num_entries) -</pre> - </td> - - <td> - <p>Notifies an element was inserted. the total number of - entries in the table is <span class= - "c1"><tt>num_entries</tt></span>.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - notify_erased - (<a href="#size_type55424436"><tt>size_type</tt></a> num_entries) -</pre> - </td> - - <td> - <p>Notifies an element was erased.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - notify_cleared - () -</pre> - </td> - - <td> - <p>Notifies the table was cleared.</p> - </td> - </tr> - </table> - - <h3><a name="link10" id="link10">Size change - notifications.</a></h3> - - <p>Notifications called when the table changes size.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - notify_resized - (<a href="#size_type55424436"><tt>size_type</tt></a> new_size) -</pre> - </td> - - <td> - <p>Notifies the table was resized as a result of this - object's signifying that a resize is needed.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - notify_externally_resized - (<a href="#size_type55424436"><tt>size_type</tt></a> new_size) -</pre> - </td> - - <td> - <p>Notifies the table was resized externally.</p> - </td> - </tr> - </table> - - <h3><a name="link11" id="link11">Queries.</a></h3> - - <p>Called to query whether/how to resize.</p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>bool</b> - is_resize_needed - () <b>const</b> -</pre> - </td> - - <td> - <p>Queries whether a resize is needed.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>bool</b> - is_grow_needed - (<a href="#size_type55424436"><tt>size_type</tt></a> size, - <a href= -"#size_type55424436"><tt>size_type</tt></a> num_entries) <b>const</b> -</pre> - </td> - - <td> - <p>Queries whether a grow is needed.</p> - - <p>This method is called only if this object indicated - resize is needed. The actual <span class= - "c1"><tt>size</tt></span> of the table is <span class= - "c1"><tt>size</tt></span>, and the number of entries in - it is <span class="c1"><tt>num_entries</tt></span>.</p> - </td> - </tr> - </table> - - <h2><a name="link12" id="link12">Private Methods</a></h2> - - <h3><a name="link13" id="link13">Overrides.</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> <b>void</b> - do_resize - (<a href="#size_type55424436"><tt>size_type</tt></a> new_size) -</pre> - </td> - - <td> - <p>Resizes to <span class= - "c1"><tt>new_size</tt></span>.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/sample_size_policy.html b/libstdc++-v3/doc/html/ext/pb_ds/sample_size_policy.html deleted file mode 100644 index ebb14d30b5d..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/sample_size_policy.html +++ /dev/null @@ -1,163 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>sample_size_policy Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>sample_size_policy</tt> Interface</h1> - - <p>A sample size policy.</p> - - <p>This class serves to show the interface a size policy needs - to support.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp"><tt>sample_size_policy.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Public Types and - Constants</a></h2> - - <h3><a name="link2" id="link2">General definitions.</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="size_type55424436" id="size_type55424436">size_type</a> -</pre> - </td> - - <td> - <pre> -size_t, e.g. -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - </tr> - </table> - - <h2><a name="link3" id="link3">Public Methods</a></h2> - - <h3><a name="link4" id="link4">Constructors, destructor, and - related.</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> - sample_size_policy - () -</pre> - </td> - - <td> - <p>Default constructor.</p> - - <p>Must be default constructable.</p> - </td> - </tr> - - <tr> - <td> - <pre> - sample_range_hashing - (<b>const</b> sample_size_policy &other) -</pre> - </td> - - <td> - <p>Copy constructor.</p> - - <p>Must be copy constructable.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - swap - (sample_size_policy &other) -</pre> - </td> - - <td> - <p>Swaps content.</p> - - <p>Must be swappable (if there is such a word).</p> - </td> - </tr> - </table> - - <h2><a name="link5" id="link5">Protected Methods</a></h2> - - <h3><a name="link6" id="link6">Size methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a> - get_nearest_larger_size - (<a href= -"#size_type55424436"><tt>size_type</tt></a> size) <b>const</b> -</pre> - </td> - - <td> - <p>Given a size <span class="c1"><tt>size</tt></span>, - returns a size that is larger.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a> - get_nearest_smaller_size - (<a href= -"#size_type55424436"><tt>size_type</tt></a> size) <b>const</b> -</pre> - </td> - - <td> - <p>Given a size <span class="c1"><tt>size</tt></span>, - returns a size that is smaller.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/sample_tree_node_update.html b/libstdc++-v3/doc/html/ext/pb_ds/sample_tree_node_update.html deleted file mode 100644 index aefd6705674..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/sample_tree_node_update.html +++ /dev/null @@ -1,193 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>sample_tree_node_update Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>sample_tree_node_update</tt> Interface</h1> - - <p>A sample node updater.</p> - - <p>This class serves to show the interface a node update - functor needs to support.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp"><tt> - sample_tree_node_update.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Template Parameters</a></h2> - - <table class="c1" width="100%" border="1" summary= - "Template Parameters"> - <tr> - <td width="20%" align="left"><b>Parameter</b></td> - - <td width="50%" align="left"><b>Description</b></td> - - <td width="30%" align="left"><b>Default Value</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="Const_Node_Iterator1933878761" id= -"Const_Node_Iterator1933878761"><b>class</b> Const_Node_Iterator</a> -</pre> - </td> - - <td> - <p>Const node iterator type.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Node_Iterator4206909839" id= -"Node_Iterator4206909839"><b>class</b> Node_Iterator</a> -</pre> - </td> - - <td> - <p>Node iterator type.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Cmp_Fn294335" id="Cmp_Fn294335"><b>class</b> Cmp_Fn</a> -</pre> - </td> - - <td> - <p>Comparison functor.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Allocator35940069" id= -"Allocator35940069"><b>class</b> Allocator</a> -</pre> - </td> - - <td> - <p>Allocator type.</p> - </td> - - <td>-</td> - </tr> - </table> - - <h2><a name="link2" id="link2">Public Types and - Constants</a></h2> - - <h3><a name="link3" id="link3">Metadata definitions.</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="metadata_type2849297114" id= -"metadata_type2849297114">metadata_type</a> -</pre> - </td> - - <td> - <pre> -size_t -</pre> - </td> - - <td> - <p>Metadata type.</p> - - <p>This can be any type; size_t is merely an example.</p> - </td> - </tr> - </table> - - <h2><a name="link4" id="link4">Protected Methods</a></h2> - - <h3><a name="link5" id="link5">Conclassors, declassor, and - related.</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> - sample_tree_node_update - () -</pre> - </td> - - <td> - <p>Default constructor.</p> - - <p>Must be default constructable.</p> - </td> - </tr> - </table> - - <h3><a name="link6" id="link6">Operators.</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - <b>operator</b>() - (node_iterator node_it, - const_node_iterator end_nd_it) <b>const</b> -</pre> - </td> - - <td> - <p>Updates the rank of a node through a <span class= - "c1"><tt>node_iterator</tt></span> <span class= - "c1"><tt>node_it</tt></span>; <span class= - "c1"><tt>end_nd_it</tt></span> is the end node - iterator.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/sample_trie_access_traits.html b/libstdc++-v3/doc/html/ext/pb_ds/sample_trie_access_traits.html deleted file mode 100644 index a46c91b1d15..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/sample_trie_access_traits.html +++ /dev/null @@ -1,231 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>sample_trie_e_access_traits Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>sample_trie_e_access_traits</tt> Interface</h1> - - <p>A sample trie element-access traits.</p> - - <p>This class serves to show the interface an element- access - traits class needs to support.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_e_access_traits.hpp"> - <tt>sample_trie_e_access_traits.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Public Types and - Constants</a></h2> - - <h3><a name="link2" id="link2">General definitions.</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="size_type55424436" id="size_type55424436">size_type</a> -</pre> - </td> - - <td> - <pre> -size_t, e.g. -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="key_type10393186" id="key_type10393186">key_type</a> -</pre> - </td> - - <td> - <pre> -std::string, e.g. -</pre> - </td> - - <td> - <p>Key type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="const_key_reference3185471705" id= -"const_key_reference3185471705">const_key_reference</a> -</pre> - </td> - - <td> - <pre> -const string &, e.g. -</pre> - </td> - - <td> - <p>Const key reference type.</p> - </td> - </tr> - </table> - - <h3><a name="link3" id="link3">Element definitions.</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="const_iterator98626788" id= -"const_iterator98626788">const_iterator</a> -</pre> - </td> - - <td> - <pre> -string::const_iterator, e.g. -</pre> - </td> - - <td> - <p>Element <tt><b>const</b></tt> iterator type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="e_type393186" id="e_type393186">e_type</a> -</pre> - </td> - - <td> - <pre> -char, e.g. -</pre> - </td> - - <td> - <p>Element type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="max_size10483336" id="max_size10483336">max_size</a> -</pre> - </td> - - <td> - <pre> -4, e.g. -</pre> - </td> - - <td> - <p>Number of distinct elements.</p> - </td> - </tr> - </table> - - <h2><a name="link4" id="link4">Public Methods</a></h2> - - <h3><a name="link5" id="link5">Access methods.</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>static</b> <a href= -"#const_iterator98626788"><tt>const_iterator</tt></a> - begin - (<a href= -"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key) -</pre> - </td> - - <td> - <p>Returns a <a href= - "#const_iterator98626788"><tt>const_iterator</tt></a> to - the first element of <span class= - "c1"><tt>r_key</tt></span>.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>static</b> <a href= -"#const_iterator98626788"><tt>const_iterator</tt></a> - end - (<a href= -"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key) -</pre> - </td> - - <td> - <p>Returns a <a href= - "#const_iterator98626788"><tt>const_iterator</tt></a> to - the after-last element of <span class= - "c1"><tt>r_key</tt></span>.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>static</b> <a href= -"#size_type55424436"><tt>size_type</tt></a> - e_pos - (<a href="#e_type393186"><tt>e_type</tt></a> e) -</pre> - </td> - - <td> - <p>Maps an <span class="c1"><tt>element</tt></span> to a - position.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/sample_trie_node_update.html b/libstdc++-v3/doc/html/ext/pb_ds/sample_trie_node_update.html deleted file mode 100644 index 61b6b407f61..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/sample_trie_node_update.html +++ /dev/null @@ -1,194 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>sample_trie_node_update Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>sample_trie_node_update</tt> Interface</h1> - - <p>A sample node updater.</p> - - <p>This class serves to show the interface a node update - functor needs to support.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp"><tt> - sample_trie_node_update.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Template Parameters</a></h2> - - <table class="c1" width="100%" border="1" summary= - "Template Parameters"> - <tr> - <td width="20%" align="left"><b>Parameter</b></td> - - <td width="50%" align="left"><b>Description</b></td> - - <td width="30%" align="left"><b>Default Value</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="Const_Node_Iterator1933878761" id= -"Const_Node_Iterator1933878761"><b>class</b> Const_Node_Iterator</a> -</pre> - </td> - - <td> - <p>Const node iterator type.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Node_Iterator4206909839" id= -"Node_Iterator4206909839"><b>class</b> Node_Iterator</a> -</pre> - </td> - - <td> - <p>Node iterator type.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="E_Access_Traits686553840" id= -"E_Access_Traits686553840"><b>class</b> E_Access_Traits</a> -</pre> - </td> - - <td> - <p>Comparison functor.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Allocator35940069" id= -"Allocator35940069"><b>class</b> Allocator</a> -</pre> - </td> - - <td> - <p>Allocator type.</p> - </td> - - <td>-</td> - </tr> - </table> - - <h2><a name="link2" id="link2">Public Types and - Constants</a></h2> - - <h3><a name="link3" id="link3">Metadata definitions.</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="metadata_type2849297114" id= -"metadata_type2849297114">metadata_type</a> -</pre> - </td> - - <td> - <pre> -size_t -</pre> - </td> - - <td> - <p>Metadata type.</p> - - <p>This can be any type; size_t is merely an example.</p> - </td> - </tr> - </table> - - <h2><a name="link4" id="link4">Protected Methods</a></h2> - - <h3><a name="link5" id="link5">Conclassors, declassor, and - related.</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> - sample_trie_node_update - () -</pre> - </td> - - <td> - <p>Default constructor.</p> - - <p>Must be default constructable.</p> - </td> - </tr> - </table> - - <h3><a name="link6" id="link6">Operators.</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - <b>operator</b>() - (node_iterator node_it, - const_node_iterator end_nd_it) <b>const</b> -</pre> - </td> - - <td> - <p>Updates the rank of a node through a <span class= - "c1"><tt>node_iterator</tt></span> <span class= - "c1"><tt>node_it</tt></span>; <span class= - "c1"><tt>end_nd_it</tt></span> is the end node - iterator.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/sample_update_policy.html b/libstdc++-v3/doc/html/ext/pb_ds/sample_update_policy.html deleted file mode 100644 index 8a286c74c71..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/sample_update_policy.html +++ /dev/null @@ -1,178 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>sample_update_policy Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>sample_update_policy</tt> Interface</h1> - - <p>A sample list-update policy.</p> - - <p>This class serves to show the interface a list update - functor needs to support.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp"><tt>sample_update_policy.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Public Methods</a></h2> - - <h3><a name="link2" id="link2">Constructors, destructor, and - related.</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> - sample_update_policy - () -</pre> - </td> - - <td> - <p>Default constructor.</p> - - <p>Must be default constructable.</p> - </td> - </tr> - - <tr> - <td> - <pre> - sample_update_policy - (<b>const</b> sample_update_policy &other) -</pre> - </td> - - <td> - <p>Copy constructor.</p> - - <p>Must be copy constructable.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - swap - (sample_update_policy &other) -</pre> - </td> - - <td> - <p>Swaps content.</p> - - <p>Must be swappable (if there is such a word).</p> - </td> - </tr> - </table> - - <h2><a name="link3" id="link3">Protected Types and - Constants</a></h2> - - <h3><a name="link4" id="link4">Metadata definitions.</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="metadata_type2849297114" id= -"metadata_type2849297114">metadata_type</a> -</pre> - </td> - - <td> - <pre> -Some metadata type. -</pre> - </td> - - <td> - <p>Metadata on which this functor operates.</p> - - <p>The <tt><b>class</b></tt> must declare the metadata - type on which it operates; the list-update based - containers will append to each node an object of this - type.</p> - </td> - </tr> - </table> - - <h2><a name="link5" id="link5">Protected Methods</a></h2> - - <h3><a name="link6" id="link6">Metadata operations.</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="#metadata_type2849297114"><tt>metadata_type</tt></a> - <b>operator</b>() - () <b>const</b> -</pre> - </td> - - <td> - <p>Creates a metadata object.</p> - - <p>A list-update based container object will call this - method to create a metadata type when a node is - created.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>bool</b> - <b>operator</b>() - (metadata_reference r_data) <b>const</b> -</pre> - </td> - - <td> - <p>Decides whether a metadata object should be moved to - the front of the list. A list-update based containers - object will call this method to decide whether to move a - node to the front of the list. The method should return - <tt><b>true</b></tt> if the node should be moved to the - front of the list.</p> - - <p><tt>metadata_reference</tt> is a reference to a - <a href= - "#metadata_type2849297114"><tt>metadata_type</tt></a>.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/splay_tree_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/splay_tree_tag.html deleted file mode 100644 index 3e6a64b1cae..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/splay_tree_tag.html +++ /dev/null @@ -1,47 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>splay_tree_tag Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>splay_tree_tag</tt> Interface</h1> - - <p>Splay tree data structure tag.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Base Classes</a></h2> - - <table class="c1" width="100%" border="1" summary="Bases"> - <tr> - <td width="80%" align="left"><b>Class</b></td> - - <td width="20%" align="left"><b>Derivation Type</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="tree_tag.html"><span class= -"c2"><tt>tree_tag</tt></span></a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tests.html b/libstdc++-v3/doc/html/ext/pb_ds/tests.html deleted file mode 100644 index ab5d54bb4ff..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/tests.html +++ /dev/null @@ -1,24 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>Tests</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1>Tests</h1> - - <p><a href="assoc_tests.html">Associative-Container Tests</a> - describes tests for associative containers; <a href= - "pq_tests.html">Priority-Queue Tests</a> describes tests for - priority queues.</p> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_hash_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_hash_gcc.png Binary files differdeleted file mode 100644 index 59247ec6ad9..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_hash_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_hash_local.png b/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_hash_local.png Binary files differdeleted file mode 100644 index 5364778241d..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_hash_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_hash_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_hash_msvc.png Binary files differdeleted file mode 100644 index 227164568f5..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_hash_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_tree_like_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_tree_like_gcc.png Binary files differdeleted file mode 100644 index 8b6c4f0f058..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_tree_like_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_tree_like_local.png b/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_tree_like_local.png Binary files differdeleted file mode 100644 index 8ec5cfbce7a..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_tree_like_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_tree_like_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_tree_like_msvc.png Binary files differdeleted file mode 100644 index dc82a4e7e82..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/text_find_timing_test_tree_like_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/thin_heap_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/thin_heap_tag.html deleted file mode 100644 index c4418966463..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/thin_heap_tag.html +++ /dev/null @@ -1,47 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>thin_heap_tag Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>thin_heap_tag</tt> Interface</h1> - - <p>Thin heap data structure tag.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Base Classes</a></h2> - - <table class="c1" width="100%" border="1" summary="Bases"> - <tr> - <td width="80%" align="left"><b>Class</b></td> - - <td width="20%" align="left"><b>Derivation Type</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="priority_queue_tag.html"><span class= -"c2"><tt>priority_queue_tag</tt></span></a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree.html b/libstdc++-v3/doc/html/ext/pb_ds/tree.html deleted file mode 100644 index 3202a6e9f95..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/tree.html +++ /dev/null @@ -1,516 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>tree Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>tree</tt> Interface</h1> - - <p>A concrete basic tree-based associative container.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/assoc_container.hpp"><tt>assoc_container.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Template Parameters</a></h2> - - <table class="c1" width="100%" border="1" summary= - "Template Parameters"> - <tr> - <td width="20%" align="left"><b>Parameter</b></td> - - <td width="50%" align="left"><b>Description</b></td> - - <td width="30%" align="left"><b>Default Value</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="Key2501" id="Key2501"><b>typename</b> Key</a> -</pre> - </td> - - <td> - <p>Key type.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Mapped318655" id="Mapped318655"><b>typename</b> Mapped</a> -</pre> - </td> - - <td> - <p>Mapped type.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Cmp_Fn294335" id="Cmp_Fn294335"><b>class</b> Cmp_Fn </a> -</pre> - </td> - - <td> - <p>Comparison functor.</p> - </td> - - <td> - <pre> -std::less<<a href="#Key2501"><tt>Key</tt></a>> -</pre> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="Tag278938" id="Tag278938"><b>class</b> Tag </a> -</pre> - </td> - - <td> - <p>Mapped-structure tag.</p> - </td> - - <td><a href="rb_tree_tag.html"><span class= - "c2"><tt>rb_tree_tag</tt></span></a></td> - </tr> - - <tr> - <td> - <pre> -<a name="Node_Update841554648" id= -"Node_Update841554648"><b>template</b>< - <b>typename</b> Const_Node_Iterator, - <b>typename</b> Node_Iterator, - <b>class</b> Cmp_Fn_, - <b>typename</b> Allocator_> -<b>class</b> Node_Update </a> -</pre> - </td> - - <td> - <p>Node updater type.</p> - - <p><a href= - "tree_based_containers.html#invariants">Design::Tree-Based - Containers::Node Invariants</a> explains this - concept.</p> - </td> - - <td><a href="null_tree_node_update.html"><span class= - "c2"><tt>null_tree_node_update</tt></span></a></td> - </tr> - - <tr> - <td> - <pre> -<a name="Allocator35940069" id= -"Allocator35940069"><b>class</b> Allocator </a> -</pre> - </td> - - <td> - <p>Allocator type.</p> - </td> - - <td> - <pre> -std::allocator<<b>char</b>> -</pre> - </td> - </tr> - </table> - - <h2><a name="link2" id="link2">Base Classes</a></h2> - - <table class="c1" width="100%" border="1" summary="Bases"> - <tr> - <td width="80%" align="left"><b>Class</b></td> - - <td width="20%" align="left"><b>Derivation Type</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="basic_tree.html"><span class= -"c2"><tt>basic_tree</tt></span></a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - </table> - - <h2><a name="link3" id="link3">Public Types and - Constants</a></h2> - - <h3><a name="link4" id="link4">Policy Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="cmp_fn394495" id="cmp_fn394495">cmp_fn</a> -</pre> - </td> - - <td> - <pre> -<a href="#Cmp_Fn294335"><tt>Cmp_Fn</tt></a> -</pre> - </td> - - <td> - <p>Comparison functor type.</p> - </td> - </tr> - </table> - - <h3><a name="link5" id="link5">Iterator Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="const_node_iterator4205924553" id= -"const_node_iterator4205924553">const_node_iterator</a> -</pre> - </td> - - <td> - <pre> -<a href= -"tree_const_node_iterator.html"><span class= -"c2"><tt>const_node_iterator</tt></span></a> -</pre> - </td> - - <td> - <p>Const node iterator.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="node_iterator3431975247" id= -"node_iterator3431975247">node_iterator</a> -</pre> - </td> - - <td> - <pre> -<a href="tree_node_iterator.html"><span class= -"c2"><tt>node_iterator</tt></span></a> -</pre> - </td> - - <td> - <p>Node iterator.</p> - </td> - </tr> - </table> - - <h2><a name="link6" id="link6">Public Methods</a></h2> - - <h3><a name="link7" id="link7">Constructors, Destructor, and - Related</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> - tree - () -</pre> - </td> - - <td> - <p>Default constructor.</p> - </td> - </tr> - - <tr> - <td> - <pre> - tree - (<b>const</b> <a href= -"#cmp_fn394495"><tt>cmp_fn</tt></a> &r_cmp_fn) -</pre> - </td> - - <td> - <p>Constructor taking some policy objects. <span class= - "c1"><tt>r_cmp_fn</tt></span> will be copied by the - <a href="#Cmp_Fn294335"><tt>Cmp_Fn</tt></a> object of the - container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>template</b>< - <b>class</b> It> - tree - (It first_it, - It last_it) -</pre> - </td> - - <td> - <p>Constructor taking iterators to a range of - value_types. The value_types between <span class= - "c1"><tt>first_it</tt></span> and <span class= - "c1"><tt>last_it</tt></span> will be inserted into the - container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>template</b>< - <b>class</b> It> - tree - (It first_it, - It last_it, - <b>const</b> <a href= -"#cmp_fn394495"><tt>cmp_fn</tt></a> &r_cmp_fn) -</pre> - </td> - - <td> - <p>Constructor taking iterators to a range of value_types - and some policy objects The value_types between - <span class="c1"><tt>first_it</tt></span> and - <span class="c1"><tt>last_it</tt></span> will be inserted - into the container object. <span class= - "c1"><tt>r_cmp_fn</tt></span> will be copied by the - <a href="#cmp_fn394495"><tt>cmp_fn</tt></a> object of the - container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> - tree - (<b>const</b> <span class= -"c2"><tt>tree</tt></span> &other) -</pre> - </td> - - <td> - <p>Copy constructor.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> - ~tree - () -</pre> - </td> - - <td> - <p>Destructor.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<span class="c2"><tt>tree</tt></span> & - <b>operator</b>= - (<b>const</b> <span class= -"c2"><tt>tree</tt></span> &other) -</pre> - </td> - - <td> - <p>Assignment operator.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - swap - (<span class= -"c2"><tt>tree</tt></span> &other) -</pre> - </td> - - <td> - <p>Swaps content.</p> - </td> - </tr> - </table> - - <h3><a name="link8" id="link8">Policy Access Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="#cmp_fn394495"><tt>cmp_fn</tt></a> & - get_cmp_fn - () -</pre> - </td> - - <td> - <p>Access to the <a href= - "#cmp_fn394495"><tt>cmp_fn</tt></a> object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>const</b> <a href="#cmp_fn394495"><tt>cmp_fn</tt></a> & - get_cmp_fn - () <b>const</b> -</pre> - </td> - - <td> - <p>Const access to the <a href= - "#cmp_fn394495"><tt>cmp_fn</tt></a> object.</p> - </td> - </tr> - </table> - - <h3><a name="link9" id="link9">Node-Iteration Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="#node_iterator3431975247"><tt>node_iterator</tt></a> - node_begin - () -</pre> - </td> - - <td> - <p>Returns a <a href= - "#node_iterator3431975247"><tt>node_iterator</tt></a> - corresponding to the node at the root of the tree.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a href= -"#const_node_iterator4205924553"><tt>const_node_iterator</tt></a> - node_begin - () <b>const</b> -</pre> - </td> - - <td> - <p>Returns a <a href= - "#const_node_iterator4205924553"><tt>const_node_iterator</tt></a> - corresponding to the node at the root of the tree.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a href="#node_iterator3431975247"><tt>node_iterator</tt></a> - node_end - () -</pre> - </td> - - <td> - <p>Returns a <a href= - "#node_iterator3431975247"><tt>node_iterator</tt></a> - corresponding to a node just after a leaf of the - tree.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a href= -"#const_node_iterator4205924553"><tt>const_node_iterator</tt></a> - node_end - () <b>const</b> -</pre> - </td> - - <td> - <p>Returns a <a href= - "#const_node_iterator4205924553"><tt>const_node_iterator</tt></a> - corresponding to a node just after a leaf of the - tree.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_based_containers.html b/libstdc++-v3/doc/html/ext/pb_ds/tree_based_containers.html deleted file mode 100644 index 63c7c748232..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/tree_based_containers.html +++ /dev/null @@ -1,358 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>Tree-Based Containers</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1>Tree Design</h1> - - <h2><a name="overview" id="overview">Overview</a></h2> - - <p>The tree-based container has the following declaration:</p> - <pre> -<b>template</b>< - <b>typename</b> Key, - <b>typename</b> Mapped, - <b>typename</b> Cmp_Fn = std::less<Key>, - <b>typename</b> Tag = <a href="rb_tree_tag.html">rb_tree_tag</a>, - <b>template</b>< - <b>typename</b> Const_Node_Iterator, - <b>typename</b> Node_Iterator, - <b>typename</b> Cmp_Fn_, - <b>typename</b> Allocator_> - <b>class</b> Node_Update = <a href= -"null_tree_node_update.html">null_tree_node_update</a>, - <b>typename</b> Allocator = std::allocator<<b>char</b>> > -<b>class</b> <a href= -"tree.html">tree</a>; -</pre> - - <p>The parameters have the following meaning:</p> - - <ol> - <li><tt>Key</tt> is the key type.</li> - - <li><tt>Mapped</tt> is the mapped-policy.</li> - - <li><tt>Cmp_Fn</tt> is a key comparison functor</li> - - <li><tt>Tag</tt> specifies which underlying data structure - to use.</li> - - <li><tt>Node_Update</tt> is a policy for updating node - invariants. This is described in <a href="#invariants">Node - Invariants</a>.</li> - - <li><tt>Allocator</tt> is an allocator - type.</li> - </ol> - - <p>The <tt>Tag</tt> parameter specifies which underlying - data structure to use. Instantiating it by <a href= - "rb_tree_tag.html"><tt>rb_tree_tag</tt></a>, <a href= - "splay_tree_tag.html"><tt>splay_tree_tag</tt></a>, or - <a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a>, - specifies an underlying red-black tree, splay tree, or - ordered-vector tree, respectively; any other tag is illegal. - Note that containers based on the former two contain more types - and methods than the latter (<i>e.g.</i>, - <tt>reverse_iterator</tt> and <tt>rbegin</tt>), and different - exception and invalidation guarantees.</p> - - <h2><a name="invariants" id="invariants">Node - Invariants</a></h2> - - <p>Consider the two trees in Figures <a href= - "#node_invariants">Some node invariants</a> A and B. The first - is a tree of floats; the second is a tree of pairs, each - signifying a geometric line interval. Each element in a tree is refered to as a node of the tree. Of course, each of - these trees can support the usual queries: the first can easily - search for <tt>0.4</tt>; the second can easily search for - <tt>std::make_pair(10, 41)</tt>.</p> - - <p>Each of these trees can efficiently support other queries. - The first can efficiently determine that the 2rd key in the - tree is <tt>0.3</tt>; the second can efficiently determine - whether any of its intervals overlaps - <tt>std::make_pair(29,42)</tt> (useful in geometric - applications or distributed file systems with leases, for - example). (See <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/tree_order_statistics.cc"><tt>tree_order_statistics.cc</tt></a> - and <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/tree_intervals.cc"><tt>tree_intervals.cc</tt></a> - for examples.) It should be noted that an <tt>std::set</tt> can - only solve these types of problems with linear complexity.</p> - - <p>In order to do so, each tree stores some <i>metadata</i> in - each node, and maintains node invariants <a href= - "references.html#clrs2001">clrs2001</a>]. The first stores in - each node the size of the sub-tree rooted at the node; the - second stores at each node the maximal endpoint of the - intervals at the sub-tree rooted at the node.</p> - - <h6 class="c1"><a name="node_invariants" id= - "node_invariants"><img src="node_invariants.png" alt= - "no image" /></a></h6> - - <h6 class="c1">Some node invariants.</h6> - - <p>Supporting such trees is difficult for a number of - reasons:</p> - - <ol> - <li>There must be a way to specify what a node's metadata - should be (if any).</li> - - <li>Various operations can invalidate node invariants. - <i>E.g.</i>, Figure <a href= - "#node_invariant_invalidations">Invalidation of node - invariants</a> shows how a right rotation, performed on A, - results in B, with nodes <i>x</i> and <i>y</i> having - corrupted invariants (the grayed nodes in C); Figure <a href= - "#node_invariant_invalidations">Invalidation of node - invariants</a> shows how an insert, performed on D, results - in E, with nodes <i>x</i> and <i>y</i> having corrupted - invariants (the grayed nodes in F). It is not feasible to - know outside the tree the effect of an operation on the nodes - of the tree.</li> - - <li>The search paths of standard associative containers are - defined by comparisons between keys, and not through - metadata.</li> - - <li>It is not feasible to know in advance which methods trees - can support. Besides the usual <tt>find</tt> method, the - first tree can support a <tt>find_by_order</tt> method, while - the second can support an <tt>overlaps</tt> method.</li> - </ol> - - <h6 class="c1"><a name="node_invariant_invalidations" id= - "node_invariant_invalidations"><img src= - "node_invariant_invalidations.png" alt="no image" /></a></h6> - - <h6 class="c1">Invalidation of node invariants.</h6> - - <p>These problems are solved by a combination of two means: - node iterators, and template-template node updater - parameters.</p> - - <h3><a name="node_it" id="node_it">Node Iterators</a></h3> - - <p>Each tree-based container defines two additional iterator - types, <a href= - "tree_const_node_iterator.html"><tt>const_node_iterator</tt></a> - and <a href= - "tree_node_iterator.html"><tt>node_iterator</tt></a>. - These iterators allow descending from a node to one of its - children. Node iterator allow search paths different than those - determined by the comparison functor. <a href= - "tree.html">tree</a> - supports the methods:</p> - <pre> - <a href="tree_const_node_iterator.html"><tt>const_node_iterator</tt></a> - node_begin() <b>const</b>; - - <a href="tree_node_iterator.html"><tt>node_iterator</tt></a> - node_begin(); - - <a href="tree_const_node_iterator.html"><tt>const_node_iterator</tt></a> - node_end() <b>const</b>; - - <a href="tree_node_iterator.html"><tt>node_iterator</tt></a> - node_end(); -</pre> - - <p>The first pairs return node iterators corresponding to the - root node of the tree; the latter pair returns node iterators - corresponding to a just-after-leaf node.</p> - - <h3><a name="node_up" id="node_up">Node Updater - (Template-Template) Parameters</a></h3> - - <p>The tree-based containers are parametrized by a - <tt>Node_Update</tt> template-template parameter. A tree-based - container instantiates <tt>Node_Update</tt> to some - <tt>node_update</tt> class, and publicly - subclasses <tt>node_update</tt>. Figure - <a href="#tree_node_update_cd">A tree and its update - policy</a> shows this scheme, as well as some predefined - policies (which are explained below).</p> - - <h6 class="c1"><a name="tree_node_update_cd" id= - "tree_node_update_cd"><img src= - "tree_node_update_policy_cd.png" alt="no image" /></a></h6> - - <h6 class="c1">A tree and its update policy.</h6> - - <p><tt>node_update</tt> (an instantiation of - <tt>Node_Update</tt>) must define <tt>metadata_type</tt> as - the type of metadata it requires. For order statistics, - <i>e.g.</i>, <tt>metadata_type</tt> might be <tt>size_t</tt>. - The tree defines within each node a <tt>metadata_type</tt> - object.</p> - - <p><tt>node_update</tt> must also define the following method - for restoring node invariants:</p> - <pre> - void - operator()(<a href= -"tree_node_iterator.html"><tt>node_iterator</tt></a> nd_it, <a href= -"tree_const_node_iterator.html"><tt>const_node_iterator</tt></a> end_nd_it) -</pre> - - <p>In this method, <tt>nd_it</tt> is a <a href= - "tree_node_iterator.html"><tt>node_iterator</tt></a> - corresponding to a node whose A) all descendants have valid - invariants, and B) its own invariants might be violated; - <tt>end_nd_it</tt> is a <a href= - "tree_const_node_iterator.html"><tt>const_node_iterator</tt></a> - corresponding to a just-after-leaf node. This method should - correct the node invariants of the node pointed to by - <tt>nd_it</tt>. For example, say node <i>x</i> in Figure - <a href="#restoring_node_invariants">Restoring node - invariants</a>-A has an invalid invariant, but its' children, - <i>y</i> and <i>z</i> have valid invariants. After the - invocation, all three nodes should have valid invariants, as in - Figure <a href="#restoring_node_invariants">Restoring node - invariants</a>-B.</p> - - <h6 class="c1"><a name="restoring_node_invariants" id= - "restoring_node_invariants"><img src= - "restoring_node_invariants.png" alt="no image" /></a></h6> - - <h6 class="c1">Invalidation of node invariants.</h6> - - <p>When a tree operation might invalidate some node invariant, - it invokes this method in its <tt>node_update</tt> base to - restore the invariant. For example, Figure <a href= - "#update_seq_diagram">Insert update sequence diagram</a> shows - an <tt>insert</tt> operation (point A); the tree performs some - operations, and calls the update functor three times (points B, - C, and D). (It is well known that any <tt>insert</tt>, - <tt>erase</tt>, <tt>split</tt> or <tt>join</tt>, can restore - all node invariants by a small number of node invariant updates - [<a href="references.html#clrs2001">clrs2001</a>].)</p> - - <h6 class="c1"><a name="update_seq_diagram" id= - "update_seq_diagram"><img src="update_seq_diagram.png" alt= - "no image" /></a></h6> - - <h6 class="c1">Insert update sequence diagram.</h6> - - <p>To complete the description of the scheme, three questions - need to be answered:</p> - - <ol> - <li>How can a tree which supports order statistics define a - method such as <tt>find_by_order</tt>?</li> - - <li>How can the node updater base access methods of the - tree?</li> - - <li>How can the following cyclic dependency be resolved? - <tt>node_update</tt> is a base class of the tree, yet it - uses node iterators defined in the tree (its child).</li> - </ol> - - <p>The first two questions are answered by the fact that - <tt>node_update</tt> (an instantiation of - <tt>Node_Update</tt>) is a <tt><b>public</b></tt> base class - of the tree. Consequently:</p> - - <ol> - <li>Any public methods of <tt>node_update</tt> are - automatically methods of the tree [<a href= - "references.html#alexandrescu01modern">alexandrescu01modern</a>]. - Thus an order-statistics node updater, <a href= - "tree_order_statistics_node_update.html"><tt>tree_order_statistics_node_update</tt></a> - defines the <tt>find_by_order</tt> method; any tree - instantiated by this policy consequently supports this method - as well.</li> - - <li>In C++, if a base class declares a method as - <tt><b>virtual</b></tt>, it is <tt><b>virtual</b></tt> in its - subclasses. If <tt>node_update</tt> needs to access one of - the tree's methods, say the member function <tt>end</tt>, it simply - declares that method as <tt><b>virtual</b></tt> - abstract.</li> - </ol> - - <p>The cyclic dependency is solved through template-template - parameters. <tt>Node_Update</tt> is parametrized by the tree's node iterators, its comparison - functor, and its allocator type. Thus, - instantiations of <tt>Node_Update</tt> have all information required.</p> - - <p class="c1"><tt>pb_ds</tt> assumes that constructing a metadata object and modifying it - are exception free. Suppose that during some method, say - <tt>insert</tt>, a metadata-related operation - (<i>e.g.</i>, changing the value of a metadata) throws an - exception. Ack! Rolling back the method is unusually complex.</p> - - <p>In <a href= - "concepts.html#concepts_null_policies">Interface::Concepts::Null - Policy Classes</a> a distinction was made between <i>redundant - policies</i> and <i>null policies</i>. Node invariants show a - case where null policies are required.</p> - - <p>Assume a regular tree is required, one which need not - support order statistics or interval overlap queries. - Seemingly, in this case a redundant policy - a policy which - doesn't affect nodes' contents would suffice. This, would lead - to the following drawbacks:</p> - - <ol> - <li>Each node would carry a useless metadata object, wasting - space.</li> - - <li>The tree cannot know if its <tt>Node_Update</tt> policy - actually modifies a node's metadata (this is halting - reducible). In Figure <a href= - "#rationale_null_node_update">Useless update path</a> , - assume the shaded node is inserted. The tree would have to - traverse the useless path shown to the root, applying - redundant updates all the way.</li> - </ol> - - <h6 class="c1"><a name="rationale_null_node_update" id= - "rationale_null_node_update"><img src= - "rationale_null_node_update.png" alt="no image" /></a></h6> - - <h6 class="c1">Useless update path.</h6> - - <p>A null policy class, <a href= - "null_tree_node_update.html"><tt>null_tree_node_update</tt></a> - solves both these problems. The tree detects that node - invariants are irrelevant, and defines all accordingly.</p> - - <h2><a name="add_methods" id="add_methods">Additional - Methods</a></h2> - - <p>Tree-based containers support split and join methods. - It is possible to split a tree so that it passes - all nodes with keys larger than a given key to a different - tree. These methods have the following advantages over the - alternative of externally inserting to the destination - tree and erasing from the source tree:</p> - - <ol> - <li>These methods are efficient - red-black trees are split - and joined in poly-logarithmic complexity; ordered-vector - trees are split and joined at linear complexity. The - alternatives have super-linear complexity.</li> - - <li>Aside from orders of growth, these operations perform - few allocations and de-allocations. For red-black trees, allocations are not performed, - and the methods are exception-free. </li> - </ol> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_node_iterator.html b/libstdc++-v3/doc/html/ext/pb_ds/tree_node_iterator.html deleted file mode 100644 index ba09b5b4db2..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/tree_node_iterator.html +++ /dev/null @@ -1,143 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>tree::node_iterator Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt><span class= - "c2"><tt>tree</tt></span>::node_iterator</tt> - Interface</h1> - - <p>Node iterator.</p> - - <p>This is an <quote>iterator to an iterator </quote> - it - iterates over nodes, and de-referencing it returns one of the - tree's iterators</p> - - <h2><a name="link1" id="link1">Base Classes</a></h2> - - <table class="c1" width="100%" border="1" summary="Bases"> - <tr> - <td width="80%" align="left"><b>Class</b></td> - - <td width="20%" align="left"><b>Derivation Type</b></td> - </tr> - - <tr> - <td> - <pre> -<a href= -"tree.html#const_node_iterator4205924553"><span class="c2"><tt>tree</tt></span>::const_node_iterator</a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - </table> - - <h2><a name="link2" id="link2">Public Methods</a></h2> - - <h3><a name="link3" id="link3">Constructors, Destructor, and - Related</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> - node_iterator - () -</pre> - </td> - - <td> - <p>Default constructor.</p> - </td> - </tr> - </table> - - <h3><a name="link4" id="link4">Access Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href= -"container_base.html#iterator10418194"><span class= -"c2"><tt>container_base</tt></span>::iterator</a> - <b>operator</b>* - () <b>const</b> -</pre> - </td> - - <td> - <p>Access.</p> - </td> - </tr> - </table> - - <h3><a name="link5" id="link5">Movement Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <span class="c2"><tt>node_iterator</tt></span> - get_l_child - () <b>const</b> -</pre> - </td> - - <td> - <p>Returns the node iterator associated with the left - node.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <span class="c2"><tt>node_iterator</tt></span> - get_r_child - () <b>const</b> -</pre> - </td> - - <td> - <p>Returns the node iterator associated with the right - node.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_node_update.html b/libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_node_update.html deleted file mode 100644 index f4345531f44..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_node_update.html +++ /dev/null @@ -1,678 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>tree_order_statistics_node_update Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>tree_order_statistics_node_update</tt> Interface</h1> - - <p>Functor updating ranks of entrees.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tree_policy.hpp"><tt>tree_policy.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Template Parameters</a></h2> - - <table class="c1" width="100%" border="1" summary= - "Template Parameters"> - <tr> - <td width="20%" align="left"><b>Parameter</b></td> - - <td width="50%" align="left"><b>Description</b></td> - - <td width="30%" align="left"><b>Default Value</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="Const_Node_Iterator1933878761" id= -"Const_Node_Iterator1933878761"><b>class</b> Const_Node_Iterator</a> -</pre> - </td> - - <td> - <p>Const node iterator type.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Node_Iterator4206909839" id= -"Node_Iterator4206909839"><b>class</b> Node_Iterator</a> -</pre> - </td> - - <td> - <p>Node iterator type.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Cmp_Fn294335" id="Cmp_Fn294335"><b>class</b> Cmp_Fn</a> -</pre> - </td> - - <td> - <p>Comparison functor.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Allocator35940069" id= -"Allocator35940069"><b>class</b> Allocator</a> -</pre> - </td> - - <td> - <p>Allocator type.</p> - </td> - - <td>-</td> - </tr> - </table> - - <h2><a name="link2" id="link2">Public Types and - Constants</a></h2> - - <h3><a name="link3" id="link3">Policy Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="cmp_fn394495" id="cmp_fn394495">cmp_fn</a> -</pre> - </td> - - <td> - <pre> -<a href="#Cmp_Fn294335"><tt>Cmp_Fn</tt></a> -</pre> - </td> - - <td> - <p><a href="#Allocator35940069"><tt>Allocator</tt></a> - type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="allocator48440069" id="allocator48440069">allocator</a> -</pre> - </td> - - <td> - <pre> -<a href="#Allocator35940069"><tt>Allocator</tt></a> -</pre> - </td> - - <td> - <p><a href="#Allocator35940069"><tt>Allocator</tt></a> - type.</p> - </td> - </tr> - </table> - - <h3><a name="link4" id="link4">General Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="size_type55424436" id="size_type55424436">size_type</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#allocator48440069"><tt>allocator</tt></a>::size_type -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - </tr> - </table> - - <h3><a name="link5" id="link5">Key-type Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="key_type10393186" id="key_type10393186">key_type</a> -</pre> - </td> - - <td> - <pre> -The instantiating container's key type. -</pre> - </td> - - <td> - <p>Key type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="const_key_reference3185471705" id= -"const_key_reference3185471705">const_key_reference</a> -</pre> - </td> - - <td> - <pre> -The instantiating container's const key reference type. -</pre> - </td> - - <td> - <p>Const key reference.</p> - </td> - </tr> - </table> - - <h3><a name="link6" id="link6">Metadata-Type - Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="metadata_type2849297114" id= -"metadata_type2849297114">metadata_type</a> -</pre> - </td> - - <td> - <pre> -<a href="#size_type55424436"><tt>size_type</tt></a> -</pre> - </td> - - <td> - <p>Metadata type.</p> - </td> - </tr> - </table> - - <h3><a name="link7" id="link7">Iterator Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="const_node_iterator4205924553" id= -"const_node_iterator4205924553">const_node_iterator</a> -</pre> - </td> - - <td> - <pre> -<a href= -"#Const_Node_Iterator1933878761"><tt>Const_Node_Iterator</tt></a> -</pre> - </td> - - <td> - <p>Const node iterator type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="node_iterator3431975247" id= -"node_iterator3431975247">node_iterator</a> -</pre> - </td> - - <td> - <pre> -<a href="#Node_Iterator4206909839"><tt>Node_Iterator</tt></a> -</pre> - </td> - - <td> - <p>Node iterator type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="const_iterator98626788" id= -"const_iterator98626788">const_iterator</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#const_node_iterator4205924553"><tt>const_node_iterator</tt></a>::value_type -</pre> - </td> - - <td> - <p>Const iterator type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="iterator10418194" id="iterator10418194">iterator</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#node_iterator3431975247"><tt>node_iterator</tt></a>::value_type -</pre> - </td> - - <td> - <p>Iterator type.</p> - </td> - </tr> - </table> - - <h2><a name="link8" id="link8">Public Methods</a></h2> - - <h3><a name="link9" id="link9">Find-Type Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href= -"#const_iterator98626788"><tt>const_iterator</tt></a> - find_by_order - (<a href= -"#size_type55424436"><tt>size_type</tt></a> order) <b>const</b> -</pre> - </td> - - <td> - <p>Finds an entry by order. Returns a <a href= - "#const_iterator98626788"><tt>const_iterator</tt></a> to - the entry with the order <span class= - "c1"><tt>order</tt></span>, or a <a href= - "#const_iterator98626788"><tt>const_iterator</tt></a> to - the container object's end if <span class= - "c1"><tt>order</tt></span> is at least the size of the - container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href="#iterator10418194"><tt>iterator</tt></a> - find_by_order - (<a href="#size_type55424436"><tt>size_type</tt></a> order) -</pre> - </td> - - <td> - <p>Finds an entry by order. Returns an <a href= - "#iterator10418194"><tt>iterator</tt></a> to the entry - with the order <span class="c1"><tt>order</tt></span>, or - an <a href="#iterator10418194"><tt>iterator</tt></a> to - the container object's end if <span class= - "c1"><tt>order</tt></span> is at least the size of the - container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a> - order_of_key - (<a href= -"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key) <b>const</b> -</pre> - </td> - - <td> - <p>Returns the order of a key within a sequence. For - example, if <span class="c1"><tt>r_key</tt></span> is the - smallest key, this method will return 0; if <span class= - "c1"><tt>r_key</tt></span> is a key between the smallest - and next key, this method will return 1; if <span class= - "c1"><tt>r_key</tt></span> is a key larger than the - largest key, this method will return the size of r_c.</p> - </td> - </tr> - </table> - - <h2><a name="link10" id="link10">Protected Types and - Constants</a></h2> - - <h3><a name="link11" id="link11">Value-type - Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="const_reference495461441" id= -"const_reference495461441">const_reference</a> -</pre> - </td> - - <td> - <pre> -The instantiating container's const reference type. -</pre> - </td> - - <td> - <p>Const reference to the container's value-type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="const_pointer878814947" id= -"const_pointer878814947">const_pointer</a> -</pre> - </td> - - <td> - <pre> -The instantiating container's const pointer type. -</pre> - </td> - - <td> - <p>Const pointer to the container's value-type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="const_metadata_reference1108857465" id= -"const_metadata_reference1108857465">const_metadata_reference</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#Allocator35940069"><tt>Allocator</tt></a>::<b>template</b> rebind< - <a href= -"#metadata_type2849297114"><tt>metadata_type</tt></a>>::other::<a href="#const_reference495461441"><tt>const_reference</tt></a> -</pre> - </td> - - <td> - <p>Const metadata reference.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="metadata_reference583863863" id= -"metadata_reference583863863">metadata_reference</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#Allocator35940069"><tt>Allocator</tt></a>::<b>template</b> rebind< - <a href= -"#metadata_type2849297114"><tt>metadata_type</tt></a>>::other::reference -</pre> - </td> - - <td> - <p>Metadata reference.</p> - </td> - </tr> - </table> - - <h2><a name="link12" id="link12">Protected Methods</a></h2> - - <h3><a name="link13" id="link13">Operators</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - <b>operator</b>() - (<a href= -"#node_iterator3431975247"><tt>node_iterator</tt></a> node_it, - <a href= -"#const_node_iterator4205924553"><tt>const_node_iterator</tt></a> end_nd_it) <b>const</b> -</pre> - </td> - - <td> - <p>Updates the rank of a node through a <a href= - "#node_iterator3431975247"><tt>node_iterator</tt></a> - <span class="c1"><tt>node_it</tt></span>; <span class= - "c1"><tt>end_nd_it</tt></span> is the end node <a href= - "#iterator10418194"><tt>iterator</tt></a>.</p> - </td> - </tr> - </table> - - <h3><a name="link14" id="link14">Constructors, destructor, and - related</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> - ~tree_order_statistics_node_update - () -</pre> - </td> - - <td> - <p>Destructor.</p> - </td> - </tr> - </table> - - <h2><a name="link15" id="link15">Private Methods</a></h2> - - <h3><a name="link16" id="link16">Overrides</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> <a href= -"#const_node_iterator4205924553"><tt>const_node_iterator</tt></a> - node_begin - () <b>const</b> = 0 -</pre> - </td> - - <td> - <p>Returns the <a href= - "#const_node_iterator4205924553"><tt>const_node_iterator</tt></a> - associated with the tree's root node.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> <a href= -"#node_iterator3431975247"><tt>node_iterator</tt></a> - node_begin - () = 0 -</pre> - </td> - - <td> - <p>Returns the <a href= - "#node_iterator3431975247"><tt>node_iterator</tt></a> - associated with the tree's root node.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> <a href= -"#const_node_iterator4205924553"><tt>const_node_iterator</tt></a> - node_end - () <b>const</b> = 0 -</pre> - </td> - - <td> - <p>Returns the <a href= - "#const_node_iterator4205924553"><tt>const_node_iterator</tt></a> - associated with a just-after leaf node.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> <a href= -"#node_iterator3431975247"><tt>node_iterator</tt></a> - node_end - () = 0 -</pre> - </td> - - <td> - <p>Returns the <a href= - "#node_iterator3431975247"><tt>node_iterator</tt></a> - associated with a just-after leaf node.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> <a href="#cmp_fn394495"><tt>cmp_fn</tt></a> & - get_cmp_fn - () = 0 -</pre> - </td> - - <td> - <p>Access to the <a href= - "#cmp_fn394495"><tt>cmp_fn</tt></a> object.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test.html deleted file mode 100644 index ef811613e9c..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test.html +++ /dev/null @@ -1,118 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> -<title>Tree Order Statistics Timing Test</title> -<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /> -</head> -<body> -<div id="page"> -<h1>Tree Order-Statistics Timing Test</h1> -<h2><a name="description" id="description">Description</a></h2> -<p>This test creates a container, inserts random integers into - the the container, and then checks the order-statistics of the - container's values. (If the container is one of <tt>pb_ds</tt> - 's trees, it does this with the <tt>order_of_key</tt> method of - <a href="tree_order_statistics_node_update.html"><tt>tree_order_statistics_node_update</tt></a> - ; otherwise, it uses the <tt>find</tt> method and - <tt>std::distance</tt> .) It measures the average time for such - queries as a function of the number of values inserted.</p> -<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/tree_order_statistics_timing.cc"><tt>tree_order_statistics_timing_test</tt></a> - 200 200 2100)</p> -<h2><a name="purpose" id="purpose">Purpose</a></h2> -<p>The test checks the performance difference of policies based - on node-invariant as opposed to a external functions. (see - <a href="tree_based_containers.html#invariants">Design::Associative - Containers::Tree-Based Containers::Node Invariants</a> .)</p> -<h2><a name="results" id="results">Results</a></h2> -<p>Figures <a href="#NTG">NTG</a>, <a href="#NTM">NTM</a>, and - <a href="#NTL">NTL</a> show the results for the native and - tree-based containers in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>, and - <a href="assoc_performance_tests.html#local"><u>local</u></a>, - respectively.</p> -<div id="NTG_res_div"> -<div id="NTG_gcc"> -<div id="NTG_tree_order_statistics_timing_test"> -<div id="NTG_assoc"> -<div id="NTG_Native_and_tree-based_container_order-statistics_queries"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTG" id="NTG"><img src="tree_order_statistics_timing_test_gcc.png" alt="no image" /></a></h6>NTG: Native and tree-based container order-statistics queries - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_set- -<tt>std::set</tt></li> -<li> -splay_tree_ost_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="tree_order_statistics_node_update.html"><tt>tree_order_statistics_node_update</tt></a> -</li> -<li> -rb_tree_ost_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="tree_order_statistics_node_update.html"><tt>tree_order_statistics_node_update</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NTM_res_div"> -<div id="NTM_msvc"> -<div id="NTM_tree_order_statistics_timing_test"> -<div id="NTM_assoc"> -<div id="NTM_Native_and_tree-based_container_order-statistics_queries"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTM" id="NTM"><img src="tree_order_statistics_timing_test_msvc.png" alt="no image" /></a></h6>NTM: Native and tree-based container order-statistics queries - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_set- -<tt>std::set</tt></li> -<li> -splay_tree_ost_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="tree_order_statistics_node_update.html"><tt>tree_order_statistics_node_update</tt></a> -</li> -<li> -rb_tree_ost_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="tree_order_statistics_node_update.html"><tt>tree_order_statistics_node_update</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NTL_res_div"> -<div id="NTL_local"> -<div id="NTL_tree_order_statistics_timing_test"> -<div id="NTL_assoc"> -<div id="NTL_Native_and_tree-based_container_order-statistics_queries"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTL" id= "NTL"><img src="tree_order_statistics_timing_test_local.png" alt="no image" /></a></h6>NTL: Native and tree-based container order-statistics queries - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<h2><a name="observations" id="observations">Observations</a></h2> -<p>In this test, the native red-black tree can support - order-statistics queries only externally, by performing a - <tt>find</tt> (alternatively, <tt>lower_bound</tt> or - <tt>upper_bound</tt> ) and then using <tt>std::distance</tt> . - This is clearly linear, and it is not that surprising that the - cost is high.</p> -<p><tt>pb_ds</tt> 's tree-based containers use in this test the - <tt>order_of_key</tt> method of <a href="tree_order_statistics_node_update.html"><tt>tree_order_statistics_node_update</tt></a>. - This method has only linear complexity in the length of the - root-node path. Unfortunately, the average path of a splay tree - (<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag =</tt> <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a> ) can - be higher than logarithmic; the longest path of a red-black - tree (<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag =</tt> <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> ) is - logarithmic in the number of elements. Consequently, the splay - tree has worse performance than the red-black tree.</p> -</div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test_gcc.png Binary files differdeleted file mode 100644 index bdb00d07a7f..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test_local.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test_local.png Binary files differdeleted file mode 100644 index 9f46319f808..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test_msvc.png Binary files differdeleted file mode 100644 index 76dcbee44fd..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/tree_order_statistics_timing_test_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_random_int_find_find_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/tree_random_int_find_find_timing_test.html deleted file mode 100644 index c34354f3ed4..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/tree_random_int_find_find_timing_test.html +++ /dev/null @@ -1,160 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> -<title>Tree Text Find Timing Test</title> -<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /> -</head> -<body> -<div id="page"> -<h1>Tree-Based and Trie-Based Text <tt>find</tt> Find Timing - Test</h1> -<h2><a name="description" id="description">Description</a></h2> -<p>This test inserts a number of values with keys from an - arbitrary text ([<a href="references.html#wickland96thirty">wickland96thirty</a>]) into - a container, then performs a series of finds using - <tt>find</tt>. It measures the average time for <tt>find</tt> - as a function of the number of values inserted.</p> -<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/text_find_timing.cc"><tt>text_find_timing_test</tt></a> - thirty_years_among_the_dead_preproc.txt 200 200 2100)</p> -<h2><a name="purpose" id="purpose">Purpose</a></h2> -<p>The test checks the effect of different underlying - data structures.</p> -<h2><a name="results" id="results">Results</a></h2> -<p>Figures <a href="#NTTG">NTTG</a>, <a href="#NTTM">NTTM</a>, - and <a href="#NTTG">NTTL</a> show the results for the native, - tree-based, and trie-based types in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#local"><u>local</u></a>, and - <a href="assoc_performance_tests.html#local"><u>local</u></a>, - respectively.</p> -<div id="NTTG_res_div"> -<div id="NTTG_gcc"> -<div id="NTTG_random_int_find_find_timing_test_tree"> -<div id="NTTG_assoc"> -<div id="NTTG_Native_456_tree-based_456_random_int_find_timing_test_using__tt_find_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTTG" id="NTTG"><img src="random_int_find_find_timing_test_tree_gcc.png" alt="no image" /></a></h6>NTTG: Native, tree-based, random int find timing test using <tt>find</tt> - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -splay_tree_map- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -</li> -<li> -ov_tree_map- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -</li> -<li> -n_map- -<tt>std::map</tt></li> -<li> -rb_tree_map- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -<div id="NTTM_res_div"> -<div id="NTTM_msvc"> -<div id="NTTM_random_int_find_find_timing_test_tree"> -<div id="NTTM_assoc"> -<div id="NTTM_Native_456_tree-based_456_random_int_find_timing_test_using__tt_find_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTTM" id="NTTM"><img src="random_int_find_find_timing_test_tree_msvc.png" alt="no image" /></a></h6>NTTM: Native, tree-based, random int find timing test using <tt>find</tt> - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -splay_tree_map- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -</li> -<li> -ov_tree_map- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -</li> -<li> -n_map- -<tt>std::map</tt></li> -<li> -rb_tree_map- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -<div id="NTTL_res_div"> -<div id="NTTL_local"> -<div id="NTTL_random_int_find_find_timing_test_tree"> -<div id="NTTL_assoc"> -<div id="NTTL_Native_456_tree-based_456_random_int_find_timing_test_using__tt_find_455tt_"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTTL" id= "NTTL"><img src="random_int_find_find_timing_test_tree_local.png" alt="no image" /></a></h6>NTTL: Native, tree-based, random int find timing test using <tt>find</tt> - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -<h2><a name="observations" id="observations">Observations</a></h2> -<p>For this setting, a splay tree (<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag =</tt> <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a>) - does not do well. This is possibly due to two - reasons:</p> -<ol> -<li>A splay tree is not guaranteed to be balanced - [<a href="references.html#motwani95random">motwani95random</a>]. - If a splay tree contains <i>n</i> nodes, its - average root-leaf path can be <i>m >> - log(n)</i>.</li> -<li>Assume a specific root-leaf search path has - length <i>m</i>, and the search-target node has - distance <i>m'</i> from the root. A red-black - tree will require <i>m + 1</i> comparisons to - find the required node; a splay tree will require - <i>2 m'</i> comparisons. A splay tree, - consequently, can perform many more comparisons - than a red-black tree.</li> -</ol> -<p>An ordered-vector tree (<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag =</tt> <a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a>), - a red-black tree (<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag =</tt> <a href="splay_tree_tag.html"><tt>rb_tree_tag</tt></a>), - and the native red-black tree all share - approximately the same performance.</p> -<p>An ordered-vector tree is slightly slower than - red-black trees, since it requires, in order to - find a key, more math operations than they do. - Conversely, an ordered-vector tree requires far - lower space than the others. ([<a href="references.html#austern00noset">austern00noset</a>], - however, seems to have an implementation that is - also faster than a red-black tree).</p> -<p>A PATRICIA trie (<a href="trie.html"><tt>trie</tt></a> - with <tt>Tag =</tt> <a href="pat_trie_tag.html"><tt>pat_trie_tag</tt></a>) - has good look-up performance, due to its large - fan-out in this case. In this setting, a PATRICIA - trie has lookup performance comparable to a hash - table (see <a href="hash_text_find_find_timing_test.html">Hash-Based - Text <tt>find</tt> Find Timing Test</a>), but it is - order preserving. This is not that surprising, - since a large fan-out PATRICIA trie works like a - hash table with collisions resolved by a sub-trie. - A large fan-out PATRICIA trie does not do well on - modifications (see <a href="tree_text_insert_timing_test.html">Tree-Based and - Trie-Based Text Insert Timing Test</a>). It is - possibly beneficial to semi-static settings, - therefore.</p> -<p><a href="assoc_performance_tests.html#tree_like_based_types"> - Observations::Tree-Like-Based Container Types</a> - summarizes some observations on tree-based and - trie-based containers.</p> -</div> -</div> -</div> -</div> -</div> -</div> -</div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test.html deleted file mode 100644 index 9164984d16d..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test.html +++ /dev/null @@ -1,143 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> -<title>Tree Split Join Timing Test</title> -<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /> -</head> -<body> -<div id="page"> -<h1>Tree Split-Join Timing Test</h1> -<h2><a name="description" id="description">Description</a></h2> -<p>This test a container, inserts into a number of values, - splits the container at the median, and joins the two - containers. (If the containers are one of <tt>pb_ds</tt> 's - trees, it splits and joins with the <tt>split</tt> and - <tt>join</tt> method; otherwise, it uses the <tt>erase</tt> and - <tt>insert</tt> methods.) It measures the time for splitting - and joining the containers as a function of the number of - values inserted.</p> -<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/tree_split_join_timing.cc"><tt>tree_split_join_timing_test</tt></a> - 200 200 2100)</p> -<h2><a name="purpose" id="purpose">Purpose</a></h2> -<p>The test checks the performance difference of <tt>join</tt> - as opposed to a sequence of <tt>insert</tt> operations; by - implication, this test checks the most efficient way to erase a - sub-sequence from a tree-like-based container, since this can - always be performed by a small sequence of splits and joins - (see <a href="motivation.html#assoc_split_join_methods">Motivation::Associative - Containers::Slightly Different Methods::Methods Related to - Split and Join</a> and <a href="tree_based_containers.html#add_methods">Design::Associative - Containers::Tree-Based Containers::Additional Methods</a> - .)</p> -<h2><a name="results" id="results">Results</a></h2> -<p>Figures <a href="#NTG">NTG</a>, <a href="#NTM">NTM</a>, and - <a href="#NTL">NTL</a> show the results for the native and - tree-based containers in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>, and - <a href="assoc_performance_tests.html#local"><u>local</u></a>, - respectively.</p> -<div id="NTG_res_div"> -<div id="NTG_gcc"> -<div id="NTG_tree_split_join_timing_test"> -<div id="NTG_assoc"> -<div id="NTG_Native_and_tree-based_container_splits_and_joins"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTG" id="NTG"><img src="tree_split_join_timing_test_gcc.png" alt="no image" /></a></h6>NTG: Native and tree-based container splits and joins - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_set- -<tt>std::set</tt></li> -<li> -splay_tree_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -</li> -<li> -rb_tree_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -</li> -<li> -ov_tree_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NTM_res_div"> -<div id="NTM_msvc"> -<div id="NTM_tree_split_join_timing_test"> -<div id="NTM_assoc"> -<div id="NTM_Native_and_tree-based_container_splits_and_joins"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTM" id="NTM"><img src="tree_split_join_timing_test_msvc.png" alt="no image" /></a></h6>NTM: Native and tree-based container splits and joins - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_set- -<tt>std::set</tt></li> -<li> -splay_tree_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -</li> -<li> -rb_tree_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -</li> -<li> -ov_tree_set- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NTL_res_div"> -<div id="NTL_local"> -<div id="NTL_tree_split_join_timing_test"> -<div id="NTL_assoc"> -<div id="NTL_Native_and_tree-based_container_splits_and_joins"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTL" id= "NTL"><img src="tree_split_join_timing_test_local.png" alt="no image" /></a></h6>NTL: Native and tree-based container splits and joins - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<h2><a name="observations" id="observations">Observations</a></h2> -<p>In this test, the native red-black trees must be split and - joined externally, through a sequence of <tt>erase</tt> and - <tt>insert</tt> operations. This is clearly super-linear, and - it is not that surprising that the cost is high.</p> -<p><tt>pb_ds</tt> 's tree-based containers use in this test the - <tt>split</tt> and <tt>join</tt> methods, which have lower - complexity: the <tt>join</tt> method of a splay tree ( <a href="tree.html"><tt>tree</tt></a> - with <tt>Tag =</tt> <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a> ) is - quadratic in the length of the longest root-leaf path, and - linear in the total number of elements; the <tt>join</tt> - method of a red-black tree ( <a href="tree.html"><tt>tree</tt></a> - with <tt>Tag =</tt> <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> ) or an - ordered-vector tree ( <a href="tree.html"><tt>tree</tt></a> - with <tt>Tag =</tt> <a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a> ) is linear - in the number of elements.</p> -<p>Asides from orders of growth, <tt>pb_ds</tt> 's trees access - their allocator very little in these operations, and some of - them do not access it at all. This leads to lower constants in - their complexity, and, for some containers, to exception-free - splits and joins (which can be determined via <a href="assoc_container_traits.html"><tt>container_traits</tt></a>).</p> -<p>It is important to note that <tt>split</tt> and - <tt>join</tt> are not esoteric methods - they are the most - efficient means of erasing a contiguous range of values from a - tree based container.</p> -</div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test_gcc.png Binary files differdeleted file mode 100644 index 88867eca6bd..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test_local.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test_local.png Binary files differdeleted file mode 100644 index fe5ba81c49e..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test_msvc.png Binary files differdeleted file mode 100644 index 37ed1b2e7c0..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/tree_split_join_timing_test_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/tree_tag.html deleted file mode 100644 index d7265ac1839..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/tree_tag.html +++ /dev/null @@ -1,47 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>tree_tag Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>tree_tag</tt> Interface</h1> - - <p>Basic tree data structure tag.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Base Classes</a></h2> - - <table class="c1" width="100%" border="1" summary="Bases"> - <tr> - <td width="80%" align="left"><b>Class</b></td> - - <td width="20%" align="left"><b>Derivation Type</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="basic_tree_tag.html"><span class= -"c2"><tt>basic_tree_tag</tt></span></a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_find_find_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_find_find_timing_test.html deleted file mode 100644 index fbfdfeffa56..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_find_find_timing_test.html +++ /dev/null @@ -1,162 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> -<title>Tree Text Find Timing Test</title> -<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /> -</head> -<body> -<div id="page"> -<h1>Tree-Based and Trie-Based Text <tt>find</tt> Find Timing - Test</h1> -<h2><a name="description" id="description">Description</a></h2> -<p>This test inserts a number of values with keys from an - arbitrary text ([<a href="references.html#wickland96thirty">wickland96thirty</a>]) into - a container, then performs a series of finds using - <tt>find</tt>. It measures the average time for <tt>find</tt> - as a function of the number of values inserted.</p> -<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/text_find_timing.cc"><tt>text_find_timing_test</tt></a> - thirty_years_among_the_dead_preproc.txt 200 200 2100)</p> -<h2><a name="purpose" id="purpose">Purpose</a></h2> -<p>The test checks the effect of different underlying - data structures.</p> -<h2><a name="results" id="results">Results</a></h2> -<p>Figures <a href="#NTTG">NTTG</a>, <a href="#NTTM">NTTM</a>, - and <a href="#NTTG">NTTL</a> show the results for the native, - tree-based, and trie-based types in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#local"><u>local</u></a>, and - <a href="assoc_performance_tests.html#local"><u>local</u></a>, - respectively.</p> -<div id="NTTG_res_div"> -<div id="NTTG_gcc"> -<div id="NTTG_text_find_timing_test_tree_like"> -<div id="NTTG_assoc"> -<div id="NTTG_Native_456_tree-based_456_and_trie-based_456_text_find_timing_test_using__tt_find_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTTG" id="NTTG"><img src="text_find_timing_test_tree_like_gcc.png" alt="no image" /></a></h6>NTTG: Native, tree-based, and trie-based, text find timing test using <tt>find</tt> - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -splay_tree_map- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -</li> -<li> -ov_tree_map- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -</li> -<li> -rb_tree_map- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -</li> -<li> -n_map- -<tt>std::map</tt></li> -<li> -pat_trie_map- -<a href="trie.html"><tt>trie</tt></a> - with <tt>Tag</tt> = <a href="pat_trie_tag.html"><tt>pat_trie_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_trie_node_update.html"><tt>null_trie_node_update</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NTTM_res_div"> -<div id="NTTM_msvc"> -<div id="NTTM_text_find_timing_test_tree_like"> -<div id="NTTM_assoc"> -<div id="NTTM_Native_456_tree-based_456_and_trie-based_456_text_find_timing_test_using__tt_find_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTTM" id="NTTM"><img src="text_find_timing_test_tree_like_msvc.png" alt="no image" /></a></h6>NTTM: Native, tree-based, and trie-based, text find timing test using <tt>find</tt> - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -splay_tree_map- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -</li> -<li> -ov_tree_map- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -</li> -<li> -rb_tree_map- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -</li> -<li> -n_map- -<tt>std::map</tt></li> -<li> -pat_trie_map- -<a href="trie.html"><tt>trie</tt></a> - with <tt>Tag</tt> = <a href="pat_trie_tag.html"><tt>pat_trie_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_trie_node_update.html"><tt>null_trie_node_update</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NTTL_res_div"> -<div id="NTTL_local"> -<div id="NTTL_text_find_timing_test_tree_like"> -<div id="NTTL_assoc"> -<div id="NTTL_Native_456_tree-based_456_and_trie-based_456_text_find_timing_test_using__tt_find_455tt_"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTTL" id= "NTTL"><img src="text_find_timing_test_tree_like_local.png" alt="no image" /></a></h6>NTTL: Native, tree-based, and trie-based, text find timing test using <tt>find</tt> - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<h2><a name="observations" id="observations">Observations</a></h2> -<p>For this setting, a splay tree (<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag =</tt> <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a>) does - not do well. This is possibly due to two reasons:</p> -<ol> -<li>A splay tree is not guaranteed to be balanced [<a href="references.html#motwani95random">motwani95random</a>]. If a - splay tree contains <i>n</i> nodes, its average root-leaf - path can be <i>m >> log(n)</i>.</li> -<li>Assume a specific root-leaf search path has length - <i>m</i>, and the search-target node has distance <i>m'</i> - from the root. A red-black tree will require <i>m + 1</i> - comparisons to find the required node; a splay tree will - require <i>2 m'</i> comparisons. A splay tree, consequently, - can perform many more comparisons than a red-black tree.</li> -</ol> -<p>An ordered-vector tree (<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag =</tt> <a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a>), a red-black - tree (<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag =</tt> <a href="splay_tree_tag.html"><tt>rb_tree_tag</tt></a>), and the - native red-black tree all share approximately the same - performance.</p> -<p>An ordered-vector tree is slightly slower than red-black - trees, since it requires, in order to find a key, more math - operations than they do. Conversely, an ordered-vector tree - requires far lower space than the others. ([<a href="references.html#austern00noset">austern00noset</a>], however, - seems to have an implementation that is also faster than a - red-black tree).</p> -<p>A PATRICIA trie (<a href="trie.html"><tt>trie</tt></a> - with <tt>Tag =</tt> <a href="pat_trie_tag.html"><tt>pat_trie_tag</tt></a>) has good - look-up performance, due to its large fan-out in this case. In - this setting, a PATRICIA trie has look-up performance comparable - to a hash table (see <a href="hash_text_find_find_timing_test.html">Hash-Based Text - <tt>find</tt> Find Timing Test</a>), but it is order - preserving. This is not that surprising, since a large-fan-out - PATRICIA trie works like a hash table with collisions resolved - by a sub-trie. A large-fan-out PATRICIA trie does not do well on - modifications (see <a href="tree_text_insert_timing_test.html">Tree-Based and Trie-Based - Text Insert Timing Test</a>). It is possibly beneficial to - semi-static settings, therefore.</p> -<p><a href="assoc_performance_tests.html#tree_like_based_types">Observations::Tree-Like-Based - Container Types</a> summarizes some observations on tree-based - and trie-based containers.</p> -</div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test.html deleted file mode 100644 index a5815fb2e25..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test.html +++ /dev/null @@ -1,226 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> -<title>Tree Text Insert Timing Test</title> -<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /> -</head> -<body> -<div id="page"> -<h1>Tree-Based and Trie-Based Text Insert Timing Test</h1> -<h2><a name="description" id="description">Description</a></h2> -<p>This test inserts a number of values with keys from an - arbitrary text ([ <a href="references.html#wickland96thirty">wickland96thirty</a> ]) into - a container using <tt>insert</tt> . It measures the average - time for <tt>insert</tt> as a function of the number of values - inserted.</p> -<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/tree_text_insert_timing.cc"><tt>tree_text_insert_timing_test</tt></a> - thirty_years_among_the_dead_preproc.txt 200 200 2100)</p> -<h2><a name="purpose" id="purpose">Purpose</a></h2> -<p>The test checks the effect of different underlying - data structures.</p> -<h2><a name="results" id="results">Results</a></h2> -<p>Figures <a href="#NNTG">NNTG</a>, <a href="#NVTG">NVTG</a>, - and <a href="#NPTG">NPTG</a> show the results for the native - tree and <tt>pb_ds</tt>'s node-based trees, the native tree and - <tt>pb_ds</tt>'s vector-based trees, and the native tree - and<tt>pb_ds</tt>'s PATRICIA-trie, respectively, in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>; Figures - <a href="#NNTM">NNTM</a>, <a href="#NVTM">NVTM</a>, and - <a href="#NPTM">NPTM</a> show the same in <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a>; Figures - <a href="#NNTL">NNTL</a>, <a href="#NVTL">NVTL</a>, and - <a href="#NPTL">NPTL</a> show the same in <a href="assoc_performance_tests.html#local"><u>local</u></a>.</p> -<div id="NNTG_res_div"> -<div id="NNTG_gcc"> -<div id="NNTG_tree_text_insert_timing_test_node_tree"> -<div id="NNTG_assoc"> -<div id="NNTG_Native_tree_and_node-based_trees_text_insert_timing_test_using__tt_insert_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NNTG" id="NNTG"><img src="tree_text_insert_timing_test_node_tree_gcc.png" alt="no image" /></a></h6>NNTG: Native tree and node-based trees text insert timing test using <tt>insert</tt> - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -splay_tree_map- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -</li> -<li> -n_map- -<tt>std::map</tt></li> -<li> -rb_tree_map- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NVTG_res_div"> -<div id="NVTG_gcc"> -<div id="NVTG_tree_text_insert_timing_test_vector_tree"> -<div id="NVTG_assoc"> -<div id="NVTG_Native_tree_and_vector-based_tree_text_insert_timing_test_using__tt_insert_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NVTG" id="NVTG"><img src="tree_text_insert_timing_test_vector_tree_gcc.png" alt="no image" /></a></h6>NVTG: Native tree and vector-based tree text insert timing test using <tt>insert</tt> - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -ov_tree_map- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -</li> -<li> -n_map- -<tt>std::map</tt></li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NPTG_res_div"> -<div id="NPTG_gcc"> -<div id="NPTG_tree_text_insert_timing_test_pat_trie"> -<div id="NPTG_assoc"> -<div id="NPTG_Native_tree_and_PATRICIA_trie_text_insert_timing_test_using__tt_insert_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPTG" id="NPTG"><img src="tree_text_insert_timing_test_pat_trie_gcc.png" alt="no image" /></a></h6>NPTG: Native tree and PATRICIA trie text insert timing test using <tt>insert</tt> - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -n_map- -<tt>std::map</tt></li> -<li> -pat_trie_map- -<a href="trie.html"><tt>trie</tt></a> - with <tt>Tag</tt> = <a href="pat_trie_tag.html"><tt>pat_trie_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_trie_node_update.html"><tt>null_trie_node_update</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NNTM_res_div"> -<div id="NNTM_msvc"> -<div id="NNTM_tree_text_insert_timing_test_node_tree"> -<div id="NNTM_assoc"> -<div id="NNTM_Native_tree_and_node-based_trees_text_insert_timing_test_using__tt_insert_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NNTM" id="NNTM"><img src="tree_text_insert_timing_test_node_tree_msvc.png" alt="no image" /></a></h6>NNTM: Native tree and node-based trees text insert timing test using <tt>insert</tt> - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -splay_tree_map- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -</li> -<li> -n_map- -<tt>std::map</tt></li> -<li> -rb_tree_map- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NVTM_res_div"> -<div id="NVTM_msvc"> -<div id="NVTM_tree_text_insert_timing_test_vector_tree"> -<div id="NVTM_assoc"> -<div id="NVTM_Native_tree_and_vector-based_tree_text_insert_timing_test_using__tt_insert_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NVTM" id="NVTM"><img src="tree_text_insert_timing_test_vector_tree_msvc.png" alt="no image" /></a></h6>NVTM: Native tree and vector-based tree text insert timing test using <tt>insert</tt> - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -ov_tree_map- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -</li> -<li> -n_map- -<tt>std::map</tt></li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NPTM_res_div"> -<div id="NPTM_msvc"> -<div id="NPTM_tree_text_insert_timing_test_pat_trie"> -<div id="NPTM_assoc"> -<div id="NPTM_Native_tree_and_PATRICIA_trie_text_insert_timing_test_using__tt_insert_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPTM" id="NPTM"><img src="tree_text_insert_timing_test_pat_trie_msvc.png" alt="no image" /></a></h6>NPTM: Native tree and PATRICIA trie text insert timing test using <tt>insert</tt> - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -pat_trie_map- -<a href="trie.html"><tt>trie</tt></a> - with <tt>Tag</tt> = <a href="pat_trie_tag.html"><tt>pat_trie_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_trie_node_update.html"><tt>null_trie_node_update</tt></a> -</li> -<li> -n_map- -<tt>std::map</tt></li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NNTL_res_div"> -<div id="NNTL_local"> -<div id="NNTL_tree_text_insert_timing_test_node_tree"> -<div id="NNTL_assoc"> -<div id="NNTL_Native_tree_and_node-based_trees_text_insert_timing_test_using__tt_insert_455tt_"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NNTL" id= "NNTL"><img src="tree_text_insert_timing_test_node_tree_local.png" alt="no image" /></a></h6>NNTL: Native tree and node-based trees text insert timing test using <tt>insert</tt> - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NVTL_res_div"> -<div id="NVTL_local"> -<div id="NVTL_tree_text_insert_timing_test_vector_tree"> -<div id="NVTL_assoc"> -<div id="NVTL_Native_tree_and_vector-based_tree_text_insert_timing_test_using__tt_insert_455tt_"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NVTL" id= "NVTL"><img src="tree_text_insert_timing_test_vector_tree_local.png" alt="no image" /></a></h6>NVTL: Native tree and vector-based tree text insert timing test using <tt>insert</tt> - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NPTL_res_div"> -<div id="NPTL_local"> -<div id="NPTL_tree_text_insert_timing_test_pat_trie"> -<div id="NPTL_assoc"> -<div id="NPTL_Native_tree_and_PATRICIA_trie_text_insert_timing_test_using__tt_insert_455tt_"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NPTL" id= "NPTL"><img src="tree_text_insert_timing_test_pat_trie_local.png" alt="no image" /></a></h6>NPTL: Native tree and PATRICIA trie text insert timing test using <tt>insert</tt> - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<h2><a name="observations" id="observations">Observations</a></h2> -<p>Observing Figure <a href="#NNTG">NNTG</a> , for this - setting, a splay tree, ( <a href="tree.html"><tt>tree</tt></a> - with <tt>Tag =</tt> <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a> ) does - not do well. This was covered in <a href="tree_text_find_find_timing_test.html">Tree-Based and - Trie-Based Text <tt>find</tt> Find Timing Test</a> . The two - red-black trees perform better.</p> -<p>Observing Figure <a href="#NVTG">NVTG</a>, an ordered-vector - tree ( <a href="tree.html"><tt>tree</tt></a> - with <tt>Tag =</tt> <a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a>) performs - abysmally. Inserting into this type of tree has linear - complexity [ <a href="references.html#austern00noset">austern00noset</a>].</p> -<p>Observing Figure <a href="#NPTG">NPTG</a> , A PATRICIA trie - ( <a href="trie.html"><tt>trie</tt></a> - with <tt>Tag =</tt> <a href="pat_trie_tag.html"><tt>pat_trie_tag</tt></a> ) has - abysmal performance, as well. This is not that surprising, - since a large-fan-out PATRICIA trie works like a hash table with - collisions resolved by a sub-trie. Each time a collision is - encountered, a new "hash-table" is built A large fan-out - PATRICIA trie, however, doe does well in look-ups (see <a href="tree_text_find_find_timing_test.html">Tree-Based and - Trie-Based Text <tt>find</tt> Find Timing Test</a> ). It is - possibly beneficial to semi-static settings, therefore.</p> -<p><a href="assoc_performance_tests.html#tree_like_based_types">Observations::Tree-Like-Based - Container Types</a> summarizes some observations on tree-based - and trie-based containers.</p> -</div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_node_tree_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_node_tree_gcc.png Binary files differdeleted file mode 100644 index 22d8f6fc213..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_node_tree_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_node_tree_local.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_node_tree_local.png Binary files differdeleted file mode 100644 index c98488c041a..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_node_tree_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_node_tree_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_node_tree_msvc.png Binary files differdeleted file mode 100644 index 18b219851c2..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_node_tree_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_pat_trie_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_pat_trie_gcc.png Binary files differdeleted file mode 100644 index 5fe063e63c2..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_pat_trie_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_pat_trie_local.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_pat_trie_local.png Binary files differdeleted file mode 100644 index eff7eefb09d..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_pat_trie_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_pat_trie_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_pat_trie_msvc.png Binary files differdeleted file mode 100644 index 9f13db0c093..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_pat_trie_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_vector_tree_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_vector_tree_gcc.png Binary files differdeleted file mode 100644 index dd85dcd7ca2..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_vector_tree_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_vector_tree_local.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_vector_tree_local.png Binary files differdeleted file mode 100644 index f67156d452e..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_vector_tree_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_vector_tree_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_vector_tree_msvc.png Binary files differdeleted file mode 100644 index 8c07313910f..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_insert_timing_test_vector_tree_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_find_timing_test.html b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_find_timing_test.html deleted file mode 100644 index c577a56dbcb..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_find_timing_test.html +++ /dev/null @@ -1,126 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> -<title>Tree Text Locality of Reference Find Timing Test</title> -<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /> -</head> -<body> -<div id="page"> -<h1>Tree-Based Locality-of-Reference Text <tt>find</tt> Find - Timing Test</h1> -<h2><a name="description" id="description">Description</a></h2> -<p>This test inserts a number of values with keys from an - arbitrary text ([ <a href="references.html#wickland96thirty">wickland96thirty</a> ]) into - a container, then performs a series of finds using - <tt>find</tt> . It is different than <a href="tree_text_find_find_timing_test.html">Tree-Based and - Trie-Based Text <tt>find</tt> Find Timing Test</a> in the - sequence of finds it performs: this test performs multiple - <tt>find</tt> s on the same key before moving on to the next - key. It measures the average time for <tt>find</tt> as a - function of the number of values inserted.</p> -<p>(The test was executed with <a href="http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/performance/ext/pb_ds/tree_text_lor_find_timing.cc"><tt>tree_text_lor_find_timing_test</tt></a> - thirty_years_among_the_dead_preproc.txt 200 200 2100)</p> -<h2><a name="purpose" id="purpose">Purpose</a></h2> -<p>The test checks the effect of different underlying - data structures in a locality-of-reference setting.</p> -<h2><a name="results" id="results">Results</a></h2> -<p>Figures <a href="#NTG">NTG</a>, <a href="#NTM">NTM</a>, and - <a href="#NTL">NTL</a> show the results for the native and - <tt>pb_ds</tt> tree-based types in <a href="assoc_performance_tests.html#gcc"><u>g++</u></a>, <a href="assoc_performance_tests.html#msvc"><u>msvc++</u></a> and - <a href="assoc_performance_tests.html#local"><u>local</u></a>, - respectively.</p> -<div id="NTG_res_div"> -<div id="NTG_gcc"> -<div id="NTG_tree_text_lor_find_timing_test"> -<div id="NTG_assoc"> -<div id="NTG_Native_and_tree-based_locality-of-reference_text_find_timing_test_using__tt_find_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTG" id="NTG"><img src="tree_text_lor_find_timing_test_gcc.png" alt="no image" /></a></h6>NTG: Native and tree-based locality-of-reference text find timing test using <tt>find</tt> - <a href="assoc_performance_tests.html#gcc">g++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -ov_tree_map- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -</li> -<li> -rb_tree_map- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -</li> -<li> -n_map- -<tt>std::map</tt></li> -<li> -splay_tree_map- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NTM_res_div"> -<div id="NTM_msvc"> -<div id="NTM_tree_text_lor_find_timing_test"> -<div id="NTM_assoc"> -<div id="NTM_Native_and_tree-based_locality-of-reference_text_find_timing_test_using__tt_find_455tt_"><div style="border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTM" id="NTM"><img src="tree_text_lor_find_timing_test_msvc.png" alt="no image" /></a></h6>NTM: Native and tree-based locality-of-reference text find timing test using <tt>find</tt> - <a href="assoc_performance_tests.html#msvc">msvc++</a><p>In the above figure, the names in the legends have the following meaning:</p> -<ol> -<li> -ov_tree_map- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -</li> -<li> -rb_tree_map- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="rb_tree_tag.html"><tt>rb_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -</li> -<li> -n_map- -<tt>std::map</tt></li> -<li> -splay_tree_map- -<a href="tree.html"><tt>tree</tt></a> - with <tt>Tag</tt> = <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a> -, and <tt>Node_Update</tt> = <a href="null_tree_node_update.html"><tt>null_tree_node_update</tt></a> -</li> -</ol> -</div><div style="width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<div id="NTL_res_div"> -<div id="NTL_local"> -<div id="NTL_tree_text_lor_find_timing_test"> -<div id="NTL_assoc"> -<div id="NTL_Native_and_tree-based_locality-of-reference_text_find_timing_test_using__tt_find_455tt_"><div style = "border-style: dotted; border-width: 1px; border-color: lightgray"><h6 class="c1"><a name="NTL" id= "NTL"><img src="tree_text_lor_find_timing_test_local.png" alt="no image" /></a></h6>NTL: Native and tree-based locality-of-reference text find timing test using <tt>find</tt> - <a href = "assoc_performance_tests.html#local">local</a></div><div style = "width: 100%; height: 20px"></div></div> -</div> -</div> -</div> -</div> -<h2><a name="observations" id="observations">Observations</a></h2> -<p>For this setting, an ordered-vector tree ( <a href="tree.html"><tt>tree</tt></a> - with <tt>Tag =</tt> <a href="ov_tree_tag.html"><tt>ov_tree_tag</tt></a> ), a - red-black tree ( <a href="tree.html"><tt>tree</tt></a> - with <tt>Tag =</tt> <a href="splay_tree_tag.html"><tt>rb_tree_tag</tt></a> ), and the - native red-black tree all share approximately the same - performance.</p> -<p>A splay tree ( <a href="tree.html"><tt>tree</tt></a> - with <tt>Tag =</tt> <a href="splay_tree_tag.html"><tt>splay_tree_tag</tt></a> ) does - much better, since each (successful) find "bubbles" the - corresponding node to the root of the tree.</p> -<p><a href="assoc_performance_tests.html#tree_like_based_types">Observations::Tree-Like-Based - Container Types</a> summarizes some observations on tree-based - and trie-based containers.</p> -</div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_timing_test_gcc.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_timing_test_gcc.png Binary files differdeleted file mode 100644 index cf5174d99c1..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_timing_test_gcc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_timing_test_local.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_timing_test_local.png Binary files differdeleted file mode 100644 index 960803b05f5..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_timing_test_local.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_timing_test_msvc.png b/libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_timing_test_msvc.png Binary files differdeleted file mode 100644 index 583a027f3dc..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/tree_text_lor_find_timing_test_msvc.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/trie.html b/libstdc++-v3/doc/html/ext/pb_ds/trie.html deleted file mode 100644 index 32a2ab1b504..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/trie.html +++ /dev/null @@ -1,489 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>trie Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>trie</tt> Interface</h1> - - <p>A concrete basic trie-based associative container.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/assoc_container.hpp"><tt>assoc_container.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Template Parameters</a></h2> - - <table class="c1" width="100%" border="1" summary= - "Template Parameters"> - <tr> - <td width="20%" align="left"><b>Parameter</b></td> - - <td width="50%" align="left"><b>Description</b></td> - - <td width="30%" align="left"><b>Default Value</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="Key2501" id="Key2501"><b>typename</b> Key</a> -</pre> - </td> - - <td> - <p>Key type.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Mapped318655" id="Mapped318655"><b>typename</b> Mapped</a> -</pre> - </td> - - <td> - <p>Mapped type.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="E_Access_Traits686553840" id= -"E_Access_Traits686553840"><b>class</b> E_Access_Traits </a> -</pre> - </td> - - <td> - <p>Element-access traits.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Tag278938" id="Tag278938"><b>class</b> Tag </a> -</pre> - </td> - - <td> - <p>Data-structure tag.</p> - </td> - - <td><a href="pat_trie_tag.html"><span class= - "c2"><tt>pat_trie_tag</tt></span></a></td> - </tr> - - <tr> - <td> - <pre> -<a name="Node_Update841554648" id= -"Node_Update841554648"><b>template</b>< - <b>typename</b> Const_Node_Iterator, - <b>typename</b> Node_Iterator, - <b>class</b> E_Access_Traits_, - <b>typename</b> Allocator_> -<b>class</b> Node_Update </a> -</pre> - </td> - - <td> - <p>Node updater type.</p> - - <p><a href= - "tree_based_containers.html#invariants">Design::Tree-Based - Containers::Node Invariants</a> explains this - concept.</p> - </td> - - <td><a href="null_trie_node_update.html"><span class= - "c2"><tt>null_trie_node_update</tt></span></a></td> - </tr> - - <tr> - <td> - <pre> -<a name="Allocator35940069" id= -"Allocator35940069"><b>class</b> Allocator </a> -</pre> - </td> - - <td> - <p>Allocator type.</p> - </td> - - <td> - <pre> -std::allocator<<b>char</b>> -</pre> - </td> - </tr> - </table> - - <h2><a name="link2" id="link2">Public Types and - Constants</a></h2> - - <h3><a name="link3" id="link3">Policy Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="e_access_traits1948190928" id= -"e_access_traits1948190928">e_access_traits</a> -</pre> - </td> - - <td> - <pre> -<a href="#E_Access_Traits686553840"><tt>E_Access_Traits</tt></a> -</pre> - </td> - - <td> - <p>Element access traits type.</p> - </td> - </tr> - </table> - - <h3><a name="link4" id="link4">Iterator Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="const_node_iterator4205924553" id= -"const_node_iterator4205924553">const_node_iterator</a> -</pre> - </td> - - <td> - <pre> -<a href= -"trie_const_node_iterator.html"><span class= -"c2"><tt>const_node_iterator</tt></span></a> -</pre> - </td> - - <td> - <p>Const node iterator.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="node_iterator3431975247" id= -"node_iterator3431975247">node_iterator</a> -</pre> - </td> - - <td> - <pre> -<a href="trie_node_iterator.html"><span class= -"c2"><tt>node_iterator</tt></span></a> -</pre> - </td> - - <td> - <p>Node iterator.</p> - </td> - </tr> - </table> - - <h2><a name="link5" id="link5">Public Methods</a></h2> - - <h3><a name="link6" id="link6">Constructors, Destructor, and - Related</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> - trie - () -</pre> - </td> - - <td> - <p>Default constructor.</p> - </td> - </tr> - - <tr> - <td> - <pre> - trie - (<b>const</b> <a href= -"#E_Access_Traits686553840"><tt>E_Access_Traits</tt></a> &r_e_access_traits) -</pre> - </td> - - <td> - <p>Constructor taking some policy objects. <span class= - "c1"><tt>r_e_access_traits</tt></span> will be copied by - the <a href= - "#E_Access_Traits686553840"><tt>E_Access_Traits</tt></a> - object of the container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>template</b>< - <b>class</b> It> - trie - (It first_it, - It last_it) -</pre> - </td> - - <td> - <p>Constructor taking iterators to a range of - value_types. The value_types between <span class= - "c1"><tt>first_it</tt></span> and <span class= - "c1"><tt>last_it</tt></span> will be inserted into the - container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>template</b>< - <b>class</b> It> - trie - (It first_it, - It last_it, - <b>const</b> <a href= -"#E_Access_Traits686553840"><tt>E_Access_Traits</tt></a> &r_e_access_traits) -</pre> - </td> - - <td> - <p>Constructor taking iterators to a range of value_types - and some policy objects. The value_types between - <span class="c1"><tt>first_it</tt></span> and - <span class="c1"><tt>last_it</tt></span> will be inserted - into the container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> - trie - (<b>const</b> <span class= -"c2"><tt>trie</tt></span> &other) -</pre> - </td> - - <td> - <p>Copy constructor.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> - ~trie - () -</pre> - </td> - - <td> - <p>Destructor.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<span class="c2"><tt>trie</tt></span> & - <b>operator</b>= - (<b>const</b> <span class= -"c2"><tt>trie</tt></span> &other) -</pre> - </td> - - <td> - <p>Assignment operator.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>void</b> - swap - (<span class= -"c2"><tt>trie</tt></span> &other) -</pre> - </td> - - <td> - <p>Swaps content.</p> - </td> - </tr> - </table> - - <h3><a name="link7" id="link7">Policy Access Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a href= -"#e_access_traits1948190928"><tt>e_access_traits</tt></a> & - get_e_access_traits - () -</pre> - </td> - - <td> - <p>Access to the comb_hash_fn object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a href= -"#e_access_traits1948190928"><tt>e_access_traits</tt></a> & - get_e_access_traits - () <b>const</b> -</pre> - </td> - - <td> - <p>Const access to the comb_hash_fn object.</p> - </td> - </tr> - </table> - - <h3><a name="link8" id="link8">Node-Iteration Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="#node_iterator3431975247"><tt>node_iterator</tt></a> - node_begin - () -</pre> - </td> - - <td> - <p>Returns a <a href= - "#node_iterator3431975247"><tt>node_iterator</tt></a> - corresponding to the node at the root of the trie.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a href= -"#const_node_iterator4205924553"><tt>const_node_iterator</tt></a> - node_begin - () <b>const</b> -</pre> - </td> - - <td> - <p>Returns a <a href= - "#const_node_iterator4205924553"><tt>const_node_iterator</tt></a> - corresponding to the node at the root of the trie.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a href="#node_iterator3431975247"><tt>node_iterator</tt></a> - node_end - () -</pre> - </td> - - <td> - <p>Returns a <a href= - "#node_iterator3431975247"><tt>node_iterator</tt></a> - corresponding to a node just after a leaf of the - trie.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a href= -"#const_node_iterator4205924553"><tt>const_node_iterator</tt></a> - node_end - () <b>const</b> -</pre> - </td> - - <td> - <p>Returns a <a href= - "#const_node_iterator4205924553"><tt>const_node_iterator</tt></a> - corresponding to a node just after a leaf of the - trie.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/trie_based_containers.html b/libstdc++-v3/doc/html/ext/pb_ds/trie_based_containers.html deleted file mode 100644 index 72bdd069779..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/trie_based_containers.html +++ /dev/null @@ -1,241 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>Trie-Based Containers</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1>Trie Design</h1> - - <h2><a name="overview" id="overview">Overview</a></h2> - - <p>The trie-based container has the following declaration:</p> - <pre> -<b>template</b>< - <b>typename</b> Key, - <b>typename</b> Mapped, - <b>typename</b> Cmp_Fn = std::less<Key>, - <b>typename</b> Tag = <a href="pat_trie_tag.html">pat_trie_tag</a>, - <b>template</b>< - <b>typename</b> Const_Node_Iterator, - <b>typename</b> Node_Iterator, - <b>typename</b> E_Access_Traits_, - <b>typename</b> Allocator_> - <b>class</b> Node_Update = <a href= -"null_trie_node_update.html">null_trie_node_update</a>, - <b>typename</b> Allocator = std::allocator<<b>char</b>> > -<b>class</b> <a href= -"trie.html">trie</a>; -</pre> - - <p>The parameters have the following meaning:</p> - - <ol> - <li><tt>Key</tt> is the key type.</li> - - <li><tt>Mapped</tt> is the mapped-policy, and is explained in - <a href="tutorial.html#assoc_ms">Tutorial::Associative - Containers::Associative Containers Others than Maps</a>.</li> - - <li><tt>E_Access_Traits</tt> is described in <a href= - "#e_access_traits">Element-Access Traits</a>.</li> - - <li><tt>Tag</tt> specifies which underlying data structure - to use, and is described shortly.</li> - - <li><tt>Node_Update</tt> is a policy for updating node - invariants. This is described in <a href="#invariants">Node - Invariants</a>.</li> - - <li><tt>Allocator</tt> is an allocator - type.</li> - </ol> - - <p>The <tt>Tag</tt> parameter specifies which underlying - data structure to use. Instantiating it by <a href= - "pat_trie_tag.html">pat_trie_tag</a>, specifies an - underlying PATRICIA trie (explained shortly); any other tag is - currently illegal.</p> - <hr /> - - <p>Following is a description of a (PATRICIA) trie - (<tt>pb_ds</tt> follows specifically [<a href= - "references.html#okasaki98mereable">okasaki98mereable</a>] and - [<a href= - "references.html#filliatre2000ptset">filliatre2000ptset</a>]).</p> - - <p>A (PATRICIA) trie is similar to a tree, but with the - following differences:</p> - - <ol> - <li>It explicitly views keys as a sequence of elements. - <i>E.g.</i>, a trie can view a string as a sequence of - characters; a trie can view a number as a sequence of - bits.</li> - - <li>It is not (necessarily) binary. Each node has fan-out <i>n - + 1</i>, where <i>n</i> is the number of distinct - elements.</li> - - <li>It stores values only at leaf nodes.</li> - - <li>Internal nodes have the properties that A) each has at - least two children, and B) each shares the same prefix with - any of its descendant.</li> - </ol> - - <p><a href="#e_access_traits">Element-Access Traits</a> shows - an example of such a trie.</p> - - <p>A (PATRICIA) trie has some useful properties:</p> - - <ol> - <li>It can be configured to use large node fan-out, giving it - very efficient find performance (albeit at insertion - complexity and size).</li> - - <li>It works well for common-prefix keys.</li> - - <li>It can support efficiently queries such as which keys - match a certain prefix. This is sometimes useful in - file systems and routers.</li> - </ol> - - <p>(We would like to thank Matt Austern for the suggestion to - include tries.)</p> - - <h2><a name="e_access_traits" id= - "e_access_traits">Element-Access Traits</a></h2> - - <p>A trie inherently views its keys as sequences of elements. - For example, a trie can view a string as a sequence of - characters. A trie needs to map each of <i>n</i> elements to a - number in <i>{0, n - 1}</i>. For example, a trie can map a - character <tt>c</tt> to - <tt>static_cast<size_t>(c)</tt>.</p> - - <p>Seemingly, then, a trie can assume that its keys support - (const) iterators, and that the <tt>value_type</tt> of this - iterator can be cast to a <tt>size_t</tt>. There are several - reasons, though, to decouple the mechanism by which the trie - accesses its keys' elements from the trie:</p> - - <ol> - <li>In some cases, the numerical value of an element is - inappropriate. Consider a trie storing DNA strings. It is - logical to use a trie with a fan-out of <i>5 = 1 + |{'A', 'C', - 'G', 'T'}|</i>. This requires mapping 'T' to 3, though.</li> - - <li>In some cases the keys' iterators are different than what - is needed. For example, a trie can be used to search for - common <u>suffixes</u>, by using strings' - <tt>reverse_iterator</tt>. As another example, a trie mapping - UNICODE strings would have a huge fan-out if each node would - branch on a UNICODE character; instead, one can define an - iterator iterating over 8-bit (or less) groups.</li> - </ol> - - <p><a href= - "trie.html">trie</a> is, - consequently, parametrized by <tt>E_Access_Traits</tt> - - traits which instruct how to access sequences' elements. - <a href= - "string_trie_e_access_traits.html"><tt>string_trie_e_access_traits</tt></a> - is a traits class for strings. Each such traits define some - types, <i>e.g.</i>,</p> - <pre> -<b>typename</b> E_Access_Traits::const_iterator -</pre> - - <p>is a const iterator iterating over a key's elements. The - traits class must also define methods for obtaining an iterator - to the first and last element of a key.</p> - - <p>Figure <a href="#pat_trie">A PATRICIA trie</a> shows a - (PATRICIA) trie resulting from inserting the words: "I wish - that I could ever see a poem lovely as a trie" (which, - unfortunately, does not rhyme).</p> - - <p>The leaf nodes contain values; each internal node contains - two <tt><b>typename</b> E_Access_Traits::const_iterator</tt> - objects, indicating the maximal common prefix of all keys in - the sub-tree. For example, the shaded internal node roots a - sub-tree with leafs "a" and "as". The maximal common prefix is - "a". The internal node contains, consequently, to const - iterators, one pointing to <tt>'a'</tt>, and the other to - <tt>'s'</tt>.</p> - - <h6 class="c1"><a name="pat_trie" id="pat_trie"><img src= - "pat_trie.png" alt="no image" /></a></h6> - - <h6 class="c1">A PATRICIA trie.</h6> - - <h2><a name="invariants" id="invariants">Node - Invariants</a></h2> - - <p>Trie-based containers support node invariants, as do - tree-based containers (see <a href= - "tree_based_containers.html#invariants">Tree-Based - Containers::Node Invariants</a>). There are two minor - differences, though, which, unfortunately, thwart sharing them - sharing the same node-updating policies:</p> - - <ol> - <li>A trie's <tt>Node_Update</tt> template-template - parameter is parametrized by <tt>E_Access_Traits</tt>, while - a tree's <tt>Node_Update</tt> template-template parameter is - parametrized by <tt>Cmp_Fn</tt>.</li> - - <li>Tree-based containers store values in all nodes, while - trie-based containers (at least in this implementation) store - values in leafs.</li> - </ol> - - <p>Figure <a href="#trie_node_update_cd">A trie and its update - policy</a> shows the scheme, as well as some predefined - policies (which are explained below).</p> - - <h6 class="c1"><a name="trie_node_update_cd" id= - "trie_node_update_cd"><img src= - "trie_node_update_policy_cd.png" alt="no image" /></a></h6> - - <h6 class="c1">A trie and its update policy.</h6> - - <p><tt>pb_ds</tt> offers the following pre-defined trie node - updating policies:</p> - - <ol> - <li><a href= - "trie_order_statistics_node_update.html"><tt>trie_order_statistics_node_update</tt></a> - supports order statistics.</li> - - <li><a href= - "trie_prefix_search_node_update.html"><tt>trie_prefix_search_node_update</tt></a> - supports searching for ranges that match a given prefix. See - <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/trie_prefix_search.cc"><tt>trie_prefix_search.cc</tt></a>.</li> - - <li><a href= - "null_trie_node_update.html"><tt>null_trie_node_update</tt></a> - is the null node updater.</li> - </ol> - - <h2><a name="add_methods" id="add_methods">Additional - Methods</a></h2> - - <p>Trie-based containers support split and join methods; the - rationale is equal to that of tree-based containers supporting - these methods (see <a href= - "tree_based_containers.html#add_methods">Tree-Based - Containers::Additional Methods</a>).</p> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/trie_const_node_iterator.html b/libstdc++-v3/doc/html/ext/pb_ds/trie_const_node_iterator.html deleted file mode 100644 index 0869a7c2f5b..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/trie_const_node_iterator.html +++ /dev/null @@ -1,478 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>trie::const_node_iterator - Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt><span class= - "c2"><tt>trie</tt></span>::const_node_iterator</tt> - Interface</h1> - - <p>Const node iterator.</p> - - <p>This is an "iterator to an iterator" - it iterates over - nodes, and de-referencing it returns one of the tree's const - iterators</p> - - <h2><a name="link1" id="link1">Public Types and - Constants</a></h2> - - <h3><a name="link2" id="link2">General Container - Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="size_type55424436" id="size_type55424436">size_type</a> -</pre> - </td> - - <td> - <pre> -<a href="container_base.html#size_type55424436"><span class= -"c2"><tt>container_base</tt></span>::size_type</a> -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - </tr> - </table> - - <h3><a name="link3" id="link3">Iterator Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="iterator_category2821876439" id= -"iterator_category2821876439">iterator_category</a> -</pre> - </td> - - <td> - <pre> -trivial_iterator_tag -</pre> - </td> - - <td> - <p>Category.</p> - - <p>This tag identifies that the iterator has none of the - STL's iterators' movement abilities.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="difference_type868028452" id= -"difference_type868028452">difference_type</a> -</pre> - </td> - - <td> - <pre class="c2"> -void -</pre> - </td> - - <td> - <p>Difference type.</p> - </td> - </tr> - </table> - - <h3><a name="link4" id="link4">Value-Type Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="value_type279018186" id= -"value_type279018186">value_type</a> -</pre> - </td> - - <td> - <pre> -<a href= -"container_base.html#const_iterator98626788"><span class="c2"><tt>container_base</tt></span>::const_iterator</a> -</pre> - </td> - - <td> - <p>Iterator's value type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="reference54418471" id="reference54418471">reference</a> -</pre> - </td> - - <td> - <pre> -<a href="#value_type279018186"><tt>value_type</tt></a> -</pre> - </td> - - <td> - <p>Iterator's reference type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="const_reference495461441" id= -"const_reference495461441">const_reference</a> -</pre> - </td> - - <td> - <pre> -<a href="#value_type279018186"><tt>value_type</tt></a> -</pre> - </td> - - <td> - <p>Iterator's const <a href= - "#reference54418471"><tt>reference</tt></a> type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="e_access_traits1948190928" id= -"e_access_traits1948190928">e_access_traits</a> -</pre> - </td> - - <td> - <pre> -<a href= -"trie.html#e_access_traits1948190928"><span class="c2"><tt>trie</tt></span>::e_access_traits</a> -</pre> - </td> - - <td> - <p>Element access traits.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="const_e_iterator2450008044" id= -"const_e_iterator2450008044">const_e_iterator</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#e_access_traits1948190928"><tt>e_access_traits</tt></a>::const_iterator -</pre> - </td> - - <td> - <p>A key's element const iterator.</p> - </td> - </tr> - </table> - - <h3><a name="link5" id="link5">Metadata Definitions</a></h3> - - <p>These are only defined if <a href= - "basic_tree.html#Node_Update841554648"><span class="c2"> - <tt>basic_tree</tt></span>::Node_Update</a> - is not <a href="null_trie_node_update.html"><span class= - "c2"><tt>null_trie_node_update</tt></span></a></p> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="metadata_type2849297114" id= -"metadata_type2849297114">metadata_type</a> -</pre> - </td> - - <td> - <pre> -<tt><b>typename</b></tt> <a href= -"basic_tree.html#Node_Update841554648"><span class="c2"><tt>basic_tree</tt></span>::Node_Update</a><tt>::metadata_type</tt> -</pre> - </td> - - <td> - <p>Metadata type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="const_metadata_reference1108857465" id= -"const_metadata_reference1108857465">const_metadata_reference</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> Allocator::<b>template</b> rebind< - <a href= -"#metadata_type2849297114"><tt>metadata_type</tt></a>>::other::<a href="#const_reference495461441"><tt>const_reference</tt></a> -</pre> - </td> - - <td> - <p>Const metadata <a href= - "#reference54418471"><tt>reference</tt></a> type.</p> - </td> - </tr> - </table> - - <h2><a name="link6" id="link6">Public Methods</a></h2> - - <h3><a name="link7" id="link7">Constructors, Destructor, and - Related</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> - const_node_iterator - () -</pre> - </td> - - <td> - <p>Default constructor.</p> - </td> - </tr> - </table> - - <h3><a name="link8" id="link8">Access Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> std::pair< - <a href= -"#const_e_iterator2450008044"><tt>const_e_iterator</tt></a>, - <a href= -"#const_e_iterator2450008044"><tt>const_e_iterator</tt></a>> - valid_prefix - () <b>const</b> -</pre> - </td> - - <td> - <p>Subtree valid prefix.</p> - - <p>Returns the common prefix range of all nodes in this - node's subtree.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href= -"#const_reference495461441"><tt>const_reference</tt></a> - <b>operator</b>* - () <b>const</b> -</pre> - </td> - - <td> - <p>Const access; returns the const iterator associated - with the current leaf.</p> - - <p>Should be called only for leaf nodes.</p> - </td> - </tr> - </table> - - <h3><a name="link9" id="link9">Metadata Access Methods</a></h3> - - <p>These are only defined if <a href= - "basic_tree.html#Node_Update841554648"><span class="c2"> - <tt>basic_tree</tt></span>::Node_Update</a> - is not <a href="null_trie_node_update.html"><span class= - "c2"><tt>null_trie_node_update</tt></span></a></p> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href= -"#const_metadata_reference1108857465"><tt>const_metadata_reference</tt></a> - get_metadata - () <b>const</b> -</pre> - </td> - - <td> - <p>Metadata access.</p> - </td> - </tr> - </table> - - <h3><a name="link10" id="link10">Movement Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a> - num_children - () <b>const</b> -</pre> - </td> - - <td> - <p>Returns the number of children in the corresponding - node.</p> - - <p>If the number of children is 0, then the corresponding - node is a leaf; otherwise, it is not a leaf.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<span class="c2"><tt>const_node_iterator</tt></span> - get_child - (<a href= -"#size_type55424436"><tt>size_type</tt></a> i) <b>const</b> -</pre> - </td> - - <td> - <p>Returns a const node iterator to the corresponding - node's <span class="c1"><tt>i</tt></span>-th child.</p> - </td> - </tr> - </table> - - <h3><a name="link11" id="link11">Comparison Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>bool</b> - <b>operator</b>== - (<b>const</b> <span class= -"c2"><tt>const_node_iterator</tt></span> &other) <b>const</b> -</pre> - </td> - - <td> - <p>Compares content to a different iterator object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>bool</b> - <b>operator</b>!= - (<b>const</b> <span class= -"c2"><tt>const_node_iterator</tt></span> &other) <b>const</b> -</pre> - </td> - - <td> - <p>Compares content (negatively) to a different iterator - object.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/trie_node_iterator.html b/libstdc++-v3/doc/html/ext/pb_ds/trie_node_iterator.html deleted file mode 100644 index 55029c4cb91..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/trie_node_iterator.html +++ /dev/null @@ -1,235 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>trie::node_iterator Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt><span class= - "c2"><tt>trie</tt></span>::node_iterator</tt> - Interface</h1> - - <p>Node iterator.</p> - - <p>This is an "iterator to an iterator" - it iterates over - nodes, and de-referencing it returns one of the tree's - iterators</p> - - <h2><a name="link1" id="link1">Base Classes</a></h2> - - <table class="c1" width="100%" border="1" summary="Bases"> - <tr> - <td width="80%" align="left"><b>Class</b></td> - - <td width="20%" align="left"><b>Derivation Type</b></td> - </tr> - - <tr> - <td> - <pre> -<a href= -"trie.html#const_node_iterator4205924553"><span class="c2"><tt>trie</tt></span>::const_node_iterator</a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - </table> - - <h2><a name="link2" id="link2">Public Types and - Constants</a></h2> - - <h3><a name="link3" id="link3">General Container - Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="size_type55424436" id="size_type55424436">size_type</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"trie.html#const_node_iterator4205924553"><span class="c2"><tt>trie</tt></span>::const_node_iterator</a>::size_type -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - </tr> - </table> - - <h3><a name="link4" id="link4">Value-Type Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="value_type279018186" id= -"value_type279018186">value_type</a> -</pre> - </td> - - <td> - <pre> -<a href="container_base.html#iterator10418194"><span class= -"c2"><tt>container_base</tt></span>::iterator</a> -</pre> - </td> - - <td> - <p>Iterator's value type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="reference54418471" id="reference54418471">reference</a> -</pre> - </td> - - <td> - <pre> -<a href="#value_type279018186"><tt>value_type</tt></a> -</pre> - </td> - - <td> - <p>Iterator's reference type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="const_reference495461441" id= -"const_reference495461441">const_reference</a> -</pre> - </td> - - <td> - <pre> -<a href="#value_type279018186"><tt>value_type</tt></a> -</pre> - </td> - - <td> - <p>Iterator's const <a href= - "#reference54418471"><tt>reference</tt></a> type.</p> - </td> - </tr> - </table> - - <h2><a name="link5" id="link5">Public Methods</a></h2> - - <h3><a name="link6" id="link6">Constructors, Destructor, and - Related</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> - pat_trie_node_it_ - () -</pre> - </td> - - <td> - <p>Default constructor.</p> - </td> - </tr> - </table> - - <h3><a name="link7" id="link7">Access Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href="#reference54418471"><tt>reference</tt></a> - <b>operator</b>* - () <b>const</b> -</pre> - </td> - - <td> - <p>Access; returns the iterator associated with the - current leaf.</p> - - <p>Should be called only for leaf nodes.</p> - </td> - </tr> - </table> - - <h3><a name="link8" id="link8">Movement Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<span class="c2"><tt>node_iterator</tt></span> - get_child - (<a href= -"#size_type55424436"><tt>size_type</tt></a> i) <b>const</b> -</pre> - </td> - - <td> - <p>Returns a node iterator to the corresponding node's - <span class="c1"><tt>i</tt></span>-th child.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/trie_order_statistics_node_update.html b/libstdc++-v3/doc/html/ext/pb_ds/trie_order_statistics_node_update.html deleted file mode 100644 index 66aab26d799..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/trie_order_statistics_node_update.html +++ /dev/null @@ -1,770 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>trie_order_statistics_node_update Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>trie_order_statistics_node_update</tt> Interface</h1> - - <p>Functor updating ranks of entrees.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/trie_policy.hpp"><tt>trie_policy.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Template Parameters</a></h2> - - <table class="c1" width="100%" border="1" summary= - "Template Parameters"> - <tr> - <td width="20%" align="left"><b>Parameter</b></td> - - <td width="50%" align="left"><b>Description</b></td> - - <td width="30%" align="left"><b>Default Value</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="Const_Node_Iterator1933878761" id= -"Const_Node_Iterator1933878761"><b>class</b> Const_Node_Iterator</a> -</pre> - </td> - - <td> - <p>Const node iterator type.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Node_Iterator4206909839" id= -"Node_Iterator4206909839"><b>class</b> Node_Iterator</a> -</pre> - </td> - - <td> - <p>Node iterator type.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="E_Access_Traits686553840" id= -"E_Access_Traits686553840"><b>class</b> E_Access_Traits</a> -</pre> - </td> - - <td> - <p>Comparison functor.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Allocator35940069" id= -"Allocator35940069"><b>class</b> Allocator</a> -</pre> - </td> - - <td> - <p>Allocator type.</p> - </td> - - <td>-</td> - </tr> - </table> - - <h2><a name="link2" id="link2">Public Types and - Constants</a></h2> - - <h3><a name="link3" id="link3">Policy Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="e_access_traits1948190928" id= -"e_access_traits1948190928">e_access_traits</a> -</pre> - </td> - - <td> - <pre> -<a href="#E_Access_Traits686553840"><tt>E_Access_Traits</tt></a> -</pre> - </td> - - <td> - <p>Element access traits.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="const_e_iterator2450008044" id= -"const_e_iterator2450008044">const_e_iterator</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#e_access_traits1948190928"><tt>e_access_traits</tt></a>::const_iterator -</pre> - </td> - - <td> - <p>Const element iterator.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="allocator48440069" id="allocator48440069">allocator</a> -</pre> - </td> - - <td> - <pre> -<a href="#Allocator35940069"><tt>Allocator</tt></a> -</pre> - </td> - - <td> - <p><a href="#Allocator35940069"><tt>Allocator</tt></a> - type.</p> - </td> - </tr> - </table> - - <h3><a name="link4" id="link4">General Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="size_type55424436" id="size_type55424436">size_type</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#allocator48440069"><tt>allocator</tt></a>::size_type -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - </tr> - </table> - - <h3><a name="link5" id="link5">Key-Type Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="key_type10393186" id="key_type10393186">key_type</a> -</pre> - </td> - - <td> - <pre> -The instantiating container's key type. -</pre> - </td> - - <td> - <p>Key type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="const_key_reference3185471705" id= -"const_key_reference3185471705">const_key_reference</a> -</pre> - </td> - - <td> - <pre> -The instantiating container's const key reference type. -</pre> - </td> - - <td> - <p>Const key reference.</p> - </td> - </tr> - </table> - - <h3><a name="link6" id="link6">Metadata-Type - Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="metadata_type2849297114" id= -"metadata_type2849297114">metadata_type</a> -</pre> - </td> - - <td> - <pre> -<a href="#size_type55424436"><tt>size_type</tt></a> -</pre> - </td> - - <td> - <p>Metadata type.</p> - </td> - </tr> - </table> - - <h3><a name="link7" id="link7">Iterator Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="const_node_iterator4205924553" id= -"const_node_iterator4205924553">const_node_iterator</a> -</pre> - </td> - - <td> - <pre> -<a href= -"#Const_Node_Iterator1933878761"><tt>Const_Node_Iterator</tt></a> -</pre> - </td> - - <td> - <p>Const node iterator type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="node_iterator3431975247" id= -"node_iterator3431975247">node_iterator</a> -</pre> - </td> - - <td> - <pre> -<a href="#Node_Iterator4206909839"><tt>Node_Iterator</tt></a> -</pre> - </td> - - <td> - <p>Node iterator type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="const_iterator98626788" id= -"const_iterator98626788">const_iterator</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#const_node_iterator4205924553"><tt>const_node_iterator</tt></a>::value_type -</pre> - </td> - - <td> - <p>Const iterator type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="iterator10418194" id="iterator10418194">iterator</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#node_iterator3431975247"><tt>node_iterator</tt></a>::value_type -</pre> - </td> - - <td> - <p>Iterator type.</p> - </td> - </tr> - </table> - - <h2><a name="link8" id="link8">Public Methods</a></h2> - - <h3><a name="link9" id="link9">Find-Type Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href= -"#const_iterator98626788"><tt>const_iterator</tt></a> - find_by_order - (<a href= -"#size_type55424436"><tt>size_type</tt></a> order) <b>const</b> -</pre> - </td> - - <td> - <p>Finds an entry by order. Returns a <a href= - "#const_iterator98626788"><tt>const_iterator</tt></a> to - the entry with the order <span class= - "c1"><tt>order</tt></span>, or a <a href= - "#const_iterator98626788"><tt>const_iterator</tt></a> to - the container object's end if <span class= - "c1"><tt>order</tt></span> is at least the size of the - container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href="#iterator10418194"><tt>iterator</tt></a> - find_by_order - (<a href="#size_type55424436"><tt>size_type</tt></a> order) -</pre> - </td> - - <td> - <p>Finds an entry by order. Returns an <a href= - "#iterator10418194"><tt>iterator</tt></a> to the entry - with the order <span class="c1"><tt>order</tt></span>, or - an <a href="#iterator10418194"><tt>iterator</tt></a> to - the container object's end if <span class= - "c1"><tt>order</tt></span> is at least the size of the - container object.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a> - order_of_key - (<a href= -"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key) <b>const</b> -</pre> - </td> - - <td> - <p>Returns the order of a key within a sequence. For - example, if <span class="c1"><tt>r_key</tt></span> is the - smallest key, this method will return 0; if <span class= - "c1"><tt>r_key</tt></span> is a key between the smallest - and next key, this method will return 1; if <span class= - "c1"><tt>r_key</tt></span> is a key larger than the - largest key, this method will return the size of r_c.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <a href="#size_type55424436"><tt>size_type</tt></a> - order_of_prefix - (<a href= -"#const_e_iterator2450008044"><tt>const_e_iterator</tt></a> b, - <a href= -"#const_e_iterator2450008044"><tt>const_e_iterator</tt></a> e) <b>const</b> -</pre> - </td> - - <td> - <p>Returns the order of a prefix within a sequence. For - <span class="c1"><tt>e</tt></span>example, if [b, - <span class="c1"><tt>e</tt></span>] is the smallest - prefix, this method will return 0; if r_key is a key - <span class="c1"><tt>b</tt></span>between the smallest and - next key, this method will return 1; if r_key is a key - larger than the largest key, this method will return the - size of r_c.</p> - </td> - </tr> - </table> - - <h2><a name="link10" id="link10">Protected Types and - Constants</a></h2> - - <h3><a name="link11" id="link11">Value-Type - Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="const_reference495461441" id= -"const_reference495461441">const_reference</a> -</pre> - </td> - - <td> - <pre> -The instantiating container's const reference type. -</pre> - </td> - - <td> - <p>Const reference to the container's value-type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="const_pointer878814947" id= -"const_pointer878814947">const_pointer</a> -</pre> - </td> - - <td> - <pre> -The instantiating container's const pointer type. -</pre> - </td> - - <td> - <p>Const pointer to the container's value-type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="const_metadata_reference1108857465" id= -"const_metadata_reference1108857465">const_metadata_reference</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#Allocator35940069"><tt>Allocator</tt></a>::<b>template</b> rebind< - <a href= -"#metadata_type2849297114"><tt>metadata_type</tt></a>>::other::<a href="#const_reference495461441"><tt>const_reference</tt></a> -</pre> - </td> - - <td> - <p>Const metadata reference.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="metadata_reference583863863" id= -"metadata_reference583863863">metadata_reference</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#Allocator35940069"><tt>Allocator</tt></a>::<b>template</b> rebind< - <a href= -"#metadata_type2849297114"><tt>metadata_type</tt></a>>::other::reference -</pre> - </td> - - <td> - <p>Metadata reference.</p> - </td> - </tr> - </table> - - <h2><a name="link12" id="link12">Protected Methods</a></h2> - - <h3><a name="link13" id="link13">Operators</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - <b>operator</b>() - (<a href= -"#node_iterator3431975247"><tt>node_iterator</tt></a> node_it, - <a href= -"#const_node_iterator4205924553"><tt>const_node_iterator</tt></a> end_nd_it) <b>const</b> -</pre> - </td> - - <td> - <p>Updates the rank of a node through a <a href= - "#node_iterator3431975247"><tt>node_iterator</tt></a> - <span class="c1"><tt>node_it</tt></span>; <span class= - "c1"><tt>end_nd_it</tt></span> is the end node <a href= - "#iterator10418194"><tt>iterator</tt></a>.</p> - </td> - </tr> - </table> - - <h3><a name="link14" id="link14">Constructors, destructor, and - related</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> - ~trie_order_statistics_node_update - () -</pre> - </td> - - <td> - <p>Destructor.</p> - </td> - </tr> - </table> - - <h2><a name="link15" id="link15">Private Methods</a></h2> - - <h3><a name="link16" id="link16">Overrides</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> <b>bool</b> - empty - () <b>const</b> = 0 -</pre> - </td> - - <td> - <p>Returns <tt><b>true</b></tt> if the container is - empty.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> <a href="#iterator10418194"><tt>iterator</tt></a> - begin - () = 0 -</pre> - </td> - - <td> - <p>Returns the <a href= - "#iterator10418194"><tt>iterator</tt></a> associated with - the trie's first element.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> <a href="#iterator10418194"><tt>iterator</tt></a> - end - () = 0 -</pre> - </td> - - <td> - <p>Returns the <a href= - "#iterator10418194"><tt>iterator</tt></a> associated with - the trie's just-after-last element.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> <a href= -"#const_node_iterator4205924553"><tt>const_node_iterator</tt></a> - node_begin - () <b>const</b> = 0 -</pre> - </td> - - <td> - <p>Returns the <a href= - "#const_node_iterator4205924553"><tt>const_node_iterator</tt></a> - associated with the trie's root node.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> <a href= -"#node_iterator3431975247"><tt>node_iterator</tt></a> - node_begin - () = 0 -</pre> - </td> - - <td> - <p>Returns the <a href= - "#node_iterator3431975247"><tt>node_iterator</tt></a> - associated with the trie's root node.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> <a href= -"#const_node_iterator4205924553"><tt>const_node_iterator</tt></a> - node_end - () <b>const</b> = 0 -</pre> - </td> - - <td> - <p>Returns the <a href= - "#const_node_iterator4205924553"><tt>const_node_iterator</tt></a> - associated with a just-after leaf node.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> <a href= -"#node_iterator3431975247"><tt>node_iterator</tt></a> - node_end - () = 0 -</pre> - </td> - - <td> - <p>Returns the <a href= - "#node_iterator3431975247"><tt>node_iterator</tt></a> - associated with a just-after leaf node.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> <a href= -"#e_access_traits1948190928"><tt>e_access_traits</tt></a> & - get_e_access_traits - () = 0 -</pre> - </td> - - <td> - <p>Access to the cmp_fn object.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/trie_prefix_search_node_update.html b/libstdc++-v3/doc/html/ext/pb_ds/trie_prefix_search_node_update.html deleted file mode 100644 index e136495c584..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/trie_prefix_search_node_update.html +++ /dev/null @@ -1,628 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>trie_prefix_search_node_update Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>trie_prefix_search_node_update</tt> Interface</h1> - - <p>A node updater that allows tries to be searched for the - range of values that match a certain prefix.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/trie_policy.hpp"><tt>trie_policy.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Template Parameters</a></h2> - - <table class="c1" width="100%" border="1" summary= - "Template Parameters"> - <tr> - <td width="20%" align="left"><b>Parameter</b></td> - - <td width="50%" align="left"><b>Description</b></td> - - <td width="30%" align="left"><b>Default Value</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="Const_Node_Iterator1933878761" id= -"Const_Node_Iterator1933878761"><b>class</b> Const_Node_Iterator</a> -</pre> - </td> - - <td> - <p>Const node iterator type.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Node_Iterator4206909839" id= -"Node_Iterator4206909839"><b>class</b> Node_Iterator</a> -</pre> - </td> - - <td> - <p>Node iterator type.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="E_Access_Traits686553840" id= -"E_Access_Traits686553840"><b>class</b> E_Access_Traits</a> -</pre> - </td> - - <td> - <p>Comparison functor.</p> - </td> - - <td>-</td> - </tr> - - <tr> - <td> - <pre> -<a name="Allocator35940069" id= -"Allocator35940069"><b>class</b> Allocator</a> -</pre> - </td> - - <td> - <p>Allocator type.</p> - </td> - - <td>-</td> - </tr> - </table> - - <h2><a name="link2" id="link2">Public Types and - Constants</a></h2> - - <h3><a name="link3" id="link3">Key-Type Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="key_type10393186" id="key_type10393186">key_type</a> -</pre> - </td> - - <td> - <pre> -The instantiating container's key type. -</pre> - </td> - - <td> - <p>Key type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="const_key_reference3185471705" id= -"const_key_reference3185471705">const_key_reference</a> -</pre> - </td> - - <td> - <pre> -The instantiating container's const key reference type. -</pre> - </td> - - <td> - <p>Const key reference.</p> - </td> - </tr> - </table> - - <h3><a name="link4" id="link4">Policy Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="e_access_traits1948190928" id= -"e_access_traits1948190928">e_access_traits</a> -</pre> - </td> - - <td> - <pre> -<a href="#E_Access_Traits686553840"><tt>E_Access_Traits</tt></a> -</pre> - </td> - - <td> - <p>Element access traits.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="const_e_iterator2450008044" id= -"const_e_iterator2450008044">const_e_iterator</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#e_access_traits1948190928"><tt>e_access_traits</tt></a>::const_iterator -</pre> - </td> - - <td> - <p>Const element iterator.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="allocator48440069" id="allocator48440069">allocator</a> -</pre> - </td> - - <td> - <pre> -<a href="#Allocator35940069"><tt>Allocator</tt></a> -</pre> - </td> - - <td> - <p><a href="#Allocator35940069"><tt>Allocator</tt></a> - type.</p> - </td> - </tr> - </table> - - <h3><a name="link5" id="link5">General Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="size_type55424436" id="size_type55424436">size_type</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#allocator48440069"><tt>allocator</tt></a>::size_type -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - </tr> - </table> - - <h3><a name="link6" id="link6">Metadata-Type - Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="metadata_type2849297114" id= -"metadata_type2849297114">metadata_type</a> -</pre> - </td> - - <td> - <pre> -__gnu_pbds::detail::null_node_metadata -</pre> - </td> - - <td> - <p>Metadata type.</p> - </td> - </tr> - </table> - - <h3><a name="link7" id="link7">Iterator Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="const_node_iterator4205924553" id= -"const_node_iterator4205924553">const_node_iterator</a> -</pre> - </td> - - <td> - <pre> -<a href= -"#Const_Node_Iterator1933878761"><tt>Const_Node_Iterator</tt></a> -</pre> - </td> - - <td> - <p>Const node iterator type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="node_iterator3431975247" id= -"node_iterator3431975247">node_iterator</a> -</pre> - </td> - - <td> - <pre> -<a href="#Node_Iterator4206909839"><tt>Node_Iterator</tt></a> -</pre> - </td> - - <td> - <p>Node iterator type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="const_iterator98626788" id= -"const_iterator98626788">const_iterator</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#const_node_iterator4205924553"><tt>const_node_iterator</tt></a>::value_type -</pre> - </td> - - <td> - <p>Const iterator type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="iterator10418194" id="iterator10418194">iterator</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#node_iterator3431975247"><tt>node_iterator</tt></a>::value_type -</pre> - </td> - - <td> - <p>Iterator type.</p> - </td> - </tr> - </table> - - <h2><a name="link8" id="link8">Public Methods</a></h2> - - <h3><a name="link9" id="link9">Find Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -std::pair< - <a href="#const_iterator98626788"><tt>const_iterator</tt></a>, - <a href= -"#const_iterator98626788"><tt>const_iterator</tt></a>> - prefix_range - (<a href= -"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key) <b>const</b> -</pre> - </td> - - <td> - <p>Finds the <tt><b>const</b></tt> <a href= - "#iterator10418194"><tt>iterator</tt></a> range - corresponding to all values whose prefixes match - <span class="c1"><tt>r_key</tt></span>.</p> - </td> - </tr> - - <tr> - <td> - <pre> -std::pair< - <a href="#iterator10418194"><tt>iterator</tt></a>, - <a href="#iterator10418194"><tt>iterator</tt></a>> - prefix_range - (<a href= -"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key) -</pre> - </td> - - <td> - <p>Finds the <a href= - "#iterator10418194"><tt>iterator</tt></a> range - corresponding to all values whose prefixes match - <span class="c1"><tt>r_key</tt></span>.</p> - </td> - </tr> - - <tr> - <td> - <pre> -std::pair< - <a href="#const_iterator98626788"><tt>const_iterator</tt></a>, - <a href= -"#const_iterator98626788"><tt>const_iterator</tt></a>> - prefix_range - (<a href= -"#const_e_iterator2450008044"><tt>const_e_iterator</tt></a> b, - <a href= -"#const_e_iterator2450008044"><tt>const_e_iterator</tt></a> e) <b>const</b> -</pre> - </td> - - <td> - <p>Finds the <tt><b>const</b></tt> <a href= - "#iterator10418194"><tt>iterator</tt></a> range - corresponding to all values whose prefixes match [b, - <span class="c1"><tt>e</tt></span>).</p> - </td> - </tr> - - <tr> - <td> - <pre> -std::pair< - <a href="#iterator10418194"><tt>iterator</tt></a>, - <a href="#iterator10418194"><tt>iterator</tt></a>> - prefix_range - (<a href= -"#const_e_iterator2450008044"><tt>const_e_iterator</tt></a> b, - <a href= -"#const_e_iterator2450008044"><tt>const_e_iterator</tt></a> e) -</pre> - </td> - - <td> - <p>Finds the <a href= - "#iterator10418194"><tt>iterator</tt></a> range - corresponding to all values whose prefixes match [b, - <span class="c1"><tt>e</tt></span>).</p> - </td> - </tr> - </table> - - <h2><a name="link10" id="link10">Protected Methods</a></h2> - - <h3><a name="link11" id="link11">Operators</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>void</b> - <b>operator</b>() - (<a href= -"#node_iterator3431975247"><tt>node_iterator</tt></a> node_it, - <a href= -"#const_node_iterator4205924553"><tt>const_node_iterator</tt></a> end_nd_it) <b>const</b> -</pre> - </td> - - <td> - <p>Called to update a node's metadata.</p> - </td> - </tr> - </table> - - <h2><a name="link12" id="link12">Private Methods</a></h2> - - <h3><a name="link13" id="link13">Overrides</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> <a href= -"#const_iterator98626788"><tt>const_iterator</tt></a> - end - () <b>const</b> = 0 -</pre> - </td> - - <td> - <p>Returns the <tt><b>const</b></tt> <a href= - "#iterator10418194"><tt>iterator</tt></a> associated with - the just-after last element.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> <a href="#iterator10418194"><tt>iterator</tt></a> - end - () = 0 -</pre> - </td> - - <td> - <p>Returns the <a href= - "#iterator10418194"><tt>iterator</tt></a> associated with - the just-after last element.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> <a href= -"#const_node_iterator4205924553"><tt>const_node_iterator</tt></a> - node_begin - () <b>const</b> = 0 -</pre> - </td> - - <td> - <p>Returns the <a href= - "#const_node_iterator4205924553"><tt>const_node_iterator</tt></a> - associated with the trie's root node.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> <a href= -"#node_iterator3431975247"><tt>node_iterator</tt></a> - node_begin - () = 0 -</pre> - </td> - - <td> - <p>Returns the <a href= - "#node_iterator3431975247"><tt>node_iterator</tt></a> - associated with the trie's root node.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> <a href= -"#const_node_iterator4205924553"><tt>const_node_iterator</tt></a> - node_end - () <b>const</b> = 0 -</pre> - </td> - - <td> - <p>Returns the <a href= - "#const_node_iterator4205924553"><tt>const_node_iterator</tt></a> - associated with a just-after leaf node.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> <a href= -"#node_iterator3431975247"><tt>node_iterator</tt></a> - node_end - () = 0 -</pre> - </td> - - <td> - <p>Returns the <a href= - "#node_iterator3431975247"><tt>node_iterator</tt></a> - associated with a just-after leaf node.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>virtual</b> <b>const</b> <a href= -"#e_access_traits1948190928"><tt>e_access_traits</tt></a> & - get_e_access_traits - () <b>const</b> = 0 -</pre> - </td> - - <td> - <p>Access to the cmp_fn object.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/trie_string_access_traits.html b/libstdc++-v3/doc/html/ext/pb_ds/trie_string_access_traits.html deleted file mode 100644 index 4ce9e864a95..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/trie_string_access_traits.html +++ /dev/null @@ -1,400 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>string_trie_e_access_traits Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>string_trie_e_access_traits</tt> Interface</h1> - - <p>Element access traits for string types.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/trie_policy.hpp"><tt>trie_policy.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Template Parameters</a></h2> - - <table class="c1" width="100%" border="1" summary= - "Template Parameters"> - <tr> - <td width="20%" align="left"><b>Parameter</b></td> - - <td width="50%" align="left"><b>Description</b></td> - - <td width="30%" align="left"><b>Default Value</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="String349403" id="String349403"><b>class</b> String </a> -</pre> - </td> - - <td> - <p>String type.</p> - </td> - - <td><tt>std::string</tt></td> - </tr> - - <tr> - <td> - <pre> -<a name="Min_E_Val40354618" id= -"Min_E_Val40354618"><b>typename</b> </a><a href= -"#String349403"><tt>String</tt></a>::value_type Min_E_Val -</pre> - </td> - - <td> - <p>Minimal element.</p> - </td> - - <td><tt>SCHAR_MIN</tt></td> - </tr> - - <tr> - <td> - <pre> -<a name="Max_E_Val39885868" id= -"Max_E_Val39885868"><b>typename</b> </a><a href= -"#String349403"><tt>String</tt></a>::value_type Max_E_Val -</pre> - </td> - - <td> - <p>Maximal element.</p> - </td> - - <td><tt>SCHAR_MAX</tt></td> - </tr> - - <tr> - <td> - <pre> -<a name="Reverse1686776" id= -"Reverse1686776"><b>bool</b> Reverse </a> -</pre> - </td> - - <td> - <p>Indicates whether reverse iteration should be - used.</p> - </td> - - <td><tt><b>false</b></tt></td> - </tr> - - <tr> - <td> - <pre> -<a name="Allocator35940069" id= -"Allocator35940069"><b>class</b> Allocator </a> -</pre> - </td> - - <td> - <p>Allocator type.</p> - </td> - - <td> - <pre> -std::allocator<<b>char</b>> -</pre> - </td> - </tr> - </table> - - <h2><a name="link2" id="link2">Public Types and - Constants</a></h2> - - <h3><a name="link3" id="link3">General Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="size_type55424436" id="size_type55424436">size_type</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#Allocator35940069"><tt>Allocator</tt></a>::size_type -</pre> - </td> - - <td> - <p>Size type.</p> - </td> - </tr> - </table> - - <h3><a name="link4" id="link4">Key-Type Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="key_type10393186" id="key_type10393186">key_type</a> -</pre> - </td> - - <td> - <pre> -<a href="#String349403"><tt>String</tt></a> -</pre> - </td> - - <td> - <p>Key type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="const_key_reference3185471705" id= -"const_key_reference3185471705">const_key_reference</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> <a href= -"#Allocator35940069"><tt>Allocator</tt></a>::<b>template</b> rebind< - <a href= -"#key_type10393186"><tt>key_type</tt></a>>::other::const_reference -</pre> - </td> - - <td> - <p>Const key reference type.</p> - </td> - </tr> - </table> - - <h3><a name="link5" id="link5">Element-Type - Definitions</a></h3> - - <table class="c1" width="100%" border="1" summary="Types"> - <tr> - <td width="30%" align="left"><b>Type</b></td> - - <td width="55%" align="left"><b>Definition</b></td> - - <td width="15%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<a name="reverse2186776" id="reverse2186776">reverse</a> -</pre> - </td> - - <td> - <pre> -<a href="#Reverse1686776"><tt>Reverse</tt></a> -</pre> - </td> - - <td> - <p><a href="#Reverse1686776"><tt>Reverse</tt></a> - iteration indicator.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="const_iterator98626788" id= -"const_iterator98626788">const_iterator</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> __gnu_pbds::detail::__conditional_type< - <a href="#Reverse1686776"><tt>Reverse</tt></a>, - <b>typename</b> <a href= -"#String349403"><tt>String</tt></a>::const_reverse_iterator, - <b>typename</b> <a href= -"#String349403"><tt>String</tt></a>::const_iterator>::__type -</pre> - </td> - - <td> - <p>Element <tt><b>const</b></tt> iterator type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="e_type393186" id="e_type393186">e_type</a> -</pre> - </td> - - <td> - <pre> -<b>typename</b> std::iterator_traits<<a href= -"#const_iterator98626788"><tt>const_iterator</tt></a>>::value_type -</pre> - </td> - - <td> - <p>Element type.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="min_e_val52875418" id="min_e_val52875418">min_e_val</a> -</pre> - </td> - - <td> - <pre> -<a href="#Min_E_Val40354618"><tt>Min_E_Val</tt></a> -</pre> - </td> - - <td> - <p>Minimal element.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="max_e_val52406668" id="max_e_val52406668">max_e_val</a> -</pre> - </td> - - <td> - <pre> -<a href="#Max_E_Val39885868"><tt>Max_E_Val</tt></a> -</pre> - </td> - - <td> - <p>Maximal element.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<a name="max_size10483336" id="max_size10483336">max_size</a> -</pre> - </td> - - <td> - <pre> -<a href="#max_e_val52406668"><tt>max_e_val</tt></a> - <a href= -"#min_e_val52875418"><tt>min_e_val</tt></a> + 1 -</pre> - </td> - - <td> - <p>Number of distinct elements.</p> - </td> - </tr> - </table> - - <h2><a name="link6" id="link6">Public Methods</a></h2> - - <h3><a name="link7" id="link7">Access Methods</a></h3> - - <table class="c1" width="100%" border="1" summary="Methods"> - <tr> - <td width="45%" align="left"><b>Method</b></td> - - <td width="55%" align="left"><b>Description</b></td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>static</b> <a href= -"#const_iterator98626788"><tt>const_iterator</tt></a> - begin - (<a href= -"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key) -</pre> - </td> - - <td> - <p>Returns a <a href= - "#const_iterator98626788"><tt>const_iterator</tt></a> to - the first element of <span class= - "c1"><tt>r_key</tt></span>.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>static</b> <a href= -"#const_iterator98626788"><tt>const_iterator</tt></a> - end - (<a href= -"#const_key_reference3185471705"><tt>const_key_reference</tt></a> r_key) -</pre> - </td> - - <td> - <p>Returns a <a href= - "#const_iterator98626788"><tt>const_iterator</tt></a> to - the after-last element of <span class= - "c1"><tt>r_key</tt></span>.</p> - </td> - </tr> - - <tr> - <td> - <pre> -<b>inline</b> <b>static</b> <a href= -"#size_type55424436"><tt>size_type</tt></a> - e_pos - (<a href="#e_type393186"><tt>e_type</tt></a> e) -</pre> - </td> - - <td> - <p>Maps an <span class="c1"><tt>e</tt></span>element to a - position.</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/trie_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/trie_tag.html deleted file mode 100644 index 62bf124544f..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/trie_tag.html +++ /dev/null @@ -1,47 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>trie_tag Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>trie_tag</tt> Interface</h1> - - <p>Basic trie data structure tag.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p> - - <h2><a name="link1" id="link1">Base Classes</a></h2> - - <table class="c1" width="100%" border="1" summary="Bases"> - <tr> - <td width="80%" align="left"><b>Class</b></td> - - <td width="20%" align="left"><b>Derivation Type</b></td> - </tr> - - <tr> - <td> - <pre> -<a href="basic_tree_tag.html"><span class= -"c2"><tt>basic_tree_tag</tt></span></a> -</pre> - </td> - - <td> - <p>public</p> - </td> - </tr> - </table> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/trivial_iterator_tag.html b/libstdc++-v3/doc/html/ext/pb_ds/trivial_iterator_tag.html deleted file mode 100644 index 1f59c5102de..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/trivial_iterator_tag.html +++ /dev/null @@ -1,25 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>trivial_iterator_tag Interface</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1><tt>trivial_iterator_tag</tt> Interface</h1> - - <p>A \quot;trivial\quot; iterator tag. Signifies that the - iterators has none of the STL's movement abilities.</p> - - <p>Defined in: <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/include/ext/pb_ds/tag_and_trait.hpp"><tt>tag_and_trait.hpp</tt></a></p> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tutorial.html b/libstdc++-v3/doc/html/ext/pb_ds/tutorial.html deleted file mode 100644 index 152cd57b1ab..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/tutorial.html +++ /dev/null @@ -1,670 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <meta name="generator" content= - "HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org" /> - - <title>Tutorial</title> - <meta http-equiv="Content-Type" content= - "text/html; charset=us-ascii" /> - </head> - -<body> - <div id="page"> - <h1>Short Tutorial</h1> - - <p>Following is a short tutorial illustrating the main points - of <tt>pb_ds</tt>. <a href="concepts.html">Concepts</a> - describes and summarizes some concepts.</p> - - <h2><a name="assoc_main" id="assoc_main">Associative - Containers</a></h2> - - <h3><a name="assoc_basic" id="assoc_basic">Basic Use</a></h3> - - <p>For the most part, <tt>pb_ds</tt>'s containers have the same - interface as the STL's, except for the names used for the - container classes themselves. For example, this shows basic - operations on a collision-chaining hash-based container:</p> - - <pre> -<a href= -"cc_hash_table.html">cc_hash_table</a><<b>int</b>, <b>char</b>> c; - -c[2] = 'b'; - -assert(c.find(1) == c.end()); -</pre> - - <p>The container is called <a href= - "cc_hash_table.html"><tt>cc_hash_table</tt></a> as - opposed to <tt>unordered_map</tt>, since "unordered map" does - not necessarily mean a hash-based map (as the STL implicitly - implies). For example, list-based associative containers, which - are very useful for the construction of "multimaps" (see - <a href= - "assoc_performance_tests.html#msc">Associative-Container - Performance Tests::Observations::Mapping-Semantics - Considerations</a>), are also unordered. It is also not called - <tt>hash_map</tt> since there are more ways than one to - implement hash tables.</p> - - <p>This snippet shows a red-black tree based container:</p> - <pre> -<a href= -"tree.html">tree</a><<b>int</b>, <b>char</b>> c; - -c[2] = 'b'; - -assert(c.find(2) != c.end()); -</pre> - - <p>The container is called <a href= - "tree.html"><tt>tree</tt></a> - as opposed to <tt>map</tt>, since "map" doesn't say that - much.</p> - - <p>Most of the STL's familiar methods are unchanged. - <i>E.g.</i>, <tt>being</tt>, <tt>end</tt>, <tt>size</tt>, - <tt>empty</tt>, and <tt>clear</tt>, do just the same as is - customary. <a href= - "assoc_examples.html#basic_usage">Associative-Container - Examples::Basic use</a>, and especially <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/basic_map.cc"><tt>basic_map.cc</tt></a>, - show examples of this.</p> - -<p>This isn't to say that things are exactly as one would expect, -given the container requirments and interfaces in the C++ -standard.</p> - - - <p>The names of containers' policies and policy accessors are - different than those of the STL. For example, if <tt>C</tt> is - some type of hash-based container, then</p> - <pre> -C::hash_fn -</pre>gives the type of its hash functor, and if <tt>c</tt> is some -hash-based container object, then - <pre> -c.get_hash_fn() -</pre> - - <p>will return a reference to its hash-functor object.</p> - - <p>Similarly, if <tt>C</tt> is some type of tree-based - container, then</p> - <pre> -C::cmp_fn -</pre>gives the type of its comparison functor, and if <tt>c</tt> -is some tree-based container object, then - <pre> -c.get_cmp_fn() -</pre> - - <p>will return a reference to its comparison-functor - object.</p> - - <p>It would be nice to give names consistent with those in the - existing C++ standard (inclusive of TR1). Unfortunately, these - standard containers don't consistently name types and - methods. For example, <tt>std::tr1::unordered_map</tt> uses - <tt>hasher</tt> for the hash functor, but <tt>std::map</tt> uses - <tt>key_compare</tt> for the comparison functor. Also, we could - not find an accessor for <tt>std::tr1::unordered_map</tt>'s hash - functor, but <tt>std::map</tt> uses <tt>compare</tt> for accessing - the comparison functor.</p> - -<p>Instead, <tt>pb_ds</tt> attempts to be internally consistent, and -uses standard-derived terminology if possible. -</p> - - <p>Another source of difference is in scope: <tt>pb_ds</tt> - contains more types of associative containers than the STL, and - more opportunities to configure these new containers, since - different types of associative containers are useful in different - settings (see <a href= - "assoc_performance_tests.html#dss_family_choice">Associative-Container - Performance Tests::Observations::Underlying Data-Structure - Families</a>).</p> - - <p><tt>pb_ds</tt> contains different classes for hash-based containers, - tree-based containers, trie-based containers, and list-based - containers. <a href= - "interface.html#containers_assoc">Inteface::Containers::Associative - Containers</a> lists the containers. <a href= - "hash_based_containers.html">Design::Associative - Containers::Hash-Based Containers</a>, <a href= - "tree_based_containers.html">Design::Associative - Containers::Tree-Based Containers</a>, <a href= - "trie_based_containers.html">Design::Associative - Containers::Trie-Based Containers</a>, and <a href= - "lu_based_containers.html">Design::Associative - Containers::List-Based Containers</a>, explain some more about - these types of containers, respectively.</p> - - <p>Since associative containers share parts of their interface, - they are organized as a class hierarchy; it is shown in Figure - <a href="#cd">Class hierarchy</a>.</p> - - <h6 class="c1"><a name="cd" id="cd"><img src="container_cd.png" alt= - "no image" /></a></h6> - - <h6 class="c1">Class hierarchy.</h6> - - <p>Each type or method is defined in the most-common ancestor - in which it makes sense: - <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/basic_map.cc"><tt>basic_map.cc</tt></a> - shows an example of most of the associative-container - types.</p> - - - <p>For example, all associative containers support iteration. - Consequently, <a href= - "container_base.html"><tt>container_base</tt></a> has the - interface:</p> - <pre> -<b>template</b><...> -<b>class</b> <a href="container_base.html">container_base</a> -{ - ... - -<b>public</b>: - ... - - const_iterator - begin() <b>const</b>; - - iterator - begin(); - - const_iterator - end() <b>const</b>; - - iterator - end(); - - ... -}; -</pre> - - <p>and so all associative containers inherent this method. - Conversely, both collision-chaining and (general) probing - hash-based associative containers have a hash functor, so - <a href= - "basic_hash_table.html"><tt>basic_hash_table</tt></a> - has the interface:</p> - <pre> -<b>template</b><...> -<b>class</b> <a href="basic_hash_table.html">basic_hash_table</a> : <b>public</b> <a href="container_base.html">container_base</a> -{ - ... - -<b>public</b>: - ... - - const hash_fn& - get_hash_fn() const; - - hash_fn& - get_hash_fn(); - ... -}; -</pre> - - <p>and so all hash-based associative containers inherit the - same hash-functor accessor methods.</p> - - <p>This is discussed further in <a href= - "ds_gen.html">Design::Associative Containers::Data-Structure - Genericity</a>.</p> - - <h3><a name="assoc_policies" id="assoc_policies">Configuring - Associative Containers</a></h3> - - <p>In general, each of <tt>pb_ds</tt>'s containers is - parametrized by more policies than those of the STL's. For - example, the STL's hash-based container is parametrized as - follows:</p> - <pre> -<b>template</b>< - <b>typename</b> Key, - <b>typename</b> Mapped, - <b>typename</b> Hash, - <b>typename</b> Pred, - <b>typename</b> Allocator, - <b>bool</b> Cache_Hashe_Code> -<b>class</b> unordered_map; -</pre> - - <p>and so can be configured by key type, mapped type, a functor - that translates keys to unsigned integral types, an equivalence - predicate, an allocator, and an indicator whether to store hash - values with each entry. <tt>pb_ds</tt>'s collision-chaining - hash-based container is parametrized as</p> - <pre> -<b>template</b>< - <b>typename</b> Key, - <b>typename</b> Mapped, - <b>typename</b> Hash_Fn, - <b>typename</b> Eq_Fn, - <b>typename</b> Comb_Hash_Fn, - <b>typename</b> Resize_Policy - <b>bool</b> Store_Hash - <b>typename</b> Allocator> -<b>class</b> <a href= -"cc_hash_table.html">cc_hash_table</a>; -</pre> - - <p>and so can be configured by the first four types of - <tt>std::tr1::unordered_map</tt>, then a policy for translating - the key-hash result into a position within the table, then a - policy by which the table resizes, an indicator whether to - store hash values with each entry, and an allocator (which is - typically the last template parameter in STL containers).</p> - - <p>Nearly all policy parameters have default values, so this - need not be considered for casual use. It is important to note, - however, that hash-based containers' policies can dramatically - alter their performance in different settings, and that - tree-based containers' policies can make them useful for other - purposes than just look-up.</p> - - <p><a href="hash_based_containers.html">Design::Associative - Containers::Hash-Based Containers</a>, <a href= - "tree_based_containers.html">Design::Associative - Containers::Tree-Based Containers</a>, <a href= - "trie_based_containers.html">Design::Associative - Containers::Trie-Based Containers</a>, and <a href= - "lu_based_containers.html">Design::Associative - Containers::List-Based Containers</a>, explain some more about - configuring hash based, tree based, trie based, and list base - containers, respectively. <a href= - "interface.html#ds_policy_classes">Interface::Container Policy - Classes</a> shows the different policy classes for configuring - associative containers. <a href= - "assoc_examples.html#hash_based">Examples::Hash-Based - Containers</a>, <a href= - "assoc_examples.html#tree_like_based">Examples::Tree-Like-Based - Containers</a>, and <a href= - "assoc_examples.html#trie_based">Examples::Trie-Based - Containers</a> show examples for this.</p> - - <h3><a name="assoc_ds_gen" id="assoc_ds_gen">Determining - Containers' Attributes</a></h3> - - <p>Associative-containers' underlying data structures obviously - affect their performance; Unfortunately, they can also affect - their interface. When manipulating generically associative - containers, it is often useful to be able to statically - determine what they can support and what the cannot. (This was - discussed in <a href= - "motivation.html#assoc_ds_genericity">Motivation::Associative - Containers::Data-Structure Genericity</a>.)</p> - - <p>Happily, the STL provides a good solution to a similar - problem - that of the different behavior of iterators. If - <tt>It</tt> is an iterator, then</p> - <pre> -<b>typename</b> std::iterator_traits<It>::iterator_category -</pre> - - <p>is one of a small number of pre-defined - <tt><b>struct</b></tt>s, and,</p> - <pre> -<b>typename</b> std::iterator_traits<It>::value_type -</pre> - - <p>is the value type to which the iterator "points".</p> - - <p>Similarly, in <tt>pb_ds</tt>, if <tt>C</tt> is an - associative container, then</p> - <pre> -<b>typename</b> <a href= -"assoc_container_traits.html"><tt>container_traits</tt></a><C>::container_category -</pre>is one of a small number of pre-defined -<tt><b>struct</b></tt>s, each one corresponding to a class in -Figure <a href="#cd">Class hierarchy</a>. These tags are listed in -<a href="interface.html#ds_ts_assoc">Interface::Associative -Containers::Data-Structure Tags and Traits::Data-Structure -Tags::Associative-Containers</a>; <a href="ds_gen.html#container_traits"> - Design::Associative Containers::Data-Structure Tags and - Traits</a> explains this further; <a href= - "ds_gen.html#tag_cd">Design::Associative - Containers::Data-Structure Tags and Traits::Data-structure tag - class hierarchy</a> shows a class diagram. - - <p>In most cases, however, the exact underlying data structure - is not really important, but only one of its attributes: - whether it guarantees storing elements by key order, for - example. For this one can use</p> - <pre> -<b>typename</b> <a href= -"assoc_container_traits.html"><tt>container_traits</tt></a><C>::order_preserving -</pre> - - <p>This is described further in <a href= - "ds_gen.html">Design::Data-Structure Genericity</a>; <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/assoc_container_traits.cc"><tt>assoc_container_traits.cc</tt></a> - shows an example of querying containers' attributes.</p> - - <h3><a name="assoc_find_range" id="assoc_find_range">Point-Type - and Range-Type Methods and Iterators</a></h3>(This subsection - addresses points from <a href= - "motivation.html#assoc_diff_it">Motivation::Associative - Containers::Differentiating between Iterator Types</a>.) - - <p><tt>pb_ds</tt> differentiates between two types of methods - and iterators: point-type, and range-type. For example, - <tt>find</tt> and <tt>insert</tt> are point-type methods, since - they each deal with a specific element; their returned - iterators are point-type iterators. <tt>begin</tt> and - <tt>end</tt> are range-type methods, since they are not used to - find a specific element, but rather to go over all elements in - a container object; their returned iterators are range-type - iterators.</p> - - <p>Most containers store elements in an order that is - determined by their interface. Correspondingly, it is fine that - their point-type iterators are synonymous with their range-type - iterators. For example, in the following snippet</p> - <pre> -std::for_each(c.find(1), c.find(5), foo); -</pre>two point-type iterators (returned by <tt>find</tt>) are used -for a range-type purpose - going over all elements whose key is -between 1 and 5. - - <p>Conversely, the above snippet makes no sense for - self-organizing containers - ones that order (and reorder) - their elements by implementation. It would be nice to have a - uniform iterator system that would allow the above snippet to - compile only if it made sense.</p> - - <p>This could trivially be done by specializing - <tt>std::for_each</tt> for the case of iterators returned by - <tt>std::tr1::unordered_map</tt>, but this would only solve the - problem for one algorithm and one container. Fundamentally, the - problem is that one can loop using a self-organizing - container's point-type iterators.</p> - - <p><tt>pb_ds</tt>'s containers define two families of - iterators: <tt>const_point_iterator</tt> and - <tt>point_iterator</tt> are the iterator types returned by - point-type methods; <tt>const_iterator</tt> and - <tt>iterator</tt> are the iterator types returned by range-type - methods.</p> - <pre> -<b>class</b> <i><- some container -></i> -{ -<b>public</b>: - ... - - <b>typedef</b> <i><- something -></i> const_iterator; - - <b>typedef</b> <i><- something -></i> iterator; - - <b>typedef</b> <i><- something -></i> const_point_iterator; - - <b>typedef</b> <i><- something -></i> point_iterator; - - ... - -<b>public</b>: - ... - - const_iterator begin () <b>const</b>; - - iterator begin(); - - const_point_iterator find(...) <b>const</b>; - - point_iterator find(...); -}; -</pre> - - <p><a href="ds_gen.html#find_range">Design::Associative - Containers::Data-Structure Genericity::Point-Type and - Range-Type Methods and Iterators</a> discusses the relationship - between point-type and range-type iterators in general; for - containers whose interface defines sequence order, however, it - is very simple: point-type and range-type iterators are exactly - the same, which means that the above snippet will compile if it - is used for an order-preserving associative container.</p> - - <p>For self-organizing containers, however, (hash-based - containers as a special example), the preceding snippet will - not compile, because their point-type iterators do not support - <tt><b>operator</b>++</tt>.</p> - - <p>In any case, both for order-preserving and self-organizing - containers, the following snippet will compile:</p> - <pre> -<b>typename</b> Cntnr::point_iterator it = c.find(2); -</pre> - - <p>because a range-type iterator can always be converted to a - point-type iterator.</p> - - <p><a href="ds_gen.html#find_range">Design::Associative - Containers::Data-Structure Genericity::Point-Type and - Range-Type Methods and Iterators</a> discusses this - further.</p> - - <p><a href= - "motivation.html#assoc_diff_it">Motivation::Associative - Containers::Differentiating between Iterator Types</a> also - raised the point that a container's iterators might have - different invalidation rules concerning their de-referencing - abilities and movement abilities. This now corresponds exactly - to the question of whether point-type and range-type iterators - are valid. As explained in <a href="#assoc_ds_gen">Determining - Containers' Attributes</a>, <a href= - "assoc_container_traits.html"><tt>container_traits</tt></a> allows - querying a container for its data structure attributes. The - iterator-invalidation guarantees are certainly a property of - the underlying data structure, and so</p> - <pre> -<a href= -"assoc_container_traits.html">container_traits</a><C>::invalidation_guarantee -</pre> - - <p>gives one of three pre-determined types that answer this - query. This is explained further in <a href= - "ds_gen.html#find_range">Design::Associative - Containers::Data-Structure Genericity::Point-Type and - Range-Type Methods and Iterators</a>.</p> - - <h3><a name="assoc_ms" id="assoc_ms">Distinguishing between Maps and Sets</a></h3> - - <p>Anyone familiar with the STL knows that there are four kinds - of associative containers: maps, sets, multimaps, and - multisets. <a href="#assoc_basic">Basic Use</a> discussed how - to use maps, <i>i.e.</i> containers that associate each key to - some data.</p> - - <p>Sets are associative containers that simply store keys - - they do not map them to anything. In the STL, each map class - has a corresponding set class. <i>E.g.</i>, - <tt>std::map<<b>int</b>, <b>char</b>></tt> maps each - <tt><b>int</b></tt> to a <tt><b>char</b></tt>, but - <tt>std::set<<b>int</b>, <b>char</b>></tt> simply stores - <tt><b>int</b></tt>s. In <tt>pb_ds</tt>, however, there are no - distinct classes for maps and sets. Instead, an associative - container's <tt>Mapped</tt> template parameter is a policy: if - it is instantiated by <a href= - "null_mapped_type.html"><tt>null_mapped_type</tt></a>, then it - is a "set"; otherwise, it is a "map". <i>E.g.</i>,</p> - <pre> -<a href="cc_hash_table.html">cc_hash_table</a><<b>int</b>, <b>char</b>> -</pre>is a "map" mapping each <tt><b>int</b></tt> value to a <tt> - <b>char</b></tt>, but - <pre> -<a href="cc_hash_table.html">cc_hash_table</a><<b>int</b>, <a href="null_mapped_type.html">null_mapped_type</a>> -</pre>is a type that uniquely stores <tt><b>int</b></tt> values. - - <p>Once the <tt>Mapped</tt> template parameter is instantiated - by <a href="null_mapped_type.html">null_mapped_type</a>, then - the "set" acts very similarly to the STL's sets - it does not - map each key to a distinct <a href= - "null_mapped_type.html">null_mapped_type</a> object. Also, - , the container's <tt>value_type</tt> is essentially - its <tt>key_type</tt> - just as with the STL's sets. For a simple example, see <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/basic_set.cc"><tt>basic_set.cc</tt></a> - .</p> - - <p>The STL's multimaps and multisets allow, respectively, - non-uniquely mapping keys and non-uniquely storing keys. As - discussed in <a href= - "motivation.html#assoc_mapping_semantics">Motivation::Associative - Containers::Alternative to Multiple Equivalent Keys</a>, the - reasons why this might be necessary are 1) that a key might be - decomposed into a primary key and a secondary key, 2) that a - key might appear more than once, or 3) any arbitrary - combination of 1)s and 2)s. Correspondingly, - one should use 1) "maps" mapping primary keys to secondary - keys, 2) "maps" mapping keys to size types, or 3) any arbitrary - combination of 1)s and 2)s. Thus, for example, an - <tt>std::multiset<<b>int</b>></tt> might be used to store - multiple instances of integers, but using <tt>pb_ds</tt>'s - containers, one might use</p> - <pre> -<a href= -"tree.html">tree</a><<b>int</b>, size_t> -</pre><i>i.e.</i>, a "map" of <tt><b>int</b></tt>s to -<tt>size_t</tt>s. - - <p><a href="assoc_examples.html#mmaps">Associative-Container - Examples::"Multimaps" and "Multisets"</a> shows some simple - examples.</p> - - <p>These "multimaps" and "multisets" might be confusing to - anyone familiar with the STL's <tt>std::multimap</tt> and - <tt>std::multiset</tt>, because there is no clear - correspondence between the two. For example, in some cases - where one uses <tt>std::multiset</tt> in the STL, one might use - in <tt>pb_ds</tt> a "multimap" of "multisets" - <i>i.e.</i>, a - container that maps primary keys each to an associative - container that maps each secondary key to the number of times - it occurs.</p> - - <p>When one uses a "multimap," one should choose with care the - type of container used for secondary keys. This is further - explained in <a href= - "assoc_performance_tests.html#msc">Associative-Container - Performance Tests::Observations::Mapping-Semantics - Considerations</a>.</p> - -<hr> - <h2><a name="pq" id="pq">Priority Queues</a></h2> - - <h3><a name="pq_basic" id="pq_basic">Basic Use</a></h3> - - <p><tt>pb_ds</tt>'s priority_queue container is - similar to the STL's in interface. For example:</p> - <pre> -<a href= -"priority_queue.html">priority_queue</a><<b>int</b>> p; - -p.push(2); -p.push(4); -p.push(1); - -assert(p.top() == 4); - -p.pop(); - -assert(p.top() == 2); - -assert(p.size() == 2); -assert(!p.empty()); -</pre> - - <h3><a name="pq_policies" id="pq_policies">Configuring Priority - Queues</a></h3> - - <p>As opposed to associative containers, priority queues have - relatively few configuration options. The priority queue is - parametrized as follows:</p> - <pre> -<b>template</b>< - <b>typename</b> Value_Type, - <b>typename</b> Cmp_Fn, - <b>typename</b> Tag, - <b>typename</b> Allocator> -<b>class</b> <a href="priority_queue.html">priority_queue</a>; -</pre> - - <p>The <tt>Value_Type</tt>, <tt>Cmp_Fn</tt>, and - <tt>Allocator</tt> parameters are the container's value type, - comparison-functor type, and allocator type, respectively; - these are very similar to the STL's priority queue. The - <tt>Tag</tt> parameter is different: there are a number of - pre-defined tag types corresponding to binary heaps, binomial - heaps, <i>etc.</i>, and <tt>Tag</tt> should be instantiated - by one of them. <a href= - "interface.html#ds_ts_pq">Interface::Data-Structure Tags and - Traits::Data Structure Tags::Priority-Queues</a> lists the - possible types, <a href="pq_design.html">Priority-Queue - Design</a> explains this further, and <a href= - "http://gcc.gnu.org/viewcvs/*checkout*/trunk/libstdc%2B%2B-v3/testsuite/ext/pb_ds/example/basic_priority_queue.cc"><tt>basic_priority_queue.cc</tt></a> - shows an example.</p> - - <p>Note that as opposed to the STL's priority queue, <a href= - "priority_queue.html"><tt>priority_queue</tt></a> is not a - sequence-adapter; it is a regular container.</p> - - <h3><a name="pq_ds_more_ops" id="pq_ds_more_ops">Supporting - More Operations</a></h3> - - <p><a href="priority_queue.html"><tt>priority_queue</tt></a>'s - <tt>push</tt> method returns a point-type iterator, which can - be used for modifying or erasing arbitrary values. For - example:</p> - <pre> -<a href= -"priority_queue.html">priority_queue</a><<b>int</b>> p; - -<a href= -"priority_queue.html">priority_queue</a><<b>int</b>>::point_iterator it = p.push(3); - -p.modify(it, 4); -</pre> - - <p>These types of operations are necessary for making priority - queues useful for different applications, especially graph - applications. <a href="pq_examples.html#xref">Priority-Queue - Examples::Cross-Referencing</a> gives some examples.</p> - - <h3><a name="pq_ds_gen" id="pq_ds_gen">Determining Container - Attributes</a></h3> - - <p>Similarly to <a href= - "assoc_container_traits.html"><tt>container_traits</tt></a> (described - in <a href="#assoc_ds_gen">Associative Containers::Determining - Containers' Attributes</a>), <a href= - "pq_container_traits.html"><tt>container_traits</tt></a> can be used to - statically determine priority-queues' attributes:</p> - <pre> -<a href= -"pq_container_traits.html">container_traits</a><C>::container_category -</pre>is one of a small number of predefined tag structures that -identifies the underlying data structure, and - <pre> -<a href= -"pq_container_traits.html">container_traits</a><C>::invalidation_guarantee -</pre> - - <p>is its invalidation guarantee. Invalidation guarantees are - especially important regarding priority queues, since in - <tt>pb_ds</tt>'s design, iterators are practically the only way - to manipulate them.</p> - - <p><a href="pq_design.html#pq_traits">Design::Priority - Queues::Traits</a> discusses this further. <a href= - "pq_examples.html#generics">Priority-Queue - Examples::Generics</a> shows an example.</p> - </div> -</body> -</html> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/update_policy_cd.png b/libstdc++-v3/doc/html/ext/pb_ds/update_policy_cd.png Binary files differdeleted file mode 100644 index 115a751c350..00000000000 --- a/libstdc++-v3/doc/html/ext/pb_ds/update_policy_cd.png +++ /dev/null diff --git a/libstdc++-v3/doc/html/ext/pb_ds/balls_and_bins.png b/libstdc++-v3/doc/xml/images/pbds_balls_and_bins.png Binary files differindex 529c3ae41bc..529c3ae41bc 100644 --- a/libstdc++-v3/doc/html/ext/pb_ds/balls_and_bins.png +++ b/libstdc++-v3/doc/xml/images/pbds_balls_and_bins.png diff --git a/libstdc++-v3/doc/xml/images/pbds_binary_priority_queue_random_int_push_timing_test_local.pdf b/libstdc++-v3/doc/xml/images/pbds_binary_priority_queue_random_int_push_timing_test_local.pdf Binary files differnew file mode 100644 index 00000000000..0349bc7d62d --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_binary_priority_queue_random_int_push_timing_test_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_binary_priority_queue_random_int_push_timing_test_local.png b/libstdc++-v3/doc/xml/images/pbds_binary_priority_queue_random_int_push_timing_test_local.png Binary files differnew file mode 100644 index 00000000000..41bf7476c00 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_binary_priority_queue_random_int_push_timing_test_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_binary_priority_queue_random_int_push_timing_test_local.svg b/libstdc++-v3/doc/xml/images/pbds_binary_priority_queue_random_int_push_timing_test_local.svg new file mode 100644 index 00000000000..14a8c06bf87 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_binary_priority_queue_random_int_push_timing_test_local.svg @@ -0,0 +1,446 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 416.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 338.4 -318.3455791044776 L 332.15 -328.3455791044776 L 344.65 -328.3455791044776 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 376.8 -342.1489552238806 L 370.55 -352.1489552238806 L 383.05 -352.1489552238806 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 415.2 -363.5792537313433 L 408.95 -373.5792537313433 L 421.45 -373.5792537313433 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 453.6 -382.68641791044774 L 447.35 -392.68641791044774 L 459.85 -392.68641791044774 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 492.0 -407.67185074626866 L 485.75 -417.67185074626866 L 498.25 -417.67185074626866 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 530.4 -430.44776119402985 L 524.15 -440.44776119402985 L 536.65 -440.44776119402985 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 568.8 -453.8429552238806 L 562.55 -463.8429552238806 L 575.05 -463.8429552238806 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 607.2 -475.14092537313434 L 600.95 -485.14092537313434 L 613.45 -485.14092537313434 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 645.6 -495.07489552238803 L 639.35 -505.07489552238803 L 651.85 -505.07489552238803 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 684.0 -515.0 L 677.75 -525.0 L 690.25 -525.0 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 338.4 -300.8645343283582 M 342.4 -300.8645343283582 L 342.4 -300.865 M 342.4 -300.865 A 4 4 0 1 0 334.4 -300.865 A 4 4 0 1 0 342.4 -300.865 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 376.8 -300.8930423880597 M 380.8 -300.8930423880597 L 380.8 -300.893 M 380.8 -300.893 A 4 4 0 1 0 372.8 -300.893 A 4 4 0 1 0 380.8 -300.893 Z"/> + </clipPath> + <clipPath id="clip17"> + <path d="M 415.2 -300.9157549253731 M 419.2 -300.9157549253731 L 419.2 -300.916 M 419.2 -300.916 A 4 4 0 1 0 411.2 -300.916 A 4 4 0 1 0 419.2 -300.916 Z"/> + </clipPath> + <clipPath id="clip18"> + <path d="M 453.6 -300.9447653731343 M 457.6 -300.9447653731343 L 457.6 -300.945 M 457.6 -300.945 A 4 4 0 1 0 449.6 -300.945 A 4 4 0 1 0 457.6 -300.945 Z"/> + </clipPath> + <clipPath id="clip19"> + <path d="M 492.0 -300.95871074626865 M 496.0 -300.95871074626865 L 496 -300.959 M 496 -300.959 A 4 4 0 1 0 488 -300.959 A 4 4 0 1 0 496 -300.959 Z"/> + </clipPath> + <clipPath id="clip20"> + <path d="M 530.4 -300.96553731343283 M 534.4 -300.96553731343283 L 534.4 -300.966 M 534.4 -300.966 A 4 4 0 1 0 526.4 -300.966 A 4 4 0 1 0 534.4 -300.966 Z"/> + </clipPath> + <clipPath id="clip21"> + <path d="M 568.8 -300.97034447761195 M 572.8 -300.97034447761195 L 572.8 -300.97 M 572.8 -300.97 A 4 4 0 1 0 564.8 -300.97 A 4 4 0 1 0 572.8 -300.97 Z"/> + </clipPath> + <clipPath id="clip22"> + <path d="M 607.2 -300.9836134328358 M 611.2 -300.9836134328358 L 611.2 -300.984 M 611.2 -300.984 A 4 4 0 1 0 603.2 -300.984 A 4 4 0 1 0 611.2 -300.984 Z"/> + </clipPath> + <clipPath id="clip23"> + <path d="M 645.6 -300.97012447761193 M 649.6 -300.97012447761193 L 649.6 -300.97 M 649.6 -300.97 A 4 4 0 1 0 641.6 -300.97 A 4 4 0 1 0 649.6 -300.97 Z"/> + </clipPath> + <clipPath id="clip24"> + <path d="M 684.0 -300.9824904477612 M 688.0 -300.9824904477612 L 688 -300.982 M 688 -300.982 A 4 4 0 1 0 680 -300.982 A 4 4 0 1 0 688 -300.982 Z"/> + </clipPath> + <clipPath id="clip25"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip26"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip27"> + <path d="M 334.4 -296.6776689552239 L 334.4 -304.6776689552239 L 342.4 -304.6776689552239 L 342.4 -296.6776689552239 Z"/> + </clipPath> + <clipPath id="clip28"> + <path d="M 372.8 -296.63155104477613 L 372.8 -304.63155104477613 L 380.8 -304.63155104477613 L 380.8 -296.63155104477613 Z"/> + </clipPath> + <clipPath id="clip29"> + <path d="M 411.2 -296.62003223880595 L 411.2 -304.62003223880595 L 419.2 -304.62003223880595 L 419.2 -296.62003223880595 Z"/> + </clipPath> + <clipPath id="clip30"> + <path d="M 449.6 -296.60298388059704 L 449.6 -304.60298388059704 L 457.6 -304.60298388059704 L 457.6 -296.60298388059704 Z"/> + </clipPath> + <clipPath id="clip31"> + <path d="M 488.0 -296.5816208955224 L 488.0 -304.5816208955224 L 496.0 -304.5816208955224 L 496.0 -296.5816208955224 Z"/> + </clipPath> + <clipPath id="clip32"> + <path d="M 526.4 -296.58382746268654 L 526.4 -304.58382746268654 L 534.4 -304.58382746268654 L 534.4 -296.58382746268654 Z"/> + </clipPath> + <clipPath id="clip33"> + <path d="M 564.8 -296.57985432835824 L 564.8 -304.57985432835824 L 572.8 -304.57985432835824 L 572.8 -296.57985432835824 Z"/> + </clipPath> + <clipPath id="clip34"> + <path d="M 603.2 -296.57130716417913 L 603.2 -304.57130716417913 L 611.2 -304.57130716417913 L 611.2 -296.57130716417913 Z"/> + </clipPath> + <clipPath id="clip35"> + <path d="M 641.6 -296.5609408955224 L 641.6 -304.5609408955224 L 649.6 -304.5609408955224 L 649.6 -296.5609408955224 Z"/> + </clipPath> + <clipPath id="clip36"> + <path d="M 680.0 -296.55760805970147 L 680.0 -304.55760805970147 L 688.0 -304.55760805970147 L 688.0 -296.55760805970147 Z"/> + </clipPath> + <clipPath id="clip37"> + <path d="M 290 -134 L 290 -190 L 324 -190 L 324 -134 Z"/> + </clipPath> + <clipPath id="clip38"> + <path d="M 307.0 -175.66666666666669 L 300.75 -185.66666666666669 L 313.25 -185.66666666666669 Z"/> + </clipPath> + <clipPath id="clip39"> + <path d="M 307.0 -162.66666666666666 M 311.0 -162.66666666666666 L 311 -162.667 M 311 -162.667 A 4 4 0 1 0 303 -162.667 A 4 4 0 1 0 311 -162.667 Z"/> + </clipPath> + <clipPath id="clip40"> + <path d="M 303.0 -140.66666666666666 L 303.0 -148.66666666666666 L 311.0 -148.66666666666666 L 311.0 -140.66666666666666 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 1.34e-06 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.5004867321942"> + 2.68e-06 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.50048673219425"> + 4.02e-06 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.5004867321942"> + 5.36e-06 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321942"> + 6.70e-06 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 338.4 -323.3455791044776 L 376.8 -347.1489552238806 L 415.2 -368.5792537313433 L 453.6 -387.68641791044774 L 492.0 -412.67185074626866 L 530.4 -435.44776119402985 L 568.8 -458.8429552238806 L 607.2 -480.14092537313434 L 645.6 -500.07489552238803 L 684.0 -520.0" style="stroke:rgb(205,0,0);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip3);"> + <path d="M 332.15 -318.3455791044776 L 332.15 -328.3455791044776 L 344.65 -328.3455791044776 L 344.65 -318.3455791044776 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -318.3455791044776 L 332.15 -328.3455791044776 L 344.65 -328.3455791044776 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip4);"> + <path d="M 370.55 -342.1489552238806 L 370.55 -352.1489552238806 L 383.05 -352.1489552238806 L 383.05 -342.1489552238806 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -342.1489552238806 L 370.55 -352.1489552238806 L 383.05 -352.1489552238806 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 408.95 -363.5792537313433 L 408.95 -373.5792537313433 L 421.45 -373.5792537313433 L 421.45 -363.5792537313433 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -363.5792537313433 L 408.95 -373.5792537313433 L 421.45 -373.5792537313433 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 447.35 -382.68641791044774 L 447.35 -392.68641791044774 L 459.85 -392.68641791044774 L 459.85 -382.68641791044774 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -382.68641791044774 L 447.35 -392.68641791044774 L 459.85 -392.68641791044774 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 485.75 -407.67185074626866 L 485.75 -417.67185074626866 L 498.25 -417.67185074626866 L 498.25 -407.67185074626866 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -407.67185074626866 L 485.75 -417.67185074626866 L 498.25 -417.67185074626866 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 524.15 -430.44776119402985 L 524.15 -440.44776119402985 L 536.65 -440.44776119402985 L 536.65 -430.44776119402985 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -430.44776119402985 L 524.15 -440.44776119402985 L 536.65 -440.44776119402985 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 562.55 -453.8429552238806 L 562.55 -463.8429552238806 L 575.05 -463.8429552238806 L 575.05 -453.8429552238806 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -453.8429552238806 L 562.55 -463.8429552238806 L 575.05 -463.8429552238806 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip10);"> + <path d="M 600.95 -475.14092537313434 L 600.95 -485.14092537313434 L 613.45 -485.14092537313434 L 613.45 -475.14092537313434 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -475.14092537313434 L 600.95 -485.14092537313434 L 613.45 -485.14092537313434 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip11);"> + <path d="M 639.35 -495.07489552238803 L 639.35 -505.07489552238803 L 651.85 -505.07489552238803 L 651.85 -495.07489552238803 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -495.07489552238803 L 639.35 -505.07489552238803 L 651.85 -505.07489552238803 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 677.75 -515.0 L 677.75 -525.0 L 690.25 -525.0 L 690.25 -515.0 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -515.0 L 677.75 -525.0 L 690.25 -525.0 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip13);"> + <path d="M 338.4 -300.8645343283582 L 376.8 -300.8930423880597 L 415.2 -300.9157549253731 L 453.6 -300.9447653731343 L 492.0 -300.95871074626865 L 530.4 -300.96553731343283 L 568.8 -300.97034447761195 L 607.2 -300.9836134328358 L 645.6 -300.97012447761193 L 684.0 -300.9824904477612" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip14);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip15);"> + <path d="M 330.4 -292.8645343283582 L 330.4 -308.8645343283582 L 346.4 -308.8645343283582 L 346.4 -292.8645343283582 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -300.8645343283582 M 342.4 -300.8645343283582 L 342.4 -300.865 M 342.4 -300.865 A 4 4 0 1 0 334.4 -300.865 A 4 4 0 1 0 342.4 -300.865 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip16);"> + <path d="M 368.8 -292.8930423880597 L 368.8 -308.8930423880597 L 384.8 -308.8930423880597 L 384.8 -292.8930423880597 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -300.8930423880597 M 380.8 -300.8930423880597 L 380.8 -300.893 M 380.8 -300.893 A 4 4 0 1 0 372.8 -300.893 A 4 4 0 1 0 380.8 -300.893 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip17);"> + <path d="M 407.2 -292.9157549253731 L 407.2 -308.9157549253731 L 423.2 -308.9157549253731 L 423.2 -292.9157549253731 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -300.9157549253731 M 419.2 -300.9157549253731 L 419.2 -300.916 M 419.2 -300.916 A 4 4 0 1 0 411.2 -300.916 A 4 4 0 1 0 419.2 -300.916 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip18);"> + <path d="M 445.6 -292.9447653731343 L 445.6 -308.9447653731343 L 461.6 -308.9447653731343 L 461.6 -292.9447653731343 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -300.9447653731343 M 457.6 -300.9447653731343 L 457.6 -300.945 M 457.6 -300.945 A 4 4 0 1 0 449.6 -300.945 A 4 4 0 1 0 457.6 -300.945 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip19);"> + <path d="M 484.0 -292.95871074626865 L 484.0 -308.95871074626865 L 500.0 -308.95871074626865 L 500.0 -292.95871074626865 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -300.95871074626865 M 496.0 -300.95871074626865 L 496 -300.959 M 496 -300.959 A 4 4 0 1 0 488 -300.959 A 4 4 0 1 0 496 -300.959 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip20);"> + <path d="M 522.4 -292.96553731343283 L 522.4 -308.96553731343283 L 538.4 -308.96553731343283 L 538.4 -292.96553731343283 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -300.96553731343283 M 534.4 -300.96553731343283 L 534.4 -300.966 M 534.4 -300.966 A 4 4 0 1 0 526.4 -300.966 A 4 4 0 1 0 534.4 -300.966 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip21);"> + <path d="M 560.8 -292.97034447761195 L 560.8 -308.97034447761195 L 576.8 -308.97034447761195 L 576.8 -292.97034447761195 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -300.97034447761195 M 572.8 -300.97034447761195 L 572.8 -300.97 M 572.8 -300.97 A 4 4 0 1 0 564.8 -300.97 A 4 4 0 1 0 572.8 -300.97 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip22);"> + <path d="M 599.2 -292.9836134328358 L 599.2 -308.9836134328358 L 615.2 -308.9836134328358 L 615.2 -292.9836134328358 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -300.9836134328358 M 611.2 -300.9836134328358 L 611.2 -300.984 M 611.2 -300.984 A 4 4 0 1 0 603.2 -300.984 A 4 4 0 1 0 611.2 -300.984 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip23);"> + <path d="M 637.6 -292.97012447761193 L 637.6 -308.97012447761193 L 653.6 -308.97012447761193 L 653.6 -292.97012447761193 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -300.97012447761193 M 649.6 -300.97012447761193 L 649.6 -300.97 M 649.6 -300.97 A 4 4 0 1 0 641.6 -300.97 A 4 4 0 1 0 649.6 -300.97 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip24);"> + <path d="M 676.0 -292.98249044776117 L 676.0 -308.98249044776117 L 692.0 -308.98249044776117 L 692.0 -292.98249044776117 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -300.9824904477612 M 688.0 -300.9824904477612 L 688 -300.982 M 688 -300.982 A 4 4 0 1 0 680 -300.982 A 4 4 0 1 0 688 -300.982 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip25);"> + <path d="M 338.4 -300.6776689552239 L 376.8 -300.63155104477613 L 415.2 -300.62003223880595 L 453.6 -300.60298388059704 L 492.0 -300.5816208955224 L 530.4 -300.58382746268654 L 568.8 -300.5798543283582 L 607.2 -300.57130716417913 L 645.6 -300.5609408955224 L 684.0 -300.55760805970147" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip26);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip27);"> + <path d="M 334.4 -296.6776689552239 L 334.4 -304.6776689552239 L 342.4 -304.6776689552239 L 342.4 -296.6776689552239 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 334.4 -296.6776689552239 L 334.4 -304.6776689552239 L 342.4 -304.6776689552239 L 342.4 -296.6776689552239 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip28);"> + <path d="M 372.8 -296.63155104477613 L 372.8 -304.63155104477613 L 380.8 -304.63155104477613 L 380.8 -296.63155104477613 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 372.8 -296.63155104477613 L 372.8 -304.63155104477613 L 380.8 -304.63155104477613 L 380.8 -296.63155104477613 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip29);"> + <path d="M 411.2 -296.62003223880595 L 411.2 -304.62003223880595 L 419.2 -304.62003223880595 L 419.2 -296.62003223880595 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 411.2 -296.62003223880595 L 411.2 -304.62003223880595 L 419.2 -304.62003223880595 L 419.2 -296.62003223880595 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip30);"> + <path d="M 449.6 -296.60298388059704 L 449.6 -304.60298388059704 L 457.6 -304.60298388059704 L 457.6 -296.60298388059704 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 449.6 -296.60298388059704 L 449.6 -304.60298388059704 L 457.6 -304.60298388059704 L 457.6 -296.60298388059704 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip31);"> + <path d="M 488.0 -296.5816208955224 L 488.0 -304.5816208955224 L 496.0 -304.5816208955224 L 496.0 -296.5816208955224 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 488.0 -296.5816208955224 L 488.0 -304.5816208955224 L 496.0 -304.5816208955224 L 496.0 -296.5816208955224 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip32);"> + <path d="M 526.4 -296.58382746268654 L 526.4 -304.58382746268654 L 534.4 -304.58382746268654 L 534.4 -296.58382746268654 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 526.4 -296.58382746268654 L 526.4 -304.58382746268654 L 534.4 -304.58382746268654 L 534.4 -296.58382746268654 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip33);"> + <path d="M 564.8 -296.57985432835824 L 564.8 -304.57985432835824 L 572.8 -304.57985432835824 L 572.8 -296.57985432835824 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 564.8 -296.57985432835824 L 564.8 -304.57985432835824 L 572.8 -304.57985432835824 L 572.8 -296.57985432835824 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip34);"> + <path d="M 603.2 -296.57130716417913 L 603.2 -304.57130716417913 L 611.2 -304.57130716417913 L 611.2 -296.57130716417913 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 603.2 -296.57130716417913 L 603.2 -304.57130716417913 L 611.2 -304.57130716417913 L 611.2 -296.57130716417913 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip35);"> + <path d="M 641.6 -296.5609408955224 L 641.6 -304.5609408955224 L 649.6 -304.5609408955224 L 649.6 -296.5609408955224 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 641.6 -296.5609408955224 L 641.6 -304.5609408955224 L 649.6 -304.5609408955224 L 649.6 -296.5609408955224 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip36);"> + <path d="M 680.0 -296.55760805970147 L 680.0 -304.55760805970147 L 688.0 -304.55760805970147 L 688.0 -296.55760805970147 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 680.0 -296.55760805970147 L 680.0 -304.55760805970147 L 688.0 -304.55760805970147 L 688.0 -296.55760805970147 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip37);"> + <path d="M 290 -134 L 290 -190 L 324 -190 L 324 -134 Z" style="stroke:none;"/> + </g> + <path d="M 300 -180.66666666666669 L 314 -180.66666666666669" style="stroke:rgb(205,0,0);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip38);"> + <path d="M 300.75 -175.66666666666669 L 300.75 -185.66666666666669 L 313.25 -185.66666666666669 L 313.25 -175.66666666666669 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -175.66666666666669 L 300.75 -185.66666666666669 L 313.25 -185.66666666666669 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-176.0"> + binary_heap + </text> + <path d="M 300 -162.66666666666666 L 314 -162.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip39);"> + <path d="M 299.0 -154.66666666666666 L 299.0 -170.66666666666666 L 315.0 -170.66666666666666 L 315.0 -154.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -162.66666666666666 M 311.0 -162.66666666666666 L 311 -162.667 M 311 -162.667 A 4 4 0 1 0 303 -162.667 A 4 4 0 1 0 311 -162.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-158.0"> + n_pq_deque + </text> + <path d="M 300 -144.66666666666666 L 314 -144.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip40);"> + <path d="M 303.0 -140.66666666666666 L 303.0 -148.66666666666666 L 311.0 -148.66666666666666 L 311.0 -140.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 303.0 -140.66666666666666 L 303.0 -148.66666666666666 L 311.0 -148.66666666666666 L 311.0 -140.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-140.0"> + n_pq_vector + </text> + </g> + </g> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_find_timing_test_local.pdf b/libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_find_timing_test_local.pdf Binary files differnew file mode 100644 index 00000000000..49f928156de --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_find_timing_test_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_find_timing_test_local.png b/libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_find_timing_test_local.png Binary files differnew file mode 100644 index 00000000000..6d1f5d2c80e --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_find_timing_test_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_find_timing_test_local.svg b/libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_find_timing_test_local.svg new file mode 100644 index 00000000000..949ed5f0a57 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_find_timing_test_local.svg @@ -0,0 +1,597 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 456.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 338.4 -513.0390511110129 M 342.4 -513.0390511110129 L 342.4 -513.039 M 342.4 -513.039 A 4 4 0 1 0 334.4 -513.039 A 4 4 0 1 0 342.4 -513.039 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 376.8 -507.124066793303 M 380.8 -507.124066793303 L 380.8 -507.124 M 380.8 -507.124 A 4 4 0 1 0 372.8 -507.124 A 4 4 0 1 0 380.8 -507.124 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 415.2 -500.165547554888 M 419.2 -500.165547554888 L 419.2 -500.166 M 419.2 -500.166 A 4 4 0 1 0 411.2 -500.166 A 4 4 0 1 0 419.2 -500.166 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 453.6 -512.5324689667359 M 457.6 -512.5324689667359 L 457.6 -512.532 M 457.6 -512.532 A 4 4 0 1 0 449.6 -512.532 A 4 4 0 1 0 457.6 -512.532 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 492.0 -510.3469982771569 M 496.0 -510.3469982771569 L 496 -510.347 M 496 -510.347 A 4 4 0 1 0 488 -510.347 A 4 4 0 1 0 496 -510.347 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 530.4 -511.8108627468305 M 534.4 -511.8108627468305 L 534.4 -511.811 M 534.4 -511.811 A 4 4 0 1 0 526.4 -511.811 A 4 4 0 1 0 534.4 -511.811 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 568.8 -520.0 M 572.8 -520.0 L 572.8 -520 M 572.8 -520 A 4 4 0 1 0 564.8 -520 A 4 4 0 1 0 572.8 -520 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 607.2 -519.6185448601847 M 611.2 -519.6185448601847 L 611.2 -519.619 M 611.2 -519.619 A 4 4 0 1 0 603.2 -519.619 A 4 4 0 1 0 611.2 -519.619 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 645.6 -519.4800547775766 M 649.6 -519.4800547775766 L 649.6 -519.48 M 649.6 -519.48 A 4 4 0 1 0 641.6 -519.48 A 4 4 0 1 0 649.6 -519.48 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 684.0 -518.8872200379909 M 688.0 -518.8872200379909 L 688 -518.887 M 688 -518.887 A 4 4 0 1 0 680 -518.887 A 4 4 0 1 0 688 -518.887 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 338.4 -459.2298007686531 L 332.15 -469.2298007686531 L 344.65 -469.2298007686531 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 376.8 -498.9995361576181 L 370.55 -508.9995361576181 L 383.05 -508.9995361576181 Z"/> + </clipPath> + <clipPath id="clip17"> + <path d="M 415.2 -475.7198392013076 L 408.95 -485.7198392013076 L 421.45 -485.7198392013076 Z"/> + </clipPath> + <clipPath id="clip18"> + <path d="M 453.6 -501.8507311039449 L 447.35 -511.8507311039449 L 459.85 -511.8507311039449 Z"/> + </clipPath> + <clipPath id="clip19"> + <path d="M 492.0 -469.5606750011044 L 485.75 -479.5606750011044 L 498.25 -479.5606750011044 Z"/> + </clipPath> + <clipPath id="clip20"> + <path d="M 530.4 -487.7745505146442 L 524.15 -497.7745505146442 L 536.65 -497.7745505146442 Z"/> + </clipPath> + <clipPath id="clip21"> + <path d="M 568.8 -498.65695542695585 L 562.55 -508.65695542695585 L 575.05 -508.65695542695585 Z"/> + </clipPath> + <clipPath id="clip22"> + <path d="M 607.2 -508.77037593320676 L 600.95 -518.7703759332068 L 613.45 -518.7703759332068 Z"/> + </clipPath> + <clipPath id="clip23"> + <path d="M 645.6 -471.89556920086585 L 639.35 -481.89556920086585 L 651.85 -481.89556920086585 Z"/> + </clipPath> + <clipPath id="clip24"> + <path d="M 684.0 -477.84821310244286 L 677.75 -487.84821310244286 L 690.25 -487.84821310244286 Z"/> + </clipPath> + <clipPath id="clip25"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip26"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip27"> + <path d="M 332.15 -461.79065247161725 L 344.65 -461.79065247161725 L 338.4 -471.79065247161725 Z"/> + </clipPath> + <clipPath id="clip28"> + <path d="M 370.55 -445.78289967751914 L 383.05 -445.78289967751914 L 376.8 -455.78289967751914 Z"/> + </clipPath> + <clipPath id="clip29"> + <path d="M 408.95 -438.55954852674824 L 421.45 -438.55954852674824 L 415.2 -448.55954852674824 Z"/> + </clipPath> + <clipPath id="clip30"> + <path d="M 447.35 -460.7288951716217 L 459.85 -460.7288951716217 L 453.6 -470.7288951716217 Z"/> + </clipPath> + <clipPath id="clip31"> + <path d="M 485.75 -442.12263109069227 L 498.25 -442.12263109069227 L 492.0 -452.12263109069227 Z"/> + </clipPath> + <clipPath id="clip32"> + <path d="M 524.15 -450.921610637452 L 536.65 -450.921610637452 L 530.4 -460.921610637452 Z"/> + </clipPath> + <clipPath id="clip33"> + <path d="M 562.55 -461.4177011088042 L 575.05 -461.4177011088042 L 568.8 -471.4177011088042 Z"/> + </clipPath> + <clipPath id="clip34"> + <path d="M 600.95 -463.0382780403764 L 613.45 -463.0382780403764 L 607.2 -473.0382780403764 Z"/> + </clipPath> + <clipPath id="clip35"> + <path d="M 639.35 -439.9565976056898 L 651.85 -439.9565976056898 L 645.6 -449.9565976056898 Z"/> + </clipPath> + <clipPath id="clip36"> + <path d="M 677.75 -443.50145779034324 L 690.25 -443.50145779034324 L 684.0 -453.50145779034324 Z"/> + </clipPath> + <clipPath id="clip37"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip38"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip39"> + <path d="M 331.25714285714287 -390.77818394663603 L 338.4 -397.92104108949314 L 345.54285714285714 -390.77818394663603 L 338.4 -383.63532680377887 Z"/> + </clipPath> + <clipPath id="clip40"> + <path d="M 369.65714285714284 -392.49631134867695 L 376.8 -399.63916849153406 L 383.9428571428571 -392.49631134867695 L 376.8 -385.3534542058198 Z"/> + </clipPath> + <clipPath id="clip41"> + <path d="M 408.0571428571429 -378.634425939833 L 415.2 -385.77728308269013 L 422.34285714285716 -378.634425939833 L 415.2 -371.4915687969759 Z"/> + </clipPath> + <clipPath id="clip42"> + <path d="M 446.45714285714286 -400.8115474665371 L 453.6 -407.95440460939426 L 460.74285714285713 -400.8115474665371 L 453.6 -393.6686903236799 Z"/> + </clipPath> + <clipPath id="clip43"> + <path d="M 484.8571428571429 -407.3802292706631 L 492.0 -414.5230864135202 L 499.1428571428571 -407.3802292706631 L 492.0 -400.23737212780594 Z"/> + </clipPath> + <clipPath id="clip44"> + <path d="M 523.2571428571429 -386.99546097097675 L 530.4 -394.13831811383386 L 537.5428571428572 -386.99546097097675 L 530.4 -379.8526038281196 Z"/> + </clipPath> + <clipPath id="clip45"> + <path d="M 561.6571428571428 -395.8336793744754 L 568.8 -402.97653651733253 L 575.9428571428572 -395.8336793744754 L 568.8 -388.69082223161826 Z"/> + </clipPath> + <clipPath id="clip46"> + <path d="M 600.0571428571428 -404.6042320095419 L 607.2 -411.74708915239904 L 614.3428571428572 -404.6042320095419 L 607.2 -397.46137486668476 Z"/> + </clipPath> + <clipPath id="clip47"> + <path d="M 638.4571428571428 -412.0129654989619 L 645.6 -419.155822641819 L 652.7428571428572 -412.0129654989619 L 645.6 -404.87010835610477 Z"/> + </clipPath> + <clipPath id="clip48"> + <path d="M 676.8571428571429 -415.92834739585635 L 684.0 -423.07120453871346 L 691.1428571428571 -415.92834739585635 L 684.0 -408.78549025299924 Z"/> + </clipPath> + <clipPath id="clip49"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip50"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip51"> + <path d="M 290 -94 L 290 -186 L 324 -186 L 324 -94 Z"/> + </clipPath> + <clipPath id="clip52"> + <path d="M 307.0 -176.66666666666669 M 311.0 -176.66666666666669 L 311 -176.667 M 311 -176.667 A 4 4 0 1 0 303 -176.667 A 4 4 0 1 0 311 -176.667 Z"/> + </clipPath> + <clipPath id="clip53"> + <path d="M 307.0 -153.66666666666666 L 300.75 -163.66666666666666 L 313.25 -163.66666666666666 Z"/> + </clipPath> + <clipPath id="clip54"> + <path d="M 300.75 -135.66666666666666 L 313.25 -135.66666666666666 L 307.0 -145.66666666666666 Z"/> + </clipPath> + <clipPath id="clip55"> + <path d="M 299.85714285714283 -122.66666666666666 L 307.0 -129.8095238095238 L 314.14285714285717 -122.66666666666666 L 307.0 -115.52380952380952 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 3.62e-09 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.5004867321942"> + 7.24e-09 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.5004867321942"> + 1.09e-08 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.5004867321942"> + 1.45e-08 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321942"> + 1.81e-08 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 338.4 -513.0390511110129 L 376.8 -507.124066793303 L 415.2 -500.165547554888 L 453.6 -512.5324689667359 L 492.0 -510.3469982771569 L 530.4 -511.8108627468305 L 568.8 -520.0 L 607.2 -519.6185448601847 L 645.6 -519.4800547775766 L 684.0 -518.8872200379909" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip3);"> + <path d="M 330.4 -505.03905111101295 L 330.4 -521.0390511110129 L 346.4 -521.0390511110129 L 346.4 -505.03905111101295 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -513.0390511110129 M 342.4 -513.0390511110129 L 342.4 -513.039 M 342.4 -513.039 A 4 4 0 1 0 334.4 -513.039 A 4 4 0 1 0 342.4 -513.039 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip4);"> + <path d="M 368.8 -499.124066793303 L 368.8 -515.124066793303 L 384.8 -515.124066793303 L 384.8 -499.124066793303 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -507.124066793303 M 380.8 -507.124066793303 L 380.8 -507.124 M 380.8 -507.124 A 4 4 0 1 0 372.8 -507.124 A 4 4 0 1 0 380.8 -507.124 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 407.2 -492.165547554888 L 407.2 -508.165547554888 L 423.2 -508.165547554888 L 423.2 -492.165547554888 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -500.165547554888 M 419.2 -500.165547554888 L 419.2 -500.166 M 419.2 -500.166 A 4 4 0 1 0 411.2 -500.166 A 4 4 0 1 0 419.2 -500.166 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 445.6 -504.5324689667359 L 445.6 -520.5324689667359 L 461.6 -520.5324689667359 L 461.6 -504.5324689667359 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -512.5324689667359 M 457.6 -512.5324689667359 L 457.6 -512.532 M 457.6 -512.532 A 4 4 0 1 0 449.6 -512.532 A 4 4 0 1 0 457.6 -512.532 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 484.0 -502.3469982771569 L 484.0 -518.3469982771569 L 500.0 -518.3469982771569 L 500.0 -502.3469982771569 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -510.3469982771569 M 496.0 -510.3469982771569 L 496 -510.347 M 496 -510.347 A 4 4 0 1 0 488 -510.347 A 4 4 0 1 0 496 -510.347 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 522.4 -503.8108627468305 L 522.4 -519.8108627468305 L 538.4 -519.8108627468305 L 538.4 -503.8108627468305 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -511.8108627468305 M 534.4 -511.8108627468305 L 534.4 -511.811 M 534.4 -511.811 A 4 4 0 1 0 526.4 -511.811 A 4 4 0 1 0 534.4 -511.811 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 560.8 -512.0 L 560.8 -528.0 L 576.8 -528.0 L 576.8 -512.0 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -520.0 M 572.8 -520.0 L 572.8 -520 M 572.8 -520 A 4 4 0 1 0 564.8 -520 A 4 4 0 1 0 572.8 -520 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip10);"> + <path d="M 599.2 -511.61854486018467 L 599.2 -527.6185448601847 L 615.2 -527.6185448601847 L 615.2 -511.61854486018467 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -519.6185448601847 M 611.2 -519.6185448601847 L 611.2 -519.619 M 611.2 -519.619 A 4 4 0 1 0 603.2 -519.619 A 4 4 0 1 0 611.2 -519.619 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip11);"> + <path d="M 637.6 -511.4800547775766 L 637.6 -527.4800547775766 L 653.6 -527.4800547775766 L 653.6 -511.4800547775766 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -519.4800547775766 M 649.6 -519.4800547775766 L 649.6 -519.48 M 649.6 -519.48 A 4 4 0 1 0 641.6 -519.48 A 4 4 0 1 0 649.6 -519.48 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 676.0 -510.8872200379909 L 676.0 -526.8872200379909 L 692.0 -526.8872200379909 L 692.0 -510.8872200379909 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -518.8872200379909 M 688.0 -518.8872200379909 L 688 -518.887 M 688 -518.887 A 4 4 0 1 0 680 -518.887 A 4 4 0 1 0 688 -518.887 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip13);"> + <path d="M 338.4 -464.2298007686531 L 376.8 -503.9995361576181 L 415.2 -480.7198392013076 L 453.6 -506.8507311039449 L 492.0 -474.5606750011044 L 530.4 -492.7745505146442 L 568.8 -503.65695542695585 L 607.2 -513.7703759332068 L 645.6 -476.89556920086585 L 684.0 -482.84821310244286" style="stroke:rgb(0,138,0);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip14);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip15);"> + <path d="M 332.15 -459.2298007686531 L 332.15 -469.2298007686531 L 344.65 -469.2298007686531 L 344.65 -459.2298007686531 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -459.2298007686531 L 332.15 -469.2298007686531 L 344.65 -469.2298007686531 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip16);"> + <path d="M 370.55 -498.9995361576181 L 370.55 -508.9995361576181 L 383.05 -508.9995361576181 L 383.05 -498.9995361576181 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -498.9995361576181 L 370.55 -508.9995361576181 L 383.05 -508.9995361576181 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip17);"> + <path d="M 408.95 -475.7198392013076 L 408.95 -485.7198392013076 L 421.45 -485.7198392013076 L 421.45 -475.7198392013076 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -475.7198392013076 L 408.95 -485.7198392013076 L 421.45 -485.7198392013076 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip18);"> + <path d="M 447.35 -501.8507311039449 L 447.35 -511.8507311039449 L 459.85 -511.8507311039449 L 459.85 -501.8507311039449 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -501.8507311039449 L 447.35 -511.8507311039449 L 459.85 -511.8507311039449 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip19);"> + <path d="M 485.75 -469.5606750011044 L 485.75 -479.5606750011044 L 498.25 -479.5606750011044 L 498.25 -469.5606750011044 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -469.5606750011044 L 485.75 -479.5606750011044 L 498.25 -479.5606750011044 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip20);"> + <path d="M 524.15 -487.7745505146442 L 524.15 -497.7745505146442 L 536.65 -497.7745505146442 L 536.65 -487.7745505146442 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -487.7745505146442 L 524.15 -497.7745505146442 L 536.65 -497.7745505146442 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip21);"> + <path d="M 562.55 -498.65695542695585 L 562.55 -508.65695542695585 L 575.05 -508.65695542695585 L 575.05 -498.65695542695585 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -498.65695542695585 L 562.55 -508.65695542695585 L 575.05 -508.65695542695585 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip22);"> + <path d="M 600.95 -508.77037593320676 L 600.95 -518.7703759332068 L 613.45 -518.7703759332068 L 613.45 -508.77037593320676 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -508.77037593320676 L 600.95 -518.7703759332068 L 613.45 -518.7703759332068 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip23);"> + <path d="M 639.35 -471.89556920086585 L 639.35 -481.89556920086585 L 651.85 -481.89556920086585 L 651.85 -471.89556920086585 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -471.89556920086585 L 639.35 -481.89556920086585 L 651.85 -481.89556920086585 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip24);"> + <path d="M 677.75 -477.84821310244286 L 677.75 -487.84821310244286 L 690.25 -487.84821310244286 L 690.25 -477.84821310244286 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -477.84821310244286 L 677.75 -487.84821310244286 L 690.25 -487.84821310244286 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip25);"> + <path d="M 338.4 -466.79065247161725 L 376.8 -450.78289967751914 L 415.2 -443.55954852674824 L 453.6 -465.7288951716217 L 492.0 -447.12263109069227 L 530.4 -455.921610637452 L 568.8 -466.4177011088042 L 607.2 -468.0382780403764 L 645.6 -444.9565976056898 L 684.0 -448.50145779034324" style="stroke:rgb(0,138,0);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip26);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip27);"> + <path d="M 332.15 -461.79065247161725 L 332.15 -471.79065247161725 L 344.65 -471.79065247161725 L 344.65 -461.79065247161725 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 332.15 -461.79065247161725 L 344.65 -461.79065247161725 L 338.4 -471.79065247161725 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip28);"> + <path d="M 370.55 -445.78289967751914 L 370.55 -455.78289967751914 L 383.05 -455.78289967751914 L 383.05 -445.78289967751914 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 370.55 -445.78289967751914 L 383.05 -445.78289967751914 L 376.8 -455.78289967751914 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip29);"> + <path d="M 408.95 -438.55954852674824 L 408.95 -448.55954852674824 L 421.45 -448.55954852674824 L 421.45 -438.55954852674824 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 408.95 -438.55954852674824 L 421.45 -438.55954852674824 L 415.2 -448.55954852674824 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip30);"> + <path d="M 447.35 -460.7288951716217 L 447.35 -470.7288951716217 L 459.85 -470.7288951716217 L 459.85 -460.7288951716217 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 447.35 -460.7288951716217 L 459.85 -460.7288951716217 L 453.6 -470.7288951716217 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip31);"> + <path d="M 485.75 -442.12263109069227 L 485.75 -452.12263109069227 L 498.25 -452.12263109069227 L 498.25 -442.12263109069227 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 485.75 -442.12263109069227 L 498.25 -442.12263109069227 L 492.0 -452.12263109069227 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip32);"> + <path d="M 524.15 -450.921610637452 L 524.15 -460.921610637452 L 536.65 -460.921610637452 L 536.65 -450.921610637452 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 524.15 -450.921610637452 L 536.65 -450.921610637452 L 530.4 -460.921610637452 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip33);"> + <path d="M 562.55 -461.4177011088042 L 562.55 -471.4177011088042 L 575.05 -471.4177011088042 L 575.05 -461.4177011088042 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 562.55 -461.4177011088042 L 575.05 -461.4177011088042 L 568.8 -471.4177011088042 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip34);"> + <path d="M 600.95 -463.0382780403764 L 600.95 -473.0382780403764 L 613.45 -473.0382780403764 L 613.45 -463.0382780403764 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.95 -463.0382780403764 L 613.45 -463.0382780403764 L 607.2 -473.0382780403764 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip35);"> + <path d="M 639.35 -439.9565976056898 L 639.35 -449.9565976056898 L 651.85 -449.9565976056898 L 651.85 -439.9565976056898 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 639.35 -439.9565976056898 L 651.85 -439.9565976056898 L 645.6 -449.9565976056898 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip36);"> + <path d="M 677.75 -443.50145779034324 L 677.75 -453.50145779034324 L 690.25 -453.50145779034324 L 690.25 -443.50145779034324 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 677.75 -443.50145779034324 L 690.25 -443.50145779034324 L 684.0 -453.50145779034324 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip37);"> + <path d="M 338.4 -390.77818394663603 L 376.8 -392.49631134867695 L 415.2 -378.634425939833 L 453.6 -400.8115474665371 L 492.0 -407.3802292706631 L 530.4 -386.99546097097675 L 568.8 -395.8336793744754 L 607.2 -404.6042320095419 L 645.6 -412.0129654989619 L 684.0 -415.92834739585635" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip38);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip39);"> + <path d="M 331.25714285714287 -383.63532680377887 L 331.25714285714287 -397.92104108949314 L 345.54285714285714 -397.92104108949314 L 345.54285714285714 -383.63532680377887 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 331.25714285714287 -390.77818394663603 L 338.4 -397.92104108949314 L 345.54285714285714 -390.77818394663603 L 338.4 -383.63532680377887 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip40);"> + <path d="M 369.65714285714284 -385.3534542058198 L 369.65714285714284 -399.63916849153406 L 383.9428571428571 -399.63916849153406 L 383.9428571428571 -385.3534542058198 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 369.65714285714284 -392.49631134867695 L 376.8 -399.63916849153406 L 383.9428571428571 -392.49631134867695 L 376.8 -385.3534542058198 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip41);"> + <path d="M 408.0571428571429 -371.4915687969759 L 408.0571428571429 -385.77728308269013 L 422.34285714285716 -385.77728308269013 L 422.34285714285716 -371.4915687969759 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 408.0571428571429 -378.634425939833 L 415.2 -385.77728308269013 L 422.34285714285716 -378.634425939833 L 415.2 -371.4915687969759 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip42);"> + <path d="M 446.45714285714286 -393.6686903236799 L 446.45714285714286 -407.95440460939426 L 460.74285714285713 -407.95440460939426 L 460.74285714285713 -393.6686903236799 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 446.45714285714286 -400.8115474665371 L 453.6 -407.95440460939426 L 460.74285714285713 -400.8115474665371 L 453.6 -393.6686903236799 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip43);"> + <path d="M 484.8571428571429 -400.23737212780594 L 484.8571428571429 -414.5230864135202 L 499.1428571428571 -414.5230864135202 L 499.1428571428571 -400.23737212780594 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 484.8571428571429 -407.3802292706631 L 492.0 -414.5230864135202 L 499.1428571428571 -407.3802292706631 L 492.0 -400.23737212780594 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip44);"> + <path d="M 523.2571428571429 -379.8526038281196 L 523.2571428571429 -394.13831811383386 L 537.5428571428572 -394.13831811383386 L 537.5428571428572 -379.8526038281196 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 523.2571428571429 -386.99546097097675 L 530.4 -394.13831811383386 L 537.5428571428572 -386.99546097097675 L 530.4 -379.8526038281196 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip45);"> + <path d="M 561.6571428571428 -388.69082223161826 L 561.6571428571428 -402.97653651733253 L 575.9428571428572 -402.97653651733253 L 575.9428571428572 -388.69082223161826 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 561.6571428571428 -395.8336793744754 L 568.8 -402.97653651733253 L 575.9428571428572 -395.8336793744754 L 568.8 -388.69082223161826 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip46);"> + <path d="M 600.0571428571428 -397.46137486668476 L 600.0571428571428 -411.74708915239904 L 614.3428571428572 -411.74708915239904 L 614.3428571428572 -397.46137486668476 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.0571428571428 -404.6042320095419 L 607.2 -411.74708915239904 L 614.3428571428572 -404.6042320095419 L 607.2 -397.46137486668476 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip47);"> + <path d="M 638.4571428571428 -404.87010835610477 L 638.4571428571428 -419.155822641819 L 652.7428571428572 -419.155822641819 L 652.7428571428572 -404.87010835610477 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 638.4571428571428 -412.0129654989619 L 645.6 -419.155822641819 L 652.7428571428572 -412.0129654989619 L 645.6 -404.87010835610477 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip48);"> + <path d="M 676.8571428571429 -408.78549025299924 L 676.8571428571429 -423.07120453871346 L 691.1428571428571 -423.07120453871346 L 691.1428571428571 -408.78549025299924 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 676.8571428571429 -415.92834739585635 L 684.0 -423.07120453871346 L 691.1428571428571 -415.92834739585635 L 684.0 -408.78549025299924 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip49);"> + <path d="M 338.4 -364.56735654017757 L 376.8 -363.4165525467156 L 415.2 -363.14406723505766 L 453.6 -373.6615386314441 L 492.0 -381.0245946901091 L 530.4 -370.7747493042364 L 568.8 -376.09774926006094 L 607.2 -379.5363122321862 L 645.6 -384.6173189910324 L 684.0 -387.67527720104255" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip50);"> + <path d="M 333.4 -359.56735654017757 L 343.4 -369.56735654017757" style="stroke-width:0.7;"/> + <path d="M 343.4 -359.56735654017757 L 333.4 -369.56735654017757" style="stroke-width:0.7;"/> + <path d="M 371.8 -358.4165525467156 L 381.8 -368.4165525467156" style="stroke-width:0.7;"/> + <path d="M 381.8 -358.4165525467156 L 371.8 -368.4165525467156" style="stroke-width:0.7;"/> + <path d="M 410.2 -358.14406723505766 L 420.2 -368.14406723505766" style="stroke-width:0.7;"/> + <path d="M 420.2 -358.14406723505766 L 410.2 -368.14406723505766" style="stroke-width:0.7;"/> + <path d="M 448.6 -368.6615386314441 L 458.6 -378.6615386314441" style="stroke-width:0.7;"/> + <path d="M 458.6 -368.6615386314441 L 448.6 -378.6615386314441" style="stroke-width:0.7;"/> + <path d="M 487.0 -376.0245946901091 L 497.0 -386.0245946901091" style="stroke-width:0.7;"/> + <path d="M 497.0 -376.0245946901091 L 487.0 -386.0245946901091" style="stroke-width:0.7;"/> + <path d="M 525.4 -365.7747493042364 L 535.4 -375.7747493042364" style="stroke-width:0.7;"/> + <path d="M 535.4 -365.7747493042364 L 525.4 -375.7747493042364" style="stroke-width:0.7;"/> + <path d="M 563.8 -371.09774926006094 L 573.8 -381.09774926006094" style="stroke-width:0.7;"/> + <path d="M 573.8 -371.09774926006094 L 563.8 -381.09774926006094" style="stroke-width:0.7;"/> + <path d="M 602.2 -374.5363122321862 L 612.2 -384.5363122321862" style="stroke-width:0.7;"/> + <path d="M 612.2 -374.5363122321862 L 602.2 -384.5363122321862" style="stroke-width:0.7;"/> + <path d="M 640.6 -379.6173189910324 L 650.6 -389.6173189910324" style="stroke-width:0.7;"/> + <path d="M 650.6 -379.6173189910324 L 640.6 -389.6173189910324" style="stroke-width:0.7;"/> + <path d="M 679.0 -382.67527720104255 L 689.0 -392.67527720104255" style="stroke-width:0.7;"/> + <path d="M 689.0 -382.67527720104255 L 679.0 -392.67527720104255" style="stroke-width:0.7;"/> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip51);"> + <path d="M 290 -94 L 290 -186 L 324 -186 L 324 -94 Z" style="stroke:none;"/> + </g> + <path d="M 300 -176.66666666666669 L 314 -176.66666666666669" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip52);"> + <path d="M 299.0 -168.66666666666669 L 299.0 -184.66666666666669 L 315.0 -184.66666666666669 L 315.0 -168.66666666666669 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -176.66666666666669 M 311.0 -176.66666666666669 L 311 -176.667 M 311 -176.667 A 4 4 0 1 0 303 -176.667 A 4 4 0 1 0 311 -176.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-172.0"> + n_hash_map_ncah + </text> + <path d="M 300 -158.66666666666666 L 314 -158.66666666666666" style="stroke:rgb(0,138,0);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip53);"> + <path d="M 300.75 -153.66666666666666 L 300.75 -163.66666666666666 L 313.25 -163.66666666666666 L 313.25 -153.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -153.66666666666666 L 300.75 -163.66666666666666 L 313.25 -163.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-154.0"> + cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map + </text> + <path d="M 300 -140.66666666666666 L 314 -140.66666666666666" style="stroke:rgb(0,138,0);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip54);"> + <path d="M 300.75 -135.66666666666666 L 300.75 -145.66666666666666 L 313.25 -145.66666666666666 L 313.25 -135.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 300.75 -135.66666666666666 L 313.25 -135.66666666666666 L 307.0 -145.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-136.0"> + cc_hash_mod_prime_nea_lc_1div8_1div2_nsth_map + </text> + <path d="M 300 -122.66666666666666 L 314 -122.66666666666666" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip55);"> + <path d="M 299.85714285714283 -115.52380952380952 L 299.85714285714283 -129.8095238095238 L 314.14285714285717 -129.8095238095238 L 314.14285714285717 -115.52380952380952 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 299.85714285714283 -122.66666666666666 L 307.0 -129.8095238095238 L 314.14285714285717 -122.66666666666666 L 307.0 -115.52380952380952 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-118.0"> + cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map + </text> + <path d="M 300 -104.66666666666666 L 314 -104.66666666666666" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <path d="M 302.0 -99.66666666666666 L 312.0 -109.66666666666666" style="stroke-width:0.7;"/> + <path d="M 312.0 -99.66666666666666 L 302.0 -109.66666666666666" style="stroke-width:0.7;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-100.0"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map + </text> + </g> + </g> + </g> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_subscript_timing_test_find_local.pdf b/libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_subscript_timing_test_find_local.pdf Binary files differnew file mode 100644 index 00000000000..a778ac26385 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_subscript_timing_test_find_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_subscript_timing_test_find_local.png b/libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_subscript_timing_test_find_local.png Binary files differnew file mode 100644 index 00000000000..d2d60354edd --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_subscript_timing_test_find_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_subscript_timing_test_find_local.svg b/libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_subscript_timing_test_find_local.svg new file mode 100644 index 00000000000..065aed6d4b2 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_subscript_timing_test_find_local.svg @@ -0,0 +1,597 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 456.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 338.4 -489.255309191219 M 342.4 -489.255309191219 L 342.4 -489.255 M 342.4 -489.255 A 4 4 0 1 0 334.4 -489.255 A 4 4 0 1 0 342.4 -489.255 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 376.8 -500.4818879082035 M 380.8 -500.4818879082035 L 380.8 -500.482 M 380.8 -500.482 A 4 4 0 1 0 372.8 -500.482 A 4 4 0 1 0 380.8 -500.482 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 415.2 -490.50418733722796 M 419.2 -490.50418733722796 L 419.2 -490.504 M 419.2 -490.504 A 4 4 0 1 0 411.2 -490.504 A 4 4 0 1 0 419.2 -490.504 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 453.6 -500.1269690946432 M 457.6 -500.1269690946432 L 457.6 -500.127 M 457.6 -500.127 A 4 4 0 1 0 449.6 -500.127 A 4 4 0 1 0 457.6 -500.127 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 492.0 -514.9996421079293 M 496.0 -514.9996421079293 L 496 -515 M 496 -515 A 4 4 0 1 0 488 -515 A 4 4 0 1 0 496 -515 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 530.4 -503.2497701231699 M 534.4 -503.2497701231699 L 534.4 -503.25 M 534.4 -503.25 A 4 4 0 1 0 526.4 -503.25 A 4 4 0 1 0 534.4 -503.25 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 568.8 -502.98327818124756 M 572.8 -502.98327818124756 L 572.8 -502.983 M 572.8 -502.983 A 4 4 0 1 0 564.8 -502.983 A 4 4 0 1 0 572.8 -502.983 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 607.2 -516.1067949939159 M 611.2 -516.1067949939159 L 611.2 -516.107 M 611.2 -516.107 A 4 4 0 1 0 603.2 -516.107 A 4 4 0 1 0 611.2 -516.107 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 645.6 -506.3265407253647 M 649.6 -506.3265407253647 L 649.6 -506.327 M 649.6 -506.327 A 4 4 0 1 0 641.6 -506.327 A 4 4 0 1 0 649.6 -506.327 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 684.0 -508.29010180652904 M 688.0 -508.29010180652904 L 688 -508.29 M 688 -508.29 A 4 4 0 1 0 680 -508.29 A 4 4 0 1 0 688 -508.29 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 338.4 -470.9876444645109 L 332.15 -480.9876444645109 L 344.65 -480.9876444645109 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 376.8 -510.4732709683459 L 370.55 -520.4732709683459 L 383.05 -520.4732709683459 Z"/> + </clipPath> + <clipPath id="clip17"> + <path d="M 415.2 -487.7475649574109 L 408.95 -497.7475649574109 L 421.45 -497.7475649574109 Z"/> + </clipPath> + <clipPath id="clip18"> + <path d="M 453.6 -502.4191576872464 L 447.35 -512.4191576872464 L 459.85 -512.4191576872464 Z"/> + </clipPath> + <clipPath id="clip19"> + <path d="M 492.0 -479.1798490246065 L 485.75 -489.1798490246065 L 498.25 -489.1798490246065 Z"/> + </clipPath> + <clipPath id="clip20"> + <path d="M 530.4 -499.38357220334876 L 524.15 -509.38357220334876 L 536.65 -509.38357220334876 Z"/> + </clipPath> + <clipPath id="clip21"> + <path d="M 568.8 -508.1547910736212 L 562.55 -518.1547910736213 L 575.05 -518.1547910736213 Z"/> + </clipPath> + <clipPath id="clip22"> + <path d="M 607.2 -515.0 L 600.95 -525.0 L 613.45 -525.0 Z"/> + </clipPath> + <clipPath id="clip23"> + <path d="M 645.6 -481.665492046537 L 639.35 -491.665492046537 L 651.85 -491.665492046537 Z"/> + </clipPath> + <clipPath id="clip24"> + <path d="M 684.0 -487.03288202225536 L 677.75 -497.03288202225536 L 690.25 -497.03288202225536 Z"/> + </clipPath> + <clipPath id="clip25"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip26"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip27"> + <path d="M 332.15 -469.4928669357281 L 344.65 -469.4928669357281 L 338.4 -479.4928669357281 Z"/> + </clipPath> + <clipPath id="clip28"> + <path d="M 370.55 -454.5959673822673 L 383.05 -454.5959673822673 L 376.8 -464.5959673822673 Z"/> + </clipPath> + <clipPath id="clip29"> + <path d="M 408.95 -449.29035508399454 L 421.45 -449.29035508399454 L 415.2 -459.29035508399454 Z"/> + </clipPath> + <clipPath id="clip30"> + <path d="M 447.35 -470.4667738507535 L 459.85 -470.4667738507535 L 453.6 -480.4667738507535 Z"/> + </clipPath> + <clipPath id="clip31"> + <path d="M 485.75 -451.10613427009287 L 498.25 -451.10613427009287 L 492.0 -461.10613427009287 Z"/> + </clipPath> + <clipPath id="clip32"> + <path d="M 524.15 -455.13016259312076 L 536.65 -455.13016259312076 L 530.4 -465.13016259312076 Z"/> + </clipPath> + <clipPath id="clip33"> + <path d="M 562.55 -463.3780881956183 L 575.05 -463.3780881956183 L 568.8 -473.3780881956183 Z"/> + </clipPath> + <clipPath id="clip34"> + <path d="M 600.95 -470.93676873014385 L 613.45 -470.93676873014385 L 607.2 -480.93676873014385 Z"/> + </clipPath> + <clipPath id="clip35"> + <path d="M 639.35 -442.75282321783516 L 651.85 -442.75282321783516 L 645.6 -452.75282321783516 Z"/> + </clipPath> + <clipPath id="clip36"> + <path d="M 677.75 -453.34345525523213 L 690.25 -453.34345525523213 L 684.0 -463.34345525523213 Z"/> + </clipPath> + <clipPath id="clip37"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip38"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip39"> + <path d="M 331.25714285714287 -387.5456312390223 L 338.4 -394.6884883818795 L 345.54285714285714 -387.5456312390223 L 338.4 -380.4027740961652 Z"/> + </clipPath> + <clipPath id="clip40"> + <path d="M 369.65714285714284 -384.89985078653666 L 376.8 -392.0427079293938 L 383.9428571428571 -384.89985078653666 L 376.8 -377.7569936436795 Z"/> + </clipPath> + <clipPath id="clip41"> + <path d="M 408.0571428571429 -380.2014767177443 L 415.2 -387.3443338606014 L 422.34285714285716 -380.2014767177443 L 415.2 -373.05861957488713 Z"/> + </clipPath> + <clipPath id="clip42"> + <path d="M 446.45714285714286 -391.5973989505503 L 453.6 -398.7402560934075 L 460.74285714285713 -391.5973989505503 L 453.6 -384.4545418076932 Z"/> + </clipPath> + <clipPath id="clip43"> + <path d="M 484.8571428571429 -406.074937093586 L 492.0 -413.2177942364432 L 499.1428571428571 -406.074937093586 L 492.0 -398.9320799507289 Z"/> + </clipPath> + <clipPath id="clip44"> + <path d="M 523.2571428571429 -388.20289727396363 L 530.4 -395.3457544168208 L 537.5428571428572 -388.20289727396363 L 530.4 -381.06004013110646 Z"/> + </clipPath> + <clipPath id="clip45"> + <path d="M 561.6571428571428 -398.0283340399408 L 568.8 -405.1711911827979 L 575.9428571428572 -398.0283340399408 L 568.8 -390.8854768970836 Z"/> + </clipPath> + <clipPath id="clip46"> + <path d="M 600.0571428571428 -408.78625033724444 L 607.2 -415.9291074801016 L 614.3428571428572 -408.78625033724444 L 607.2 -401.64339319438733 Z"/> + </clipPath> + <clipPath id="clip47"> + <path d="M 638.4571428571428 -409.21021479030276 L 645.6 -416.3530719331599 L 652.7428571428572 -409.21021479030276 L 645.6 -402.06735764744565 Z"/> + </clipPath> + <clipPath id="clip48"> + <path d="M 676.8571428571429 -414.2761054735463 L 684.0 -421.4189626164034 L 691.1428571428571 -414.2761054735463 L 684.0 -407.1332483306891 Z"/> + </clipPath> + <clipPath id="clip49"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip50"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip51"> + <path d="M 290 -94 L 290 -186 L 324 -186 L 324 -94 Z"/> + </clipPath> + <clipPath id="clip52"> + <path d="M 307.0 -176.66666666666669 M 311.0 -176.66666666666669 L 311 -176.667 M 311 -176.667 A 4 4 0 1 0 303 -176.667 A 4 4 0 1 0 311 -176.667 Z"/> + </clipPath> + <clipPath id="clip53"> + <path d="M 307.0 -153.66666666666666 L 300.75 -163.66666666666666 L 313.25 -163.66666666666666 Z"/> + </clipPath> + <clipPath id="clip54"> + <path d="M 300.75 -135.66666666666666 L 313.25 -135.66666666666666 L 307.0 -145.66666666666666 Z"/> + </clipPath> + <clipPath id="clip55"> + <path d="M 299.85714285714283 -122.66666666666666 L 307.0 -129.8095238095238 L 314.14285714285717 -122.66666666666666 L 307.0 -115.52380952380952 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 3.63e-09 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.5004867321942"> + 7.26e-09 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.5004867321942"> + 1.09e-08 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.5004867321942"> + 1.45e-08 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321942"> + 1.82e-08 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 338.4 -489.255309191219 L 376.8 -500.4818879082035 L 415.2 -490.50418733722796 L 453.6 -500.1269690946432 L 492.0 -514.9996421079293 L 530.4 -503.2497701231699 L 568.8 -502.98327818124756 L 607.2 -516.1067949939159 L 645.6 -506.3265407253647 L 684.0 -508.29010180652904" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip3);"> + <path d="M 330.4 -481.255309191219 L 330.4 -497.255309191219 L 346.4 -497.255309191219 L 346.4 -481.255309191219 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -489.255309191219 M 342.4 -489.255309191219 L 342.4 -489.255 M 342.4 -489.255 A 4 4 0 1 0 334.4 -489.255 A 4 4 0 1 0 342.4 -489.255 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip4);"> + <path d="M 368.8 -492.4818879082035 L 368.8 -508.4818879082035 L 384.8 -508.4818879082035 L 384.8 -492.4818879082035 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -500.4818879082035 M 380.8 -500.4818879082035 L 380.8 -500.482 M 380.8 -500.482 A 4 4 0 1 0 372.8 -500.482 A 4 4 0 1 0 380.8 -500.482 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 407.2 -482.50418733722796 L 407.2 -498.50418733722796 L 423.2 -498.50418733722796 L 423.2 -482.50418733722796 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -490.50418733722796 M 419.2 -490.50418733722796 L 419.2 -490.504 M 419.2 -490.504 A 4 4 0 1 0 411.2 -490.504 A 4 4 0 1 0 419.2 -490.504 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 445.6 -492.1269690946432 L 445.6 -508.1269690946432 L 461.6 -508.1269690946432 L 461.6 -492.1269690946432 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -500.1269690946432 M 457.6 -500.1269690946432 L 457.6 -500.127 M 457.6 -500.127 A 4 4 0 1 0 449.6 -500.127 A 4 4 0 1 0 457.6 -500.127 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 484.0 -506.9996421079293 L 484.0 -522.9996421079293 L 500.0 -522.9996421079293 L 500.0 -506.9996421079293 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -514.9996421079293 M 496.0 -514.9996421079293 L 496 -515 M 496 -515 A 4 4 0 1 0 488 -515 A 4 4 0 1 0 496 -515 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 522.4 -495.2497701231699 L 522.4 -511.2497701231699 L 538.4 -511.2497701231699 L 538.4 -495.2497701231699 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -503.2497701231699 M 534.4 -503.2497701231699 L 534.4 -503.25 M 534.4 -503.25 A 4 4 0 1 0 526.4 -503.25 A 4 4 0 1 0 534.4 -503.25 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 560.8 -494.98327818124756 L 560.8 -510.98327818124756 L 576.8 -510.98327818124756 L 576.8 -494.98327818124756 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -502.98327818124756 M 572.8 -502.98327818124756 L 572.8 -502.983 M 572.8 -502.983 A 4 4 0 1 0 564.8 -502.983 A 4 4 0 1 0 572.8 -502.983 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip10);"> + <path d="M 599.2 -508.10679499391586 L 599.2 -524.1067949939159 L 615.2 -524.1067949939159 L 615.2 -508.10679499391586 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -516.1067949939159 M 611.2 -516.1067949939159 L 611.2 -516.107 M 611.2 -516.107 A 4 4 0 1 0 603.2 -516.107 A 4 4 0 1 0 611.2 -516.107 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip11);"> + <path d="M 637.6 -498.3265407253647 L 637.6 -514.3265407253647 L 653.6 -514.3265407253647 L 653.6 -498.3265407253647 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -506.3265407253647 M 649.6 -506.3265407253647 L 649.6 -506.327 M 649.6 -506.327 A 4 4 0 1 0 641.6 -506.327 A 4 4 0 1 0 649.6 -506.327 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 676.0 -500.29010180652904 L 676.0 -516.290101806529 L 692.0 -516.290101806529 L 692.0 -500.29010180652904 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -508.29010180652904 M 688.0 -508.29010180652904 L 688 -508.29 M 688 -508.29 A 4 4 0 1 0 680 -508.29 A 4 4 0 1 0 688 -508.29 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip13);"> + <path d="M 338.4 -475.9876444645109 L 376.8 -515.4732709683459 L 415.2 -492.7475649574109 L 453.6 -507.4191576872464 L 492.0 -484.1798490246065 L 530.4 -504.38357220334876 L 568.8 -513.1547910736213 L 607.2 -520.0 L 645.6 -486.665492046537 L 684.0 -492.03288202225536" style="stroke:rgb(0,138,0);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip14);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip15);"> + <path d="M 332.15 -470.9876444645109 L 332.15 -480.9876444645109 L 344.65 -480.9876444645109 L 344.65 -470.9876444645109 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -470.9876444645109 L 332.15 -480.9876444645109 L 344.65 -480.9876444645109 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip16);"> + <path d="M 370.55 -510.4732709683459 L 370.55 -520.4732709683459 L 383.05 -520.4732709683459 L 383.05 -510.4732709683459 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -510.4732709683459 L 370.55 -520.4732709683459 L 383.05 -520.4732709683459 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip17);"> + <path d="M 408.95 -487.7475649574109 L 408.95 -497.7475649574109 L 421.45 -497.7475649574109 L 421.45 -487.7475649574109 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -487.7475649574109 L 408.95 -497.7475649574109 L 421.45 -497.7475649574109 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip18);"> + <path d="M 447.35 -502.4191576872464 L 447.35 -512.4191576872464 L 459.85 -512.4191576872464 L 459.85 -502.4191576872464 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -502.4191576872464 L 447.35 -512.4191576872464 L 459.85 -512.4191576872464 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip19);"> + <path d="M 485.75 -479.1798490246065 L 485.75 -489.1798490246065 L 498.25 -489.1798490246065 L 498.25 -479.1798490246065 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -479.1798490246065 L 485.75 -489.1798490246065 L 498.25 -489.1798490246065 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip20);"> + <path d="M 524.15 -499.38357220334876 L 524.15 -509.38357220334876 L 536.65 -509.38357220334876 L 536.65 -499.38357220334876 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -499.38357220334876 L 524.15 -509.38357220334876 L 536.65 -509.38357220334876 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip21);"> + <path d="M 562.55 -508.1547910736212 L 562.55 -518.1547910736213 L 575.05 -518.1547910736213 L 575.05 -508.1547910736212 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -508.1547910736212 L 562.55 -518.1547910736213 L 575.05 -518.1547910736213 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip22);"> + <path d="M 600.95 -515.0 L 600.95 -525.0 L 613.45 -525.0 L 613.45 -515.0 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -515.0 L 600.95 -525.0 L 613.45 -525.0 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip23);"> + <path d="M 639.35 -481.665492046537 L 639.35 -491.665492046537 L 651.85 -491.665492046537 L 651.85 -481.665492046537 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -481.665492046537 L 639.35 -491.665492046537 L 651.85 -491.665492046537 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip24);"> + <path d="M 677.75 -487.03288202225536 L 677.75 -497.03288202225536 L 690.25 -497.03288202225536 L 690.25 -487.03288202225536 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -487.03288202225536 L 677.75 -497.03288202225536 L 690.25 -497.03288202225536 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip25);"> + <path d="M 338.4 -474.4928669357281 L 376.8 -459.5959673822673 L 415.2 -454.29035508399454 L 453.6 -475.4667738507535 L 492.0 -456.10613427009287 L 530.4 -460.13016259312076 L 568.8 -468.3780881956183 L 607.2 -475.93676873014385 L 645.6 -447.75282321783516 L 684.0 -458.34345525523213" style="stroke:rgb(0,138,0);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip26);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip27);"> + <path d="M 332.15 -469.4928669357281 L 332.15 -479.4928669357281 L 344.65 -479.4928669357281 L 344.65 -469.4928669357281 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 332.15 -469.4928669357281 L 344.65 -469.4928669357281 L 338.4 -479.4928669357281 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip28);"> + <path d="M 370.55 -454.5959673822673 L 370.55 -464.5959673822673 L 383.05 -464.5959673822673 L 383.05 -454.5959673822673 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 370.55 -454.5959673822673 L 383.05 -454.5959673822673 L 376.8 -464.5959673822673 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip29);"> + <path d="M 408.95 -449.29035508399454 L 408.95 -459.29035508399454 L 421.45 -459.29035508399454 L 421.45 -449.29035508399454 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 408.95 -449.29035508399454 L 421.45 -449.29035508399454 L 415.2 -459.29035508399454 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip30);"> + <path d="M 447.35 -470.4667738507535 L 447.35 -480.4667738507535 L 459.85 -480.4667738507535 L 459.85 -470.4667738507535 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 447.35 -470.4667738507535 L 459.85 -470.4667738507535 L 453.6 -480.4667738507535 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip31);"> + <path d="M 485.75 -451.10613427009287 L 485.75 -461.10613427009287 L 498.25 -461.10613427009287 L 498.25 -451.10613427009287 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 485.75 -451.10613427009287 L 498.25 -451.10613427009287 L 492.0 -461.10613427009287 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip32);"> + <path d="M 524.15 -455.13016259312076 L 524.15 -465.13016259312076 L 536.65 -465.13016259312076 L 536.65 -455.13016259312076 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 524.15 -455.13016259312076 L 536.65 -455.13016259312076 L 530.4 -465.13016259312076 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip33);"> + <path d="M 562.55 -463.3780881956183 L 562.55 -473.3780881956183 L 575.05 -473.3780881956183 L 575.05 -463.3780881956183 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 562.55 -463.3780881956183 L 575.05 -463.3780881956183 L 568.8 -473.3780881956183 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip34);"> + <path d="M 600.95 -470.93676873014385 L 600.95 -480.93676873014385 L 613.45 -480.93676873014385 L 613.45 -470.93676873014385 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.95 -470.93676873014385 L 613.45 -470.93676873014385 L 607.2 -480.93676873014385 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip35);"> + <path d="M 639.35 -442.75282321783516 L 639.35 -452.75282321783516 L 651.85 -452.75282321783516 L 651.85 -442.75282321783516 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 639.35 -442.75282321783516 L 651.85 -442.75282321783516 L 645.6 -452.75282321783516 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip36);"> + <path d="M 677.75 -453.34345525523213 L 677.75 -463.34345525523213 L 690.25 -463.34345525523213 L 690.25 -453.34345525523213 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 677.75 -453.34345525523213 L 690.25 -453.34345525523213 L 684.0 -463.34345525523213 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip37);"> + <path d="M 338.4 -387.5456312390223 L 376.8 -384.89985078653666 L 415.2 -380.2014767177443 L 453.6 -391.5973989505503 L 492.0 -406.074937093586 L 530.4 -388.20289727396363 L 568.8 -398.0283340399408 L 607.2 -408.78625033724444 L 645.6 -409.21021479030276 L 684.0 -414.2761054735463" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip38);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip39);"> + <path d="M 331.25714285714287 -380.4027740961652 L 331.25714285714287 -394.6884883818795 L 345.54285714285714 -394.6884883818795 L 345.54285714285714 -380.4027740961652 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 331.25714285714287 -387.5456312390223 L 338.4 -394.6884883818795 L 345.54285714285714 -387.5456312390223 L 338.4 -380.4027740961652 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip40);"> + <path d="M 369.65714285714284 -377.7569936436795 L 369.65714285714284 -392.0427079293938 L 383.9428571428571 -392.0427079293938 L 383.9428571428571 -377.7569936436795 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 369.65714285714284 -384.89985078653666 L 376.8 -392.0427079293938 L 383.9428571428571 -384.89985078653666 L 376.8 -377.7569936436795 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip41);"> + <path d="M 408.0571428571429 -373.05861957488713 L 408.0571428571429 -387.3443338606014 L 422.34285714285716 -387.3443338606014 L 422.34285714285716 -373.05861957488713 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 408.0571428571429 -380.2014767177443 L 415.2 -387.3443338606014 L 422.34285714285716 -380.2014767177443 L 415.2 -373.05861957488713 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip42);"> + <path d="M 446.45714285714286 -384.4545418076932 L 446.45714285714286 -398.7402560934075 L 460.74285714285713 -398.7402560934075 L 460.74285714285713 -384.4545418076932 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 446.45714285714286 -391.5973989505503 L 453.6 -398.7402560934075 L 460.74285714285713 -391.5973989505503 L 453.6 -384.4545418076932 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip43);"> + <path d="M 484.8571428571429 -398.9320799507289 L 484.8571428571429 -413.2177942364432 L 499.1428571428571 -413.2177942364432 L 499.1428571428571 -398.9320799507289 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 484.8571428571429 -406.074937093586 L 492.0 -413.2177942364432 L 499.1428571428571 -406.074937093586 L 492.0 -398.9320799507289 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip44);"> + <path d="M 523.2571428571429 -381.06004013110646 L 523.2571428571429 -395.3457544168208 L 537.5428571428572 -395.3457544168208 L 537.5428571428572 -381.06004013110646 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 523.2571428571429 -388.20289727396363 L 530.4 -395.3457544168208 L 537.5428571428572 -388.20289727396363 L 530.4 -381.06004013110646 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip45);"> + <path d="M 561.6571428571428 -390.8854768970836 L 561.6571428571428 -405.1711911827979 L 575.9428571428572 -405.1711911827979 L 575.9428571428572 -390.8854768970836 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 561.6571428571428 -398.0283340399408 L 568.8 -405.1711911827979 L 575.9428571428572 -398.0283340399408 L 568.8 -390.8854768970836 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip46);"> + <path d="M 600.0571428571428 -401.64339319438733 L 600.0571428571428 -415.9291074801016 L 614.3428571428572 -415.9291074801016 L 614.3428571428572 -401.64339319438733 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.0571428571428 -408.78625033724444 L 607.2 -415.9291074801016 L 614.3428571428572 -408.78625033724444 L 607.2 -401.64339319438733 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip47);"> + <path d="M 638.4571428571428 -402.06735764744565 L 638.4571428571428 -416.3530719331599 L 652.7428571428572 -416.3530719331599 L 652.7428571428572 -402.06735764744565 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 638.4571428571428 -409.21021479030276 L 645.6 -416.3530719331599 L 652.7428571428572 -409.21021479030276 L 645.6 -402.06735764744565 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip48);"> + <path d="M 676.8571428571429 -407.1332483306891 L 676.8571428571429 -421.4189626164034 L 691.1428571428571 -421.4189626164034 L 691.1428571428571 -407.1332483306891 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 676.8571428571429 -414.2761054735463 L 684.0 -421.4189626164034 L 691.1428571428571 -414.2761054735463 L 684.0 -407.1332483306891 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip49);"> + <path d="M 338.4 -365.9034572374036 L 376.8 -362.27504831542956 L 415.2 -363.2104350315771 L 453.6 -369.4952840837137 L 492.0 -377.070559798259 L 530.4 -369.5476134104912 L 568.8 -375.4472604738491 L 607.2 -378.7883426293505 L 645.6 -381.04286445801375 L 684.0 -386.12825750609795" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip50);"> + <path d="M 333.4 -360.9034572374036 L 343.4 -370.9034572374036" style="stroke-width:0.7;"/> + <path d="M 343.4 -360.9034572374036 L 333.4 -370.9034572374036" style="stroke-width:0.7;"/> + <path d="M 371.8 -357.27504831542956 L 381.8 -367.27504831542956" style="stroke-width:0.7;"/> + <path d="M 381.8 -357.27504831542956 L 371.8 -367.27504831542956" style="stroke-width:0.7;"/> + <path d="M 410.2 -358.2104350315771 L 420.2 -368.2104350315771" style="stroke-width:0.7;"/> + <path d="M 420.2 -358.2104350315771 L 410.2 -368.2104350315771" style="stroke-width:0.7;"/> + <path d="M 448.6 -364.4952840837137 L 458.6 -374.4952840837137" style="stroke-width:0.7;"/> + <path d="M 458.6 -364.4952840837137 L 448.6 -374.4952840837137" style="stroke-width:0.7;"/> + <path d="M 487.0 -372.070559798259 L 497.0 -382.070559798259" style="stroke-width:0.7;"/> + <path d="M 497.0 -372.070559798259 L 487.0 -382.070559798259" style="stroke-width:0.7;"/> + <path d="M 525.4 -364.5476134104912 L 535.4 -374.5476134104912" style="stroke-width:0.7;"/> + <path d="M 535.4 -364.5476134104912 L 525.4 -374.5476134104912" style="stroke-width:0.7;"/> + <path d="M 563.8 -370.4472604738491 L 573.8 -380.4472604738491" style="stroke-width:0.7;"/> + <path d="M 573.8 -370.4472604738491 L 563.8 -380.4472604738491" style="stroke-width:0.7;"/> + <path d="M 602.2 -373.7883426293505 L 612.2 -383.7883426293505" style="stroke-width:0.7;"/> + <path d="M 612.2 -373.7883426293505 L 602.2 -383.7883426293505" style="stroke-width:0.7;"/> + <path d="M 640.6 -376.04286445801375 L 650.6 -386.04286445801375" style="stroke-width:0.7;"/> + <path d="M 650.6 -376.04286445801375 L 640.6 -386.04286445801375" style="stroke-width:0.7;"/> + <path d="M 679.0 -381.12825750609795 L 689.0 -391.12825750609795" style="stroke-width:0.7;"/> + <path d="M 689.0 -381.12825750609795 L 679.0 -391.12825750609795" style="stroke-width:0.7;"/> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip51);"> + <path d="M 290 -94 L 290 -186 L 324 -186 L 324 -94 Z" style="stroke:none;"/> + </g> + <path d="M 300 -176.66666666666669 L 314 -176.66666666666669" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip52);"> + <path d="M 299.0 -168.66666666666669 L 299.0 -184.66666666666669 L 315.0 -184.66666666666669 L 315.0 -168.66666666666669 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -176.66666666666669 M 311.0 -176.66666666666669 L 311 -176.667 M 311 -176.667 A 4 4 0 1 0 303 -176.667 A 4 4 0 1 0 311 -176.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-172.0"> + n_hash_map_ncah + </text> + <path d="M 300 -158.66666666666666 L 314 -158.66666666666666" style="stroke:rgb(0,138,0);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip53);"> + <path d="M 300.75 -153.66666666666666 L 300.75 -163.66666666666666 L 313.25 -163.66666666666666 L 313.25 -153.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -153.66666666666666 L 300.75 -163.66666666666666 L 313.25 -163.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-154.0"> + cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map + </text> + <path d="M 300 -140.66666666666666 L 314 -140.66666666666666" style="stroke:rgb(0,138,0);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip54);"> + <path d="M 300.75 -135.66666666666666 L 300.75 -145.66666666666666 L 313.25 -145.66666666666666 L 313.25 -135.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 300.75 -135.66666666666666 L 313.25 -135.66666666666666 L 307.0 -145.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-136.0"> + cc_hash_mod_prime_nea_lc_1div8_1div2_nsth_map + </text> + <path d="M 300 -122.66666666666666 L 314 -122.66666666666666" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip55);"> + <path d="M 299.85714285714283 -115.52380952380952 L 299.85714285714283 -129.8095238095238 L 314.14285714285717 -129.8095238095238 L 314.14285714285717 -115.52380952380952 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 299.85714285714283 -122.66666666666666 L 307.0 -129.8095238095238 L 314.14285714285717 -122.66666666666666 L 307.0 -115.52380952380952 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-118.0"> + cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map + </text> + <path d="M 300 -104.66666666666666 L 314 -104.66666666666666" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <path d="M 302.0 -99.66666666666666 L 312.0 -109.66666666666666" style="stroke-width:0.7;"/> + <path d="M 312.0 -99.66666666666666 L 302.0 -109.66666666666666" style="stroke-width:0.7;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-100.0"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map + </text> + </g> + </g> + </g> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_subscript_timing_test_insert_local.pdf b/libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_subscript_timing_test_insert_local.pdf Binary files differnew file mode 100644 index 00000000000..6a62da8ae30 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_subscript_timing_test_insert_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_subscript_timing_test_insert_local.png b/libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_subscript_timing_test_insert_local.png Binary files differnew file mode 100644 index 00000000000..71b62064e74 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_subscript_timing_test_insert_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_subscript_timing_test_insert_local.svg b/libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_subscript_timing_test_insert_local.svg new file mode 100644 index 00000000000..9cb1af8a92c --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_subscript_timing_test_insert_local.svg @@ -0,0 +1,598 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 456.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 332.15 -473.62481833173945 L 344.65 -473.62481833173945 L 338.4 -483.62481833173945 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 370.55 -471.2789822059233 L 383.05 -471.2789822059233 L 376.8 -481.2789822059233 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 408.95 -485.7101817059121 L 421.45 -485.7101817059121 L 415.2 -495.7101817059121 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 447.35 -472.0692109008487 L 459.85 -472.0692109008487 L 453.6 -482.0692109008487 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 485.75 -502.86493670790753 L 498.25 -502.86493670790753 L 492.0 -512.8649367079075 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 524.15 -489.1229094030739 L 536.65 -489.1229094030739 L 530.4 -499.1229094030739 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 562.55 -482.8308997944231 L 575.05 -482.8308997944231 L 568.8 -492.8308997944231 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 600.95 -477.7200915683336 L 613.45 -477.7200915683336 L 607.2 -487.7200915683336 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 639.35 -515.0 L 651.85 -515.0 L 645.6 -525.0 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 677.75 -503.90532165636273 L 690.25 -503.90532165636273 L 684.0 -513.9053216563627 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 338.4 -508.1896428383171 M 342.4 -508.1896428383171 L 342.4 -508.19 M 342.4 -508.19 A 4 4 0 1 0 334.4 -508.19 A 4 4 0 1 0 342.4 -508.19 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 376.8 -472.9258944102653 M 380.8 -472.9258944102653 L 380.8 -472.926 M 380.8 -472.926 A 4 4 0 1 0 372.8 -472.926 A 4 4 0 1 0 380.8 -472.926 Z"/> + </clipPath> + <clipPath id="clip17"> + <path d="M 415.2 -484.19452246662195 M 419.2 -484.19452246662195 L 419.2 -484.195 M 419.2 -484.195 A 4 4 0 1 0 411.2 -484.195 A 4 4 0 1 0 419.2 -484.195 Z"/> + </clipPath> + <clipPath id="clip18"> + <path d="M 453.6 -472.70887143534867 M 457.6 -472.70887143534867 L 457.6 -472.709 M 457.6 -472.709 A 4 4 0 1 0 449.6 -472.709 A 4 4 0 1 0 457.6 -472.709 Z"/> + </clipPath> + <clipPath id="clip19"> + <path d="M 492.0 -494.8568115243568 M 496.0 -494.8568115243568 L 496 -494.857 M 496 -494.857 A 4 4 0 1 0 488 -494.857 A 4 4 0 1 0 496 -494.857 Z"/> + </clipPath> + <clipPath id="clip20"> + <path d="M 530.4 -485.7617265450274 M 534.4 -485.7617265450274 L 534.4 -485.762 M 534.4 -485.762 A 4 4 0 1 0 526.4 -485.762 A 4 4 0 1 0 534.4 -485.762 Z"/> + </clipPath> + <clipPath id="clip21"> + <path d="M 568.8 -487.8308997944231 M 572.8 -487.8308997944231 L 572.8 -487.831 M 572.8 -487.831 A 4 4 0 1 0 564.8 -487.831 A 4 4 0 1 0 572.8 -487.831 Z"/> + </clipPath> + <clipPath id="clip22"> + <path d="M 607.2 -475.30817714255596 M 611.2 -475.30817714255596 L 611.2 -475.308 M 611.2 -475.308 A 4 4 0 1 0 603.2 -475.308 A 4 4 0 1 0 611.2 -475.308 Z"/> + </clipPath> + <clipPath id="clip23"> + <path d="M 645.6 -505.84546337643167 M 649.6 -505.84546337643167 L 649.6 -505.845 M 649.6 -505.845 A 4 4 0 1 0 641.6 -505.845 A 4 4 0 1 0 649.6 -505.845 Z"/> + </clipPath> + <clipPath id="clip24"> + <path d="M 684.0 -500.40332236421006 M 688.0 -500.40332236421006 L 688 -500.403 M 688 -500.403 A 4 4 0 1 0 680 -500.403 A 4 4 0 1 0 688 -500.403 Z"/> + </clipPath> + <clipPath id="clip25"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip26"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip27"> + <path d="M 338.4 -507.39259923040436 L 332.15 -517.3925992304044 L 344.65 -517.3925992304044 Z"/> + </clipPath> + <clipPath id="clip28"> + <path d="M 376.8 -463.865411116215 L 370.55 -473.865411116215 L 383.05 -473.865411116215 Z"/> + </clipPath> + <clipPath id="clip29"> + <path d="M 415.2 -470.4572768963154 L 408.95 -480.4572768963154 L 421.45 -480.4572768963154 Z"/> + </clipPath> + <clipPath id="clip30"> + <path d="M 453.6 -463.49266173181627 L 447.35 -473.49266173181627 L 459.85 -473.49266173181627 Z"/> + </clipPath> + <clipPath id="clip31"> + <path d="M 492.0 -482.3604072381153 L 485.75 -492.3604072381153 L 498.25 -492.3604072381153 Z"/> + </clipPath> + <clipPath id="clip32"> + <path d="M 530.4 -473.1973990376289 L 524.15 -483.1973990376289 L 536.65 -483.1973990376289 Z"/> + </clipPath> + <clipPath id="clip33"> + <path d="M 568.8 -466.4166735694331 L 562.55 -476.4166735694331 L 575.05 -476.4166735694331 Z"/> + </clipPath> + <clipPath id="clip34"> + <path d="M 607.2 -461.1584222535148 L 600.95 -471.1584222535148 L 613.45 -471.1584222535148 Z"/> + </clipPath> + <clipPath id="clip35"> + <path d="M 645.6 -491.8779415197632 L 639.35 -501.8779415197632 L 651.85 -501.8779415197632 Z"/> + </clipPath> + <clipPath id="clip36"> + <path d="M 684.0 -487.59546525900436 L 677.75 -497.59546525900436 L 690.25 -497.59546525900436 Z"/> + </clipPath> + <clipPath id="clip37"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip38"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip39"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip40"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip41"> + <path d="M 331.25714285714287 -455.9212331603877 L 338.4 -463.0640903032448 L 345.54285714285714 -455.9212331603877 L 338.4 -448.77837601753055 Z"/> + </clipPath> + <clipPath id="clip42"> + <path d="M 369.65714285714284 -455.83574930156556 L 376.8 -462.97860644442267 L 383.9428571428571 -455.83574930156556 L 376.8 -448.69289215870845 Z"/> + </clipPath> + <clipPath id="clip43"> + <path d="M 408.0571428571429 -463.893596993908 L 415.2 -471.0364541367651 L 422.34285714285716 -463.893596993908 L 415.2 -456.75073985105087 Z"/> + </clipPath> + <clipPath id="clip44"> + <path d="M 446.45714285714286 -451.16064368924003 L 453.6 -458.30350083209714 L 460.74285714285713 -451.16064368924003 L 453.6 -444.01778654638287 Z"/> + </clipPath> + <clipPath id="clip45"> + <path d="M 484.8571428571429 -445.08284072682363 L 492.0 -452.2256978696808 L 499.1428571428571 -445.08284072682363 L 492.0 -437.9399835839665 Z"/> + </clipPath> + <clipPath id="clip46"> + <path d="M 523.2571428571429 -467.46884342266765 L 530.4 -474.6117005655248 L 537.5428571428572 -467.46884342266765 L 530.4 -460.32598627981054 Z"/> + </clipPath> + <clipPath id="clip47"> + <path d="M 561.6571428571428 -460.60859808580017 L 568.8 -467.7514552286573 L 575.9428571428572 -460.60859808580017 L 568.8 -453.465740942943 Z"/> + </clipPath> + <clipPath id="clip48"> + <path d="M 600.0571428571428 -458.9030625691845 L 607.2 -466.04591971204167 L 614.3428571428572 -458.9030625691845 L 607.2 -451.7602054263274 Z"/> + </clipPath> + <clipPath id="clip49"> + <path d="M 638.4571428571428 -451.188309976882 L 645.6 -458.3311671197391 L 652.7428571428572 -451.188309976882 L 645.6 -444.0454528340249 Z"/> + </clipPath> + <clipPath id="clip50"> + <path d="M 676.8571428571429 -448.5414580148648 L 684.0 -455.6843151577219 L 691.1428571428571 -448.5414580148648 L 684.0 -441.3986008720077 Z"/> + </clipPath> + <clipPath id="clip51"> + <path d="M 290 -94 L 290 -186 L 324 -186 L 324 -94 Z"/> + </clipPath> + <clipPath id="clip52"> + <path d="M 300.75 -171.66666666666669 L 313.25 -171.66666666666669 L 307.0 -181.66666666666669 Z"/> + </clipPath> + <clipPath id="clip53"> + <path d="M 307.0 -158.66666666666666 M 311.0 -158.66666666666666 L 311 -158.667 M 311 -158.667 A 4 4 0 1 0 303 -158.667 A 4 4 0 1 0 311 -158.667 Z"/> + </clipPath> + <clipPath id="clip54"> + <path d="M 307.0 -135.66666666666666 L 300.75 -145.66666666666666 L 313.25 -145.66666666666666 Z"/> + </clipPath> + <clipPath id="clip55"> + <path d="M 299.85714285714283 -104.66666666666666 L 307.0 -111.8095238095238 L 314.14285714285717 -104.66666666666666 L 307.0 -97.52380952380952 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -465.6663930661084 L 780 -465.6663930661084" style="stroke:rgb(179,179,179);stroke-width:0.4;stroke-dasharray:1,1;"/> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 2.66e-08 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.5004867321942"> + 5.31e-08 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.5004867321942"> + 7.97e-08 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.5004867321942"> + 1.06e-07 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321942"> + 1.33e-07 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 338.4 -478.62481833173945 L 376.8 -476.2789822059233 L 415.2 -490.7101817059121 L 453.6 -477.0692109008487 L 492.0 -507.86493670790753 L 530.4 -494.1229094030739 L 568.8 -487.8308997944231 L 607.2 -482.7200915683336 L 645.6 -520.0 L 684.0 -508.90532165636273" style="stroke:rgb(0,138,0);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip3);"> + <path d="M 332.15 -473.62481833173945 L 332.15 -483.62481833173945 L 344.65 -483.62481833173945 L 344.65 -473.62481833173945 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 332.15 -473.62481833173945 L 344.65 -473.62481833173945 L 338.4 -483.62481833173945 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip4);"> + <path d="M 370.55 -471.2789822059233 L 370.55 -481.2789822059233 L 383.05 -481.2789822059233 L 383.05 -471.2789822059233 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 370.55 -471.2789822059233 L 383.05 -471.2789822059233 L 376.8 -481.2789822059233 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 408.95 -485.7101817059121 L 408.95 -495.7101817059121 L 421.45 -495.7101817059121 L 421.45 -485.7101817059121 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 408.95 -485.7101817059121 L 421.45 -485.7101817059121 L 415.2 -495.7101817059121 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 447.35 -472.0692109008487 L 447.35 -482.0692109008487 L 459.85 -482.0692109008487 L 459.85 -472.0692109008487 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 447.35 -472.0692109008487 L 459.85 -472.0692109008487 L 453.6 -482.0692109008487 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 485.75 -502.86493670790753 L 485.75 -512.8649367079075 L 498.25 -512.8649367079075 L 498.25 -502.86493670790753 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 485.75 -502.86493670790753 L 498.25 -502.86493670790753 L 492.0 -512.8649367079075 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 524.15 -489.1229094030739 L 524.15 -499.1229094030739 L 536.65 -499.1229094030739 L 536.65 -489.1229094030739 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 524.15 -489.1229094030739 L 536.65 -489.1229094030739 L 530.4 -499.1229094030739 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 562.55 -482.8308997944231 L 562.55 -492.8308997944231 L 575.05 -492.8308997944231 L 575.05 -482.8308997944231 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 562.55 -482.8308997944231 L 575.05 -482.8308997944231 L 568.8 -492.8308997944231 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip10);"> + <path d="M 600.95 -477.7200915683336 L 600.95 -487.7200915683336 L 613.45 -487.7200915683336 L 613.45 -477.7200915683336 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.95 -477.7200915683336 L 613.45 -477.7200915683336 L 607.2 -487.7200915683336 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip11);"> + <path d="M 639.35 -515.0 L 639.35 -525.0 L 651.85 -525.0 L 651.85 -515.0 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 639.35 -515.0 L 651.85 -515.0 L 645.6 -525.0 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 677.75 -503.90532165636273 L 677.75 -513.9053216563627 L 690.25 -513.9053216563627 L 690.25 -503.90532165636273 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 677.75 -503.90532165636273 L 690.25 -503.90532165636273 L 684.0 -513.9053216563627 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip13);"> + <path d="M 338.4 -508.1896428383171 L 376.8 -472.9258944102653 L 415.2 -484.19452246662195 L 453.6 -472.70887143534867 L 492.0 -494.8568115243568 L 530.4 -485.7617265450274 L 568.8 -487.8308997944231 L 607.2 -475.30817714255596 L 645.6 -505.84546337643167 L 684.0 -500.40332236421006" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip14);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip15);"> + <path d="M 330.4 -500.1896428383171 L 330.4 -516.1896428383171 L 346.4 -516.1896428383171 L 346.4 -500.1896428383171 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -508.1896428383171 M 342.4 -508.1896428383171 L 342.4 -508.19 M 342.4 -508.19 A 4 4 0 1 0 334.4 -508.19 A 4 4 0 1 0 342.4 -508.19 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip16);"> + <path d="M 368.8 -464.9258944102653 L 368.8 -480.9258944102653 L 384.8 -480.9258944102653 L 384.8 -464.9258944102653 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -472.9258944102653 M 380.8 -472.9258944102653 L 380.8 -472.926 M 380.8 -472.926 A 4 4 0 1 0 372.8 -472.926 A 4 4 0 1 0 380.8 -472.926 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip17);"> + <path d="M 407.2 -476.19452246662195 L 407.2 -492.19452246662195 L 423.2 -492.19452246662195 L 423.2 -476.19452246662195 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -484.19452246662195 M 419.2 -484.19452246662195 L 419.2 -484.195 M 419.2 -484.195 A 4 4 0 1 0 411.2 -484.195 A 4 4 0 1 0 419.2 -484.195 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip18);"> + <path d="M 445.6 -464.70887143534867 L 445.6 -480.70887143534867 L 461.6 -480.70887143534867 L 461.6 -464.70887143534867 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -472.70887143534867 M 457.6 -472.70887143534867 L 457.6 -472.709 M 457.6 -472.709 A 4 4 0 1 0 449.6 -472.709 A 4 4 0 1 0 457.6 -472.709 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip19);"> + <path d="M 484.0 -486.8568115243568 L 484.0 -502.8568115243568 L 500.0 -502.8568115243568 L 500.0 -486.8568115243568 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -494.8568115243568 M 496.0 -494.8568115243568 L 496 -494.857 M 496 -494.857 A 4 4 0 1 0 488 -494.857 A 4 4 0 1 0 496 -494.857 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip20);"> + <path d="M 522.4 -477.7617265450274 L 522.4 -493.7617265450274 L 538.4 -493.7617265450274 L 538.4 -477.7617265450274 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -485.7617265450274 M 534.4 -485.7617265450274 L 534.4 -485.762 M 534.4 -485.762 A 4 4 0 1 0 526.4 -485.762 A 4 4 0 1 0 534.4 -485.762 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip21);"> + <path d="M 560.8 -479.8308997944231 L 560.8 -495.8308997944231 L 576.8 -495.8308997944231 L 576.8 -479.8308997944231 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -487.8308997944231 M 572.8 -487.8308997944231 L 572.8 -487.831 M 572.8 -487.831 A 4 4 0 1 0 564.8 -487.831 A 4 4 0 1 0 572.8 -487.831 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip22);"> + <path d="M 599.2 -467.30817714255596 L 599.2 -483.30817714255596 L 615.2 -483.30817714255596 L 615.2 -467.30817714255596 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -475.30817714255596 M 611.2 -475.30817714255596 L 611.2 -475.308 M 611.2 -475.308 A 4 4 0 1 0 603.2 -475.308 A 4 4 0 1 0 611.2 -475.308 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip23);"> + <path d="M 637.6 -497.84546337643167 L 637.6 -513.8454633764317 L 653.6 -513.8454633764317 L 653.6 -497.84546337643167 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -505.84546337643167 M 649.6 -505.84546337643167 L 649.6 -505.845 M 649.6 -505.845 A 4 4 0 1 0 641.6 -505.845 A 4 4 0 1 0 649.6 -505.845 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip24);"> + <path d="M 676.0 -492.40332236421006 L 676.0 -508.40332236421006 L 692.0 -508.40332236421006 L 692.0 -492.40332236421006 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -500.40332236421006 M 688.0 -500.40332236421006 L 688 -500.403 M 688 -500.403 A 4 4 0 1 0 680 -500.403 A 4 4 0 1 0 688 -500.403 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip25);"> + <path d="M 338.4 -512.3925992304044 L 376.8 -468.865411116215 L 415.2 -475.4572768963154 L 453.6 -468.49266173181627 L 492.0 -487.3604072381153 L 530.4 -478.1973990376289 L 568.8 -471.4166735694331 L 607.2 -466.1584222535148 L 645.6 -496.8779415197632 L 684.0 -492.59546525900436" style="stroke:rgb(0,138,0);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip26);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip27);"> + <path d="M 332.15 -507.39259923040436 L 332.15 -517.3925992304044 L 344.65 -517.3925992304044 L 344.65 -507.39259923040436 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -507.39259923040436 L 332.15 -517.3925992304044 L 344.65 -517.3925992304044 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip28);"> + <path d="M 370.55 -463.865411116215 L 370.55 -473.865411116215 L 383.05 -473.865411116215 L 383.05 -463.865411116215 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -463.865411116215 L 370.55 -473.865411116215 L 383.05 -473.865411116215 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip29);"> + <path d="M 408.95 -470.4572768963154 L 408.95 -480.4572768963154 L 421.45 -480.4572768963154 L 421.45 -470.4572768963154 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -470.4572768963154 L 408.95 -480.4572768963154 L 421.45 -480.4572768963154 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip30);"> + <path d="M 447.35 -463.49266173181627 L 447.35 -473.49266173181627 L 459.85 -473.49266173181627 L 459.85 -463.49266173181627 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -463.49266173181627 L 447.35 -473.49266173181627 L 459.85 -473.49266173181627 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip31);"> + <path d="M 485.75 -482.3604072381153 L 485.75 -492.3604072381153 L 498.25 -492.3604072381153 L 498.25 -482.3604072381153 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -482.3604072381153 L 485.75 -492.3604072381153 L 498.25 -492.3604072381153 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip32);"> + <path d="M 524.15 -473.1973990376289 L 524.15 -483.1973990376289 L 536.65 -483.1973990376289 L 536.65 -473.1973990376289 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -473.1973990376289 L 524.15 -483.1973990376289 L 536.65 -483.1973990376289 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip33);"> + <path d="M 562.55 -466.4166735694331 L 562.55 -476.4166735694331 L 575.05 -476.4166735694331 L 575.05 -466.4166735694331 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -466.4166735694331 L 562.55 -476.4166735694331 L 575.05 -476.4166735694331 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip34);"> + <path d="M 600.95 -461.1584222535148 L 600.95 -471.1584222535148 L 613.45 -471.1584222535148 L 613.45 -461.1584222535148 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -461.1584222535148 L 600.95 -471.1584222535148 L 613.45 -471.1584222535148 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip35);"> + <path d="M 639.35 -491.8779415197632 L 639.35 -501.8779415197632 L 651.85 -501.8779415197632 L 651.85 -491.8779415197632 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -491.8779415197632 L 639.35 -501.8779415197632 L 651.85 -501.8779415197632 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip36);"> + <path d="M 677.75 -487.59546525900436 L 677.75 -497.59546525900436 L 690.25 -497.59546525900436 L 690.25 -487.59546525900436 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -487.59546525900436 L 677.75 -497.59546525900436 L 690.25 -497.59546525900436 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip37);"> + <path d="M 338.4 -467.50363336521156 L 376.8 -463.89790432012774 L 415.2 -480.29142224598445 L 453.6 -461.9582821901097 L 492.0 -452.7775476855652 L 530.4 -478.1973990376289 L 568.8 -470.3580653177406 L 607.2 -462.55434987236157 L 645.6 -459.9335075340557 L 684.0 -454.0132533114453" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip38);"> + <path d="M 333.4 -462.50363336521156 L 343.4 -472.50363336521156" style="stroke-width:0.7;"/> + <path d="M 343.4 -462.50363336521156 L 333.4 -472.50363336521156" style="stroke-width:0.7;"/> + <path d="M 371.8 -458.89790432012774 L 381.8 -468.89790432012774" style="stroke-width:0.7;"/> + <path d="M 381.8 -458.89790432012774 L 371.8 -468.89790432012774" style="stroke-width:0.7;"/> + <path d="M 410.2 -475.29142224598445 L 420.2 -485.29142224598445" style="stroke-width:0.7;"/> + <path d="M 420.2 -475.29142224598445 L 410.2 -485.29142224598445" style="stroke-width:0.7;"/> + <path d="M 448.6 -456.9582821901097 L 458.6 -466.9582821901097" style="stroke-width:0.7;"/> + <path d="M 458.6 -456.9582821901097 L 448.6 -466.9582821901097" style="stroke-width:0.7;"/> + <path d="M 487.0 -447.7775476855652 L 497.0 -457.7775476855652" style="stroke-width:0.7;"/> + <path d="M 497.0 -447.7775476855652 L 487.0 -457.7775476855652" style="stroke-width:0.7;"/> + <path d="M 525.4 -473.1973990376289 L 535.4 -483.1973990376289" style="stroke-width:0.7;"/> + <path d="M 535.4 -473.1973990376289 L 525.4 -483.1973990376289" style="stroke-width:0.7;"/> + <path d="M 563.8 -465.3580653177406 L 573.8 -475.3580653177406" style="stroke-width:0.7;"/> + <path d="M 573.8 -465.3580653177406 L 563.8 -475.3580653177406" style="stroke-width:0.7;"/> + <path d="M 602.2 -457.55434987236157 L 612.2 -467.55434987236157" style="stroke-width:0.7;"/> + <path d="M 612.2 -457.55434987236157 L 602.2 -467.55434987236157" style="stroke-width:0.7;"/> + <path d="M 640.6 -454.9335075340557 L 650.6 -464.9335075340557" style="stroke-width:0.7;"/> + <path d="M 650.6 -454.9335075340557 L 640.6 -464.9335075340557" style="stroke-width:0.7;"/> + <path d="M 679.0 -449.0132533114453 L 689.0 -459.0132533114453" style="stroke-width:0.7;"/> + <path d="M 689.0 -449.0132533114453 L 679.0 -459.0132533114453" style="stroke-width:0.7;"/> + </g> + <g style="clip-path:url(#clip39);"> + <path d="M 338.4 -455.9212331603877 L 376.8 -455.83574930156556 L 415.2 -463.893596993908 L 453.6 -451.16064368924003 L 492.0 -445.08284072682363 L 530.4 -467.46884342266765 L 568.8 -460.60859808580017 L 607.2 -458.9030625691845 L 645.6 -451.188309976882 L 684.0 -448.5414580148648" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip40);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip41);"> + <path d="M 331.25714285714287 -448.77837601753055 L 331.25714285714287 -463.0640903032448 L 345.54285714285714 -463.0640903032448 L 345.54285714285714 -448.77837601753055 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 331.25714285714287 -455.9212331603877 L 338.4 -463.0640903032448 L 345.54285714285714 -455.9212331603877 L 338.4 -448.77837601753055 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip42);"> + <path d="M 369.65714285714284 -448.69289215870845 L 369.65714285714284 -462.97860644442267 L 383.9428571428571 -462.97860644442267 L 383.9428571428571 -448.69289215870845 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 369.65714285714284 -455.83574930156556 L 376.8 -462.97860644442267 L 383.9428571428571 -455.83574930156556 L 376.8 -448.69289215870845 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip43);"> + <path d="M 408.0571428571429 -456.75073985105087 L 408.0571428571429 -471.0364541367651 L 422.34285714285716 -471.0364541367651 L 422.34285714285716 -456.75073985105087 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 408.0571428571429 -463.893596993908 L 415.2 -471.0364541367651 L 422.34285714285716 -463.893596993908 L 415.2 -456.75073985105087 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip44);"> + <path d="M 446.45714285714286 -444.01778654638287 L 446.45714285714286 -458.30350083209714 L 460.74285714285713 -458.30350083209714 L 460.74285714285713 -444.01778654638287 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 446.45714285714286 -451.16064368924003 L 453.6 -458.30350083209714 L 460.74285714285713 -451.16064368924003 L 453.6 -444.01778654638287 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip45);"> + <path d="M 484.8571428571429 -437.9399835839665 L 484.8571428571429 -452.2256978696808 L 499.1428571428571 -452.2256978696808 L 499.1428571428571 -437.9399835839665 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 484.8571428571429 -445.08284072682363 L 492.0 -452.2256978696808 L 499.1428571428571 -445.08284072682363 L 492.0 -437.9399835839665 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip46);"> + <path d="M 523.2571428571429 -460.32598627981054 L 523.2571428571429 -474.6117005655248 L 537.5428571428572 -474.6117005655248 L 537.5428571428572 -460.32598627981054 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 523.2571428571429 -467.46884342266765 L 530.4 -474.6117005655248 L 537.5428571428572 -467.46884342266765 L 530.4 -460.32598627981054 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip47);"> + <path d="M 561.6571428571428 -453.465740942943 L 561.6571428571428 -467.7514552286573 L 575.9428571428572 -467.7514552286573 L 575.9428571428572 -453.465740942943 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 561.6571428571428 -460.60859808580017 L 568.8 -467.7514552286573 L 575.9428571428572 -460.60859808580017 L 568.8 -453.465740942943 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip48);"> + <path d="M 600.0571428571428 -451.7602054263274 L 600.0571428571428 -466.04591971204167 L 614.3428571428572 -466.04591971204167 L 614.3428571428572 -451.7602054263274 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.0571428571428 -458.9030625691845 L 607.2 -466.04591971204167 L 614.3428571428572 -458.9030625691845 L 607.2 -451.7602054263274 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip49);"> + <path d="M 638.4571428571428 -444.0454528340249 L 638.4571428571428 -458.3311671197391 L 652.7428571428572 -458.3311671197391 L 652.7428571428572 -444.0454528340249 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 638.4571428571428 -451.188309976882 L 645.6 -458.3311671197391 L 652.7428571428572 -451.188309976882 L 645.6 -444.0454528340249 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip50);"> + <path d="M 676.8571428571429 -441.3986008720077 L 676.8571428571429 -455.6843151577219 L 691.1428571428571 -455.6843151577219 L 691.1428571428571 -441.3986008720077 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 676.8571428571429 -448.5414580148648 L 684.0 -455.6843151577219 L 691.1428571428571 -448.5414580148648 L 684.0 -441.3986008720077 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip51);"> + <path d="M 290 -94 L 290 -186 L 324 -186 L 324 -94 Z" style="stroke:none;"/> + </g> + <path d="M 300 -176.66666666666669 L 314 -176.66666666666669" style="stroke:rgb(0,138,0);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip52);"> + <path d="M 300.75 -171.66666666666669 L 300.75 -181.66666666666669 L 313.25 -181.66666666666669 L 313.25 -171.66666666666669 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 300.75 -171.66666666666669 L 313.25 -171.66666666666669 L 307.0 -181.66666666666669 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-172.0"> + cc_hash_mod_prime_nea_lc_1div8_1div2_nsth_map + </text> + <path d="M 300 -158.66666666666666 L 314 -158.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip53);"> + <path d="M 299.0 -150.66666666666666 L 299.0 -166.66666666666666 L 315.0 -166.66666666666666 L 315.0 -150.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -158.66666666666666 M 311.0 -158.66666666666666 L 311 -158.667 M 311 -158.667 A 4 4 0 1 0 303 -158.667 A 4 4 0 1 0 311 -158.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-154.0"> + n_hash_map_ncah + </text> + <path d="M 300 -140.66666666666666 L 314 -140.66666666666666" style="stroke:rgb(0,138,0);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip54);"> + <path d="M 300.75 -135.66666666666666 L 300.75 -145.66666666666666 L 313.25 -145.66666666666666 L 313.25 -135.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -135.66666666666666 L 300.75 -145.66666666666666 L 313.25 -145.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-136.0"> + cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map + </text> + <path d="M 300 -122.66666666666666 L 314 -122.66666666666666" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <path d="M 302.0 -117.66666666666666 L 312.0 -127.66666666666666" style="stroke-width:0.7;"/> + <path d="M 312.0 -117.66666666666666 L 302.0 -127.66666666666666" style="stroke-width:0.7;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-118.0"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map + </text> + <path d="M 300 -104.66666666666666 L 314 -104.66666666666666" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip55);"> + <path d="M 299.85714285714283 -97.52380952380952 L 299.85714285714283 -111.8095238095238 L 314.14285714285717 -111.8095238095238 L 314.14285714285717 -97.52380952380952 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 299.85714285714283 -104.66666666666666 L 307.0 -111.8095238095238 L 314.14285714285717 -104.66666666666666 L 307.0 -97.52380952380952 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-100.0"> + cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map + </text> + </g> + </g> + </g> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_container_tag_hierarchy.pdf b/libstdc++-v3/doc/xml/images/pbds_container_tag_hierarchy.pdf Binary files differnew file mode 100644 index 00000000000..b9581c2ab63 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_container_tag_hierarchy.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_container_tag_hierarchy.png b/libstdc++-v3/doc/xml/images/pbds_container_tag_hierarchy.png Binary files differnew file mode 100644 index 00000000000..f827f6e0b03 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_container_tag_hierarchy.png diff --git a/libstdc++-v3/doc/xml/images/pbds_container_tag_hierarchy.svg b/libstdc++-v3/doc/xml/images/pbds_container_tag_hierarchy.svg new file mode 100644 index 00000000000..cedb9551111 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_container_tag_hierarchy.svg @@ -0,0 +1,256 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Generated by graphviz version 2.26.3 (20100126.1600) + --> +<!-- Title: G Pages: 1 --> +<svg width="924pt" height="436pt" viewBox="0.00 0.00 924.00 436.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph1" class="graph" transform="scale(1) rotate(0) translate(4, 432)"> +<title>G</title> +<polygon fill="white" stroke="white" points="-4,5 -4,-432 921,-432 921,5 -4,5"/> +<!-- Node1 --> +<g id="node1" class="node"><title>Node1</title> +<polygon fill="#bfbfbf" stroke="black" points="0.5,-114 0.5,-134 143.5,-134 143.5,-114 0.5,-114"/> +<text text-anchor="middle" x="72" y="-121.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::container_tag</text> +</g> +<!-- Node2 --> +<g id="node3" class="node"><title>Node2</title> +<a xlink:href="a00181.html" target="_top" xlink:title="Basic associative-container."> +<polygon fill="white" stroke="black" points="187,-247 187,-267 337,-267 337,-247 187,-247"/> +<text text-anchor="middle" x="262" y="-254.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::associative_tag</text> +</a> +</g> +<!-- Node1->Node2 --> +<g id="edge2" class="edge"><title>Node1->Node2</title> +<path fill="none" stroke="midnightblue" d="M94.8477,-139.993C134.478,-167.735 214.859,-224.001 247.617,-246.932"/> +<polygon fill="midnightblue" stroke="midnightblue" points="96.793,-137.083 86.5935,-134.215 92.7787,-142.817 96.793,-137.083"/> +</g> +<!-- Node14 --> +<g id="node27" class="node"><title>Node14</title> +<a xlink:href="a00353.html" target="_top" xlink:title="Basic priority-queue."> +<polygon fill="white" stroke="black" points="180,-114 180,-134 344,-134 344,-114 180,-114"/> +<text text-anchor="middle" x="262" y="-121.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::priority_queue_tag</text> +</a> +</g> +<!-- Node1->Node14 --> +<g id="edge26" class="edge"><title>Node1->Node14</title> +<path fill="none" stroke="midnightblue" d="M153.696,-124C162.404,-124 171.265,-124 179.978,-124"/> +<polygon fill="midnightblue" stroke="midnightblue" points="153.56,-120.5 143.56,-124 153.56,-127.5 153.56,-120.5"/> +</g> +<!-- Node20 --> +<g id="node39" class="node"><title>Node20</title> +<a xlink:href="a00370.html" target="_top" xlink:title="Basic sequence."> +<polygon fill="white" stroke="black" points="190,-38 190,-58 334,-58 334,-38 190,-38"/> +<text text-anchor="middle" x="262" y="-45.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::sequence_tag</text> +</a> +</g> +<!-- Node1->Node20 --> +<g id="edge38" class="edge"><title>Node1->Node20</title> +<path fill="none" stroke="midnightblue" d="M106.781,-110.088C144.452,-95.0192 203.618,-71.3528 236.968,-58.0129"/> +<polygon fill="midnightblue" stroke="midnightblue" points="105.215,-106.944 97.2305,-113.908 107.815,-113.443 105.215,-106.944"/> +</g> +<!-- Node3 --> +<g id="node5" class="node"><title>Node3</title> +<a xlink:href="a00183.html" target="_top" xlink:title="Basic branch structure."> +<polygon fill="white" stroke="black" points="390,-304 390,-324 550,-324 550,-304 390,-304"/> +<text text-anchor="middle" x="470" y="-311.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::basic_branch_tag</text> +</a> +</g> +<!-- Node2->Node3 --> +<g id="edge4" class="edge"><title>Node2->Node3</title> +<path fill="none" stroke="midnightblue" d="M300.076,-270.369C323.049,-278.157 353.003,-287.824 380,-295 392.192,-298.241 405.431,-301.291 417.908,-303.959"/> +<polygon fill="midnightblue" stroke="midnightblue" points="300.963,-266.973 290.368,-267.049 298.698,-273.596 300.963,-266.973"/> +</g> +<!-- Node10 --> +<g id="node19" class="node"><title>Node10</title> +<a xlink:href="a00185.html" target="_top" xlink:title="Basic hash structure."> +<polygon fill="white" stroke="black" points="395,-266 395,-286 545,-286 545,-266 395,-266"/> +<text text-anchor="middle" x="470" y="-273.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::basic_hash_tag</text> +</a> +</g> +<!-- Node2->Node10 --> +<g id="edge18" class="edge"><title>Node2->Node10</title> +<path fill="none" stroke="midnightblue" d="M347.308,-264.793C363.005,-266.226 379.29,-267.714 394.668,-269.119"/> +<polygon fill="midnightblue" stroke="midnightblue" points="347.37,-261.284 337.093,-263.859 346.733,-268.255 347.37,-261.284"/> +</g> +<!-- Node13 --> +<g id="node25" class="node"><title>Node13</title> +<a xlink:href="a00343.html" target="_top" xlink:title="List-update."> +<polygon fill="white" stroke="black" points="395.5,-228 395.5,-248 544.5,-248 544.5,-228 395.5,-228"/> +<text text-anchor="middle" x="470" y="-235.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::list_update_tag</text> +</a> +</g> +<!-- Node2->Node13 --> +<g id="edge24" class="edge"><title>Node2->Node13</title> +<path fill="none" stroke="midnightblue" d="M347.436,-249.196C363.332,-247.744 379.826,-246.237 395.366,-244.818"/> +<polygon fill="midnightblue" stroke="midnightblue" points="346.733,-245.745 337.093,-250.141 347.37,-252.716 346.733,-245.745"/> +</g> +<!-- Node4 --> +<g id="node7" class="node"><title>Node4</title> +<a xlink:href="a00376.html" target="_top" xlink:title="Basic tree structure."> +<polygon fill="white" stroke="black" points="606.5,-361 606.5,-381 723.5,-381 723.5,-361 606.5,-361"/> +<text text-anchor="middle" x="665" y="-368.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::tree_tag</text> +</a> +</g> +<!-- Node3->Node4 --> +<g id="edge6" class="edge"><title>Node3->Node4</title> +<path fill="none" stroke="midnightblue" d="M514.437,-326.989C549.695,-337.296 598.267,-351.493 630.603,-360.946"/> +<polygon fill="midnightblue" stroke="midnightblue" points="514.994,-323.506 504.413,-324.059 513.03,-330.224 514.994,-323.506"/> +</g> +<!-- Node8 --> +<g id="node15" class="node"><title>Node8</title> +<a xlink:href="a00381.html" target="_top" xlink:title="Basic trie structure."> +<polygon fill="white" stroke="black" points="608.5,-304 608.5,-324 721.5,-324 721.5,-304 608.5,-304"/> +<text text-anchor="middle" x="665" y="-311.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::trie_tag</text> +</a> +</g> +<!-- Node3->Node8 --> +<g id="edge14" class="edge"><title>Node3->Node8</title> +<path fill="none" stroke="midnightblue" d="M560.301,-314C576.675,-314 593.321,-314 608.378,-314"/> +<polygon fill="midnightblue" stroke="midnightblue" points="560.158,-310.5 550.158,-314 560.158,-317.5 560.158,-310.5"/> +</g> +<!-- Node5 --> +<g id="node9" class="node"><title>Node5</title> +<a xlink:href="a00348.html" target="_top" xlink:title="Ordered-vector tree."> +<polygon fill="white" stroke="black" points="777,-408 777,-428 909,-428 909,-408 777,-408"/> +<text text-anchor="middle" x="843" y="-415.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::ov_tree_tag</text> +</a> +</g> +<!-- Node4->Node5 --> +<g id="edge8" class="edge"><title>Node4->Node5</title> +<path fill="none" stroke="midnightblue" d="M712.14,-383.635C730.228,-388.466 751.067,-394.012 770,-399 781.144,-401.936 793.253,-405.099 804.346,-407.985"/> +<polygon fill="midnightblue" stroke="midnightblue" points="712.969,-380.234 702.404,-381.033 711.161,-386.996 712.969,-380.234"/> +</g> +<!-- Node6 --> +<g id="node11" class="node"><title>Node6</title> +<a xlink:href="a00356.html" target="_top" xlink:title="Red-black tree."> +<polygon fill="white" stroke="black" points="777.5,-370 777.5,-390 908.5,-390 908.5,-370 777.5,-370"/> +<text text-anchor="middle" x="843" y="-377.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::rb_tree_tag</text> +</a> +</g> +<!-- Node4->Node6 --> +<g id="edge10" class="edge"><title>Node4->Node6</title> +<path fill="none" stroke="midnightblue" d="M733.976,-374.488C748.188,-375.206 763.117,-375.961 777.212,-376.674"/> +<polygon fill="midnightblue" stroke="midnightblue" points="733.941,-370.981 723.777,-373.972 733.588,-377.972 733.941,-370.981"/> +</g> +<!-- Node7 --> +<g id="node13" class="node"><title>Node7</title> +<a xlink:href="a00371.html" target="_top" xlink:title="Splay tree."> +<polygon fill="white" stroke="black" points="770,-332 770,-352 916,-352 916,-332 770,-332"/> +<text text-anchor="middle" x="843" y="-339.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::splay_tree_tag</text> +</a> +</g> +<!-- Node4->Node7 --> +<g id="edge12" class="edge"><title>Node4->Node7</title> +<path fill="none" stroke="midnightblue" d="M733.937,-359.769C749.623,-357.213 766.186,-354.515 781.537,-352.014"/> +<polygon fill="midnightblue" stroke="midnightblue" points="733.084,-356.361 723.777,-361.424 734.21,-363.27 733.084,-356.361"/> +</g> +<!-- Node9 --> +<g id="node17" class="node"><title>Node9</title> +<a xlink:href="a00350.html" target="_top" xlink:title="PATRICIA trie."> +<polygon fill="white" stroke="black" points="776,-294 776,-314 910,-314 910,-294 776,-294"/> +<text text-anchor="middle" x="843" y="-301.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::pat_trie_tag</text> +</a> +</g> +<!-- Node8->Node9 --> +<g id="edge16" class="edge"><title>Node8->Node9</title> +<path fill="none" stroke="midnightblue" d="M732.074,-310.232C746.397,-309.427 761.529,-308.577 775.855,-307.772"/> +<polygon fill="midnightblue" stroke="midnightblue" points="731.598,-306.753 721.81,-310.808 731.99,-313.742 731.598,-306.753"/> +</g> +<!-- Node11 --> +<g id="node21" class="node"><title>Node11</title> +<a xlink:href="a00191.html" target="_top" xlink:title="Collision-chaining hash."> +<polygon fill="white" stroke="black" points="597,-266 597,-286 733,-286 733,-266 597,-266"/> +<text text-anchor="middle" x="665" y="-273.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::cc_hash_tag</text> +</a> +</g> +<!-- Node10->Node11 --> +<g id="edge20" class="edge"><title>Node10->Node11</title> +<path fill="none" stroke="midnightblue" d="M555.203,-276C569.165,-276 583.469,-276 596.944,-276"/> +<polygon fill="midnightblue" stroke="midnightblue" points="555.113,-272.5 545.113,-276 555.113,-279.5 555.113,-272.5"/> +</g> +<!-- Node12 --> +<g id="node23" class="node"><title>Node12</title> +<a xlink:href="a00334.html" target="_top" xlink:title="General-probing hash."> +<polygon fill="white" stroke="black" points="596.5,-228 596.5,-248 733.5,-248 733.5,-228 596.5,-228"/> +<text text-anchor="middle" x="665" y="-235.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::gp_hash_tag</text> +</a> +</g> +<!-- Node10->Node12 --> +<g id="edge22" class="edge"><title>Node10->Node12</title> +<path fill="none" stroke="midnightblue" d="M531.394,-264.036C557.814,-258.887 588.354,-252.936 613.561,-248.024"/> +<polygon fill="midnightblue" stroke="midnightblue" points="530.635,-260.618 521.489,-265.966 531.974,-267.489 530.635,-260.618"/> +</g> +<!-- Node15 --> +<g id="node29" class="node"><title>Node15</title> +<a xlink:href="a00187.html" target="_top" xlink:title="Binary-heap (array-based)."> +<polygon fill="white" stroke="black" points="392.5,-190 392.5,-210 547.5,-210 547.5,-190 392.5,-190"/> +<text text-anchor="middle" x="470" y="-197.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::binary_heap_tag</text> +</a> +</g> +<!-- Node14->Node15 --> +<g id="edge28" class="edge"><title>Node14->Node15</title> +<path fill="none" stroke="midnightblue" d="M288.374,-139.033C311.786,-151.814 347.263,-169.822 380,-181 390.277,-184.509 401.444,-187.494 412.304,-189.987"/> +<polygon fill="midnightblue" stroke="midnightblue" points="289.867,-135.859 279.422,-134.079 286.477,-141.984 289.867,-135.859"/> +</g> +<!-- Node16 --> +<g id="node31" class="node"><title>Node16</title> +<a xlink:href="a00188.html" target="_top" xlink:title="Binomial-heap."> +<polygon fill="white" stroke="black" points="387.5,-152 387.5,-172 552.5,-172 552.5,-152 387.5,-152"/> +<text text-anchor="middle" x="470" y="-159.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::binomial_heap_tag</text> +</a> +</g> +<!-- Node14->Node16 --> +<g id="edge30" class="edge"><title>Node14->Node16</title> +<path fill="none" stroke="midnightblue" d="M327.114,-135.896C355.381,-141.06 388.126,-147.042 415.132,-151.976"/> +<polygon fill="midnightblue" stroke="midnightblue" points="327.388,-132.388 316.922,-134.034 326.13,-139.274 327.388,-132.388"/> +</g> +<!-- Node17 --> +<g id="node33" class="node"><title>Node17</title> +<a xlink:href="a00349.html" target="_top" xlink:title="Pairing-heap."> +<polygon fill="white" stroke="black" points="391,-114 391,-134 549,-134 549,-114 391,-114"/> +<text text-anchor="middle" x="470" y="-121.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::pairing_heap_tag</text> +</a> +</g> +<!-- Node14->Node17 --> +<g id="edge32" class="edge"><title>Node14->Node17</title> +<path fill="none" stroke="midnightblue" d="M354.347,-124C366.497,-124 378.861,-124 390.766,-124"/> +<polygon fill="midnightblue" stroke="midnightblue" points="354.207,-120.5 344.207,-124 354.207,-127.5 354.207,-120.5"/> +</g> +<!-- Node18 --> +<g id="node35" class="node"><title>Node18</title> +<a xlink:href="a00357.html" target="_top" xlink:title="Redundant-counter binomial-heap."> +<polygon fill="white" stroke="black" points="380.5,-76 380.5,-96 559.5,-96 559.5,-76 380.5,-76"/> +<text text-anchor="middle" x="470" y="-83.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::rc_binomial_heap_tag</text> +</a> +</g> +<!-- Node14->Node18 --> +<g id="edge34" class="edge"><title>Node14->Node18</title> +<path fill="none" stroke="midnightblue" d="M327.114,-112.104C355.381,-106.94 388.126,-100.958 415.132,-96.024"/> +<polygon fill="midnightblue" stroke="midnightblue" points="326.13,-108.726 316.922,-113.966 327.388,-115.612 326.13,-108.726"/> +</g> +<!-- Node19 --> +<g id="node37" class="node"><title>Node19</title> +<a xlink:href="a00373.html" target="_top" xlink:title="Thin heap."> +<polygon fill="white" stroke="black" points="398,-38 398,-58 542,-58 542,-38 398,-38"/> +<text text-anchor="middle" x="470" y="-45.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::thin_heap_tag</text> +</a> +</g> +<!-- Node14->Node19 --> +<g id="edge36" class="edge"><title>Node14->Node19</title> +<path fill="none" stroke="midnightblue" d="M288.374,-108.967C311.786,-96.1857 347.263,-78.1778 380,-67 390.277,-63.4912 401.444,-60.5058 412.304,-58.0134"/> +<polygon fill="midnightblue" stroke="midnightblue" points="286.477,-106.016 279.422,-113.921 289.867,-112.141 286.477,-106.016"/> +</g> +<!-- Node21 --> +<g id="node41" class="node"><title>Node21</title> +<a xlink:href="a00372.html" target="_top" xlink:title="Basic string container, inclusive of strings, ropes, etc."> +<polygon fill="white" stroke="black" points="407.5,-0 407.5,-20 532.5,-20 532.5,-0 407.5,-0"/> +<text text-anchor="middle" x="470" y="-7.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::string_tag</text> +</a> +</g> +<!-- Node20->Node21 --> +<g id="edge40" class="edge"><title>Node20->Node21</title> +<path fill="none" stroke="midnightblue" d="M327.114,-36.1041C355.381,-30.9399 388.126,-24.9578 415.132,-20.024"/> +<polygon fill="midnightblue" stroke="midnightblue" points="326.13,-32.726 316.922,-37.9662 327.388,-39.612 326.13,-32.726"/> +</g> +</g> +</svg>
\ No newline at end of file diff --git a/libstdc++-v3/doc/html/ext/pb_ds/different_underlying_dss.png b/libstdc++-v3/doc/xml/images/pbds_different_underlying_dss_1.png Binary files differindex adee1263600..adee1263600 100644 --- a/libstdc++-v3/doc/html/ext/pb_ds/different_underlying_dss.png +++ b/libstdc++-v3/doc/xml/images/pbds_different_underlying_dss_1.png diff --git a/libstdc++-v3/doc/html/ext/pb_ds/pq_different_underlying_dss.png b/libstdc++-v3/doc/xml/images/pbds_different_underlying_dss_2.png Binary files differindex 9d84791fc0d..9d84791fc0d 100644 --- a/libstdc++-v3/doc/html/ext/pb_ds/pq_different_underlying_dss.png +++ b/libstdc++-v3/doc/xml/images/pbds_different_underlying_dss_2.png diff --git a/libstdc++-v3/doc/html/ext/pb_ds/embedded_lists_1.png b/libstdc++-v3/doc/xml/images/pbds_embedded_lists_1.png Binary files differindex 9470a65b568..9470a65b568 100644 --- a/libstdc++-v3/doc/html/ext/pb_ds/embedded_lists_1.png +++ b/libstdc++-v3/doc/xml/images/pbds_embedded_lists_1.png diff --git a/libstdc++-v3/doc/html/ext/pb_ds/embedded_lists_2.png b/libstdc++-v3/doc/xml/images/pbds_embedded_lists_2.png Binary files differindex d2ac91c1ab0..d2ac91c1ab0 100644 --- a/libstdc++-v3/doc/html/ext/pb_ds/embedded_lists_2.png +++ b/libstdc++-v3/doc/xml/images/pbds_embedded_lists_2.png diff --git a/libstdc++-v3/doc/html/ext/pb_ds/embedded_lists_3.png b/libstdc++-v3/doc/xml/images/pbds_embedded_lists_3.png Binary files differindex 08ecb0ffe16..08ecb0ffe16 100644 --- a/libstdc++-v3/doc/html/ext/pb_ds/embedded_lists_3.png +++ b/libstdc++-v3/doc/xml/images/pbds_embedded_lists_3.png diff --git a/libstdc++-v3/doc/xml/images/pbds_exception_hierarchy.pdf b/libstdc++-v3/doc/xml/images/pbds_exception_hierarchy.pdf Binary files differnew file mode 100644 index 00000000000..ccc3001173c --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_exception_hierarchy.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_exception_hierarchy.png b/libstdc++-v3/doc/xml/images/pbds_exception_hierarchy.png Binary files differnew file mode 100644 index 00000000000..a7c33838253 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_exception_hierarchy.png diff --git a/libstdc++-v3/doc/xml/images/pbds_exception_hierarchy.svg b/libstdc++-v3/doc/xml/images/pbds_exception_hierarchy.svg new file mode 100644 index 00000000000..ac6067ad803 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_exception_hierarchy.svg @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Generated by graphviz version 2.26.3 (20100126.1600) + --> +<!-- Title: G Pages: 1 --> +<svg width="430pt" height="204pt" viewBox="0.00 0.00 430.00 204.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph1" class="graph" transform="scale(1) rotate(0) translate(4, 200)"> +<title>G</title> +<polygon fill="white" stroke="white" points="-4,5 -4,-200 427,-200 427,5 -4,5"/> +<!-- Node1 --> +<g id="node1" class="node"><title>Node1</title> +<polygon fill="#bfbfbf" stroke="black" points="136,-59 136,-79 286,-79 286,-59 136,-59"/> +<text text-anchor="middle" x="211" y="-66.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::container_error</text> +</g> +<!-- Node4 --> +<g id="node7" class="node"><title>Node4</title> +<a xlink:href="a00339.html" target="_top" xlink:title="An entry cannot be inserted into a container object for logical reasons (not, e.g., if memory is unabvailable, in which case the allocator_type's exception will be thrown)."> +<polygon fill="white" stroke="black" points="0,-1 0,-21 132,-21 132,-1 0,-1"/> +<text text-anchor="middle" x="66" y="-8.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::insert_error</text> +</a> +</g> +<!-- Node1->Node4 --> +<g id="edge6" class="edge"><title>Node1->Node4</title> +<path fill="none" stroke="midnightblue" d="M176.225,-55.0898C150.121,-44.6486 114.974,-30.5898 91.4542,-21.1817"/> +<polygon fill="midnightblue" stroke="midnightblue" points="175.158,-58.4329 185.743,-58.8972 177.758,-51.9335 175.158,-58.4329"/> +</g> +<!-- Node5 --> +<g id="node9" class="node"><title>Node5</title> +<a xlink:href="a00340.html" target="_top" xlink:title="A join cannot be performed logical reasons (i.e., the ranges of the two container objects being joine..."> +<polygon fill="white" stroke="black" points="150,-1 150,-21 272,-21 272,-1 150,-1"/> +<text text-anchor="middle" x="211" y="-8.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::join_error</text> +</a> +</g> +<!-- Node1->Node5 --> +<g id="edge8" class="edge"><title>Node1->Node5</title> +<path fill="none" stroke="midnightblue" d="M211,-48.8902C211,-39.6201 211,-29.0083 211,-21.3776"/> +<polygon fill="midnightblue" stroke="midnightblue" points="207.5,-48.8971 211,-58.8972 214.5,-48.8972 207.5,-48.8971"/> +</g> +<!-- Node6 --> +<g id="node11" class="node"><title>Node6</title> +<a xlink:href="a00358.html" target="_top" xlink:title="A container cannot be resized."> +<polygon fill="white" stroke="black" points="290,-1 290,-21 422,-21 422,-1 290,-1"/> +<text text-anchor="middle" x="356" y="-8.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::resize_error</text> +</a> +</g> +<!-- Node1->Node6 --> +<g id="edge10" class="edge"><title>Node1->Node6</title> +<path fill="none" stroke="midnightblue" d="M245.775,-55.0898C271.879,-44.6486 307.026,-30.5898 330.546,-21.1817"/> +<polygon fill="midnightblue" stroke="midnightblue" points="244.242,-51.9335 236.257,-58.8972 246.842,-58.4329 244.242,-51.9335"/> +</g> +<!-- Node2 --> +<g id="node2" class="node"><title>Node2</title> +<a xlink:href="a00771.html" target="_top" xlink:title="One of two subclasses of exception."> +<polygon fill="white" stroke="black" points="167.5,-117 167.5,-137 254.5,-137 254.5,-117 167.5,-117"/> +<text text-anchor="middle" x="211" y="-124.9" font-family="FreeSans" font-size="9.00">std::logic_error</text> +</a> +</g> +<!-- Node2->Node1 --> +<g id="edge2" class="edge"><title>Node2->Node1</title> +<path fill="none" stroke="midnightblue" d="M211,-106.89C211,-97.6201 211,-87.0083 211,-79.3776"/> +<polygon fill="midnightblue" stroke="midnightblue" points="207.5,-106.897 211,-116.897 214.5,-106.897 207.5,-106.897"/> +</g> +<!-- Node3 --> +<g id="node4" class="node"><title>Node3</title> +<a xlink:href="a00647.html" target="_top" xlink:title="Base class for all library exceptions."> +<polygon fill="white" stroke="black" points="169.5,-175 169.5,-195 252.5,-195 252.5,-175 169.5,-175"/> +<text text-anchor="middle" x="211" y="-182.9" font-family="FreeSans" font-size="9.00">std::exception</text> +</a> +</g> +<!-- Node3->Node2 --> +<g id="edge4" class="edge"><title>Node3->Node2</title> +<path fill="none" stroke="midnightblue" d="M211,-164.89C211,-155.62 211,-145.008 211,-137.378"/> +<polygon fill="midnightblue" stroke="midnightblue" points="207.5,-164.897 211,-174.897 214.5,-164.897 207.5,-164.897"/> +</g> +</g> +</svg>
\ No newline at end of file diff --git a/libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_find_timing_test_local.pdf b/libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_find_timing_test_local.pdf Binary files differnew file mode 100644 index 00000000000..7b570b0695d --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_find_timing_test_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_find_timing_test_local.png b/libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_find_timing_test_local.png Binary files differnew file mode 100644 index 00000000000..1e8fdf1ede7 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_find_timing_test_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_find_timing_test_local.svg b/libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_find_timing_test_local.svg new file mode 100644 index 00000000000..92a2914bff8 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_find_timing_test_local.svg @@ -0,0 +1,369 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 416.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 332.15 -510.7894563318057 L 344.65 -510.7894563318057 L 338.4 -520.7894563318057 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 370.55 -504.6858000065939 L 383.05 -504.6858000065939 L 376.8 -514.6858000065939 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 408.95 -474.7949292802743 L 421.45 -474.7949292802743 L 415.2 -484.7949292802743 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 447.35 -504.6858000065939 L 459.85 -504.6858000065939 L 453.6 -514.6858000065939 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 485.75 -472.9286538524941 L 498.25 -472.9286538524941 L 492.0 -482.9286538524941 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 524.15 -488.7154726187729 L 536.65 -488.7154726187729 L 530.4 -498.7154726187729 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 562.55 -503.31347466288616 L 575.05 -503.31347466288616 L 568.8 -513.3134746628862 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 600.95 -515.0 L 613.45 -515.0 L 607.2 -525.0 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 639.35 -467.025914081303 L 651.85 -467.025914081303 L 645.6 -477.025914081303 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 677.75 -471.52658995746924 L 690.25 -471.52658995746924 L 684.0 -481.52658995746924 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 338.4 -427.19831195806273 M 342.4 -427.19831195806273 L 342.4 -427.198 M 342.4 -427.198 A 4 4 0 1 0 334.4 -427.198 A 4 4 0 1 0 342.4 -427.198 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 376.8 -423.666677656523 M 380.8 -423.666677656523 L 380.8 -423.667 M 380.8 -423.667 A 4 4 0 1 0 372.8 -423.667 A 4 4 0 1 0 380.8 -423.667 Z"/> + </clipPath> + <clipPath id="clip17"> + <path d="M 415.2 -419.5119844383634 M 419.2 -419.5119844383634 L 419.2 -419.512 M 419.2 -419.512 A 4 4 0 1 0 411.2 -419.512 A 4 4 0 1 0 419.2 -419.512 Z"/> + </clipPath> + <clipPath id="clip18"> + <path d="M 453.6 -426.89584913125185 M 457.6 -426.89584913125185 L 457.6 -426.896 M 457.6 -426.896 A 4 4 0 1 0 449.6 -426.896 A 4 4 0 1 0 457.6 -426.896 Z"/> + </clipPath> + <clipPath id="clip19"> + <path d="M 492.0 -425.5909795258976 M 496.0 -425.5909795258976 L 496 -425.591 M 496 -425.591 A 4 4 0 1 0 488 -425.591 A 4 4 0 1 0 496 -425.591 Z"/> + </clipPath> + <clipPath id="clip20"> + <path d="M 530.4 -426.4650028024134 M 534.4 -426.4650028024134 L 534.4 -426.465 M 534.4 -426.465 A 4 4 0 1 0 526.4 -426.465 A 4 4 0 1 0 534.4 -426.465 Z"/> + </clipPath> + <clipPath id="clip21"> + <path d="M 568.8 -431.3544558372622 M 572.8 -431.3544558372622 L 572.8 -431.354 M 572.8 -431.354 A 4 4 0 1 0 564.8 -431.354 A 4 4 0 1 0 572.8 -431.354 Z"/> + </clipPath> + <clipPath id="clip22"> + <path d="M 607.2 -431.1267020540041 M 611.2 -431.1267020540041 L 611.2 -431.127 M 611.2 -431.127 A 4 4 0 1 0 603.2 -431.127 A 4 4 0 1 0 611.2 -431.127 Z"/> + </clipPath> + <clipPath id="clip23"> + <path d="M 645.6 -431.0440143747321 M 649.6 -431.0440143747321 L 649.6 -431.044 M 649.6 -431.044 A 4 4 0 1 0 641.6 -431.044 A 4 4 0 1 0 649.6 -431.044 Z"/> + </clipPath> + <clipPath id="clip24"> + <path d="M 684.0 -430.6900530810062 M 688.0 -430.6900530810062 L 688 -430.69 M 688 -430.69 A 4 4 0 1 0 680 -430.69 A 4 4 0 1 0 688 -430.69 Z"/> + </clipPath> + <clipPath id="clip25"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip26"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip27"> + <path d="M 290 -134 L 290 -190 L 324 -190 L 324 -134 Z"/> + </clipPath> + <clipPath id="clip28"> + <path d="M 300.75 -175.66666666666669 L 313.25 -175.66666666666669 L 307.0 -185.66666666666669 Z"/> + </clipPath> + <clipPath id="clip29"> + <path d="M 307.0 -162.66666666666666 M 311.0 -162.66666666666666 L 311 -162.667 M 311 -162.667 A 4 4 0 1 0 303 -162.667 A 4 4 0 1 0 311 -162.667 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 6.07e-09 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.5004867321942"> + 1.21e-08 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.5004867321942"> + 1.82e-08 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.5004867321942"> + 2.43e-08 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321942"> + 3.03e-08 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 338.4 -515.7894563318057 L 376.8 -509.6858000065939 L 415.2 -479.7949292802743 L 453.6 -509.6858000065939 L 492.0 -477.9286538524941 L 530.4 -493.7154726187729 L 568.8 -508.31347466288616 L 607.2 -520.0 L 645.6 -472.025914081303 L 684.0 -476.52658995746924" style="stroke:rgb(0,138,0);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip3);"> + <path d="M 332.15 -510.7894563318057 L 332.15 -520.7894563318057 L 344.65 -520.7894563318057 L 344.65 -510.7894563318057 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 332.15 -510.7894563318057 L 344.65 -510.7894563318057 L 338.4 -520.7894563318057 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip4);"> + <path d="M 370.55 -504.6858000065939 L 370.55 -514.6858000065939 L 383.05 -514.6858000065939 L 383.05 -504.6858000065939 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 370.55 -504.6858000065939 L 383.05 -504.6858000065939 L 376.8 -514.6858000065939 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 408.95 -474.7949292802743 L 408.95 -484.7949292802743 L 421.45 -484.7949292802743 L 421.45 -474.7949292802743 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 408.95 -474.7949292802743 L 421.45 -474.7949292802743 L 415.2 -484.7949292802743 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 447.35 -504.6858000065939 L 447.35 -514.6858000065939 L 459.85 -514.6858000065939 L 459.85 -504.6858000065939 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 447.35 -504.6858000065939 L 459.85 -504.6858000065939 L 453.6 -514.6858000065939 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 485.75 -472.9286538524941 L 485.75 -482.9286538524941 L 498.25 -482.9286538524941 L 498.25 -472.9286538524941 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 485.75 -472.9286538524941 L 498.25 -472.9286538524941 L 492.0 -482.9286538524941 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 524.15 -488.7154726187729 L 524.15 -498.7154726187729 L 536.65 -498.7154726187729 L 536.65 -488.7154726187729 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 524.15 -488.7154726187729 L 536.65 -488.7154726187729 L 530.4 -498.7154726187729 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 562.55 -503.31347466288616 L 562.55 -513.3134746628862 L 575.05 -513.3134746628862 L 575.05 -503.31347466288616 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 562.55 -503.31347466288616 L 575.05 -503.31347466288616 L 568.8 -513.3134746628862 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip10);"> + <path d="M 600.95 -515.0 L 600.95 -525.0 L 613.45 -525.0 L 613.45 -515.0 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.95 -515.0 L 613.45 -515.0 L 607.2 -525.0 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip11);"> + <path d="M 639.35 -467.025914081303 L 639.35 -477.025914081303 L 651.85 -477.025914081303 L 651.85 -467.025914081303 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 639.35 -467.025914081303 L 651.85 -467.025914081303 L 645.6 -477.025914081303 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 677.75 -471.52658995746924 L 677.75 -481.52658995746924 L 690.25 -481.52658995746924 L 690.25 -471.52658995746924 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 677.75 -471.52658995746924 L 690.25 -471.52658995746924 L 684.0 -481.52658995746924 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip13);"> + <path d="M 338.4 -427.19831195806273 L 376.8 -423.666677656523 L 415.2 -419.5119844383634 L 453.6 -426.89584913125185 L 492.0 -425.5909795258976 L 530.4 -426.4650028024134 L 568.8 -431.3544558372622 L 607.2 -431.1267020540041 L 645.6 -431.0440143747321 L 684.0 -430.6900530810062" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip14);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip15);"> + <path d="M 330.4 -419.19831195806273 L 330.4 -435.19831195806273 L 346.4 -435.19831195806273 L 346.4 -419.19831195806273 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -427.19831195806273 M 342.4 -427.19831195806273 L 342.4 -427.198 M 342.4 -427.198 A 4 4 0 1 0 334.4 -427.198 A 4 4 0 1 0 342.4 -427.198 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip16);"> + <path d="M 368.8 -415.666677656523 L 368.8 -431.666677656523 L 384.8 -431.666677656523 L 384.8 -415.666677656523 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -423.666677656523 M 380.8 -423.666677656523 L 380.8 -423.667 M 380.8 -423.667 A 4 4 0 1 0 372.8 -423.667 A 4 4 0 1 0 380.8 -423.667 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip17);"> + <path d="M 407.2 -411.5119844383634 L 407.2 -427.5119844383634 L 423.2 -427.5119844383634 L 423.2 -411.5119844383634 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -419.5119844383634 M 419.2 -419.5119844383634 L 419.2 -419.512 M 419.2 -419.512 A 4 4 0 1 0 411.2 -419.512 A 4 4 0 1 0 419.2 -419.512 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip18);"> + <path d="M 445.6 -418.89584913125185 L 445.6 -434.89584913125185 L 461.6 -434.89584913125185 L 461.6 -418.89584913125185 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -426.89584913125185 M 457.6 -426.89584913125185 L 457.6 -426.896 M 457.6 -426.896 A 4 4 0 1 0 449.6 -426.896 A 4 4 0 1 0 457.6 -426.896 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip19);"> + <path d="M 484.0 -417.5909795258976 L 484.0 -433.5909795258976 L 500.0 -433.5909795258976 L 500.0 -417.5909795258976 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -425.5909795258976 M 496.0 -425.5909795258976 L 496 -425.591 M 496 -425.591 A 4 4 0 1 0 488 -425.591 A 4 4 0 1 0 496 -425.591 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip20);"> + <path d="M 522.4 -418.4650028024134 L 522.4 -434.4650028024134 L 538.4 -434.4650028024134 L 538.4 -418.4650028024134 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -426.4650028024134 M 534.4 -426.4650028024134 L 534.4 -426.465 M 534.4 -426.465 A 4 4 0 1 0 526.4 -426.465 A 4 4 0 1 0 534.4 -426.465 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip21);"> + <path d="M 560.8 -423.3544558372622 L 560.8 -439.3544558372622 L 576.8 -439.3544558372622 L 576.8 -423.3544558372622 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -431.3544558372622 M 572.8 -431.3544558372622 L 572.8 -431.354 M 572.8 -431.354 A 4 4 0 1 0 564.8 -431.354 A 4 4 0 1 0 572.8 -431.354 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip22);"> + <path d="M 599.2 -423.1267020540041 L 599.2 -439.1267020540041 L 615.2 -439.1267020540041 L 615.2 -423.1267020540041 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -431.1267020540041 M 611.2 -431.1267020540041 L 611.2 -431.127 M 611.2 -431.127 A 4 4 0 1 0 603.2 -431.127 A 4 4 0 1 0 611.2 -431.127 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip23);"> + <path d="M 637.6 -423.0440143747321 L 637.6 -439.0440143747321 L 653.6 -439.0440143747321 L 653.6 -423.0440143747321 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -431.0440143747321 M 649.6 -431.0440143747321 L 649.6 -431.044 M 649.6 -431.044 A 4 4 0 1 0 641.6 -431.044 A 4 4 0 1 0 649.6 -431.044 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip24);"> + <path d="M 676.0 -422.6900530810062 L 676.0 -438.6900530810062 L 692.0 -438.6900530810062 L 692.0 -422.6900530810062 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -430.6900530810062 M 688.0 -430.6900530810062 L 688 -430.69 M 688 -430.69 A 4 4 0 1 0 680 -430.69 A 4 4 0 1 0 688 -430.69 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip25);"> + <path d="M 338.4 -358.46134977415846 L 376.8 -360.1617421120306 L 415.2 -350.4975107975339 L 453.6 -359.8586264877518 L 492.0 -369.2490455309749 L 530.4 -352.2271339553592 L 568.8 -360.01283175628896 L 607.2 -362.97638719461935 L 645.6 -369.0183904256371 L 684.0 -375.6323893046718" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip26);"> + <path d="M 333.4 -353.46134977415846 L 343.4 -363.46134977415846" style="stroke-width:0.7;"/> + <path d="M 343.4 -353.46134977415846 L 333.4 -363.46134977415846" style="stroke-width:0.7;"/> + <path d="M 371.8 -355.1617421120306 L 381.8 -365.1617421120306" style="stroke-width:0.7;"/> + <path d="M 381.8 -355.1617421120306 L 371.8 -365.1617421120306" style="stroke-width:0.7;"/> + <path d="M 410.2 -345.4975107975339 L 420.2 -355.4975107975339" style="stroke-width:0.7;"/> + <path d="M 420.2 -345.4975107975339 L 410.2 -355.4975107975339" style="stroke-width:0.7;"/> + <path d="M 448.6 -354.8586264877518 L 458.6 -364.8586264877518" style="stroke-width:0.7;"/> + <path d="M 458.6 -354.8586264877518 L 448.6 -364.8586264877518" style="stroke-width:0.7;"/> + <path d="M 487.0 -364.2490455309749 L 497.0 -374.2490455309749" style="stroke-width:0.7;"/> + <path d="M 497.0 -364.2490455309749 L 487.0 -374.2490455309749" style="stroke-width:0.7;"/> + <path d="M 525.4 -347.2271339553592 L 535.4 -357.2271339553592" style="stroke-width:0.7;"/> + <path d="M 535.4 -347.2271339553592 L 525.4 -357.2271339553592" style="stroke-width:0.7;"/> + <path d="M 563.8 -355.01283175628896 L 573.8 -365.01283175628896" style="stroke-width:0.7;"/> + <path d="M 573.8 -355.01283175628896 L 563.8 -365.01283175628896" style="stroke-width:0.7;"/> + <path d="M 602.2 -357.97638719461935 L 612.2 -367.97638719461935" style="stroke-width:0.7;"/> + <path d="M 612.2 -357.97638719461935 L 602.2 -367.97638719461935" style="stroke-width:0.7;"/> + <path d="M 640.6 -364.0183904256371 L 650.6 -374.0183904256371" style="stroke-width:0.7;"/> + <path d="M 650.6 -364.0183904256371 L 640.6 -374.0183904256371" style="stroke-width:0.7;"/> + <path d="M 679.0 -370.6323893046718 L 689.0 -380.6323893046718" style="stroke-width:0.7;"/> + <path d="M 689.0 -370.6323893046718 L 679.0 -380.6323893046718" style="stroke-width:0.7;"/> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip27);"> + <path d="M 290 -134 L 290 -190 L 324 -190 L 324 -134 Z" style="stroke:none;"/> + </g> + <path d="M 300 -180.66666666666669 L 314 -180.66666666666669" style="stroke:rgb(0,138,0);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip28);"> + <path d="M 300.75 -175.66666666666669 L 300.75 -185.66666666666669 L 313.25 -185.66666666666669 L 313.25 -175.66666666666669 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 300.75 -175.66666666666669 L 313.25 -175.66666666666669 L 307.0 -185.66666666666669 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-176.0"> + gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map + </text> + <path d="M 300 -162.66666666666666 L 314 -162.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip29);"> + <path d="M 299.0 -154.66666666666666 L 299.0 -170.66666666666666 L 315.0 -170.66666666666666 L 315.0 -154.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -162.66666666666666 M 311.0 -162.66666666666666 L 311 -162.667 M 311 -162.667 A 4 4 0 1 0 303 -162.667 A 4 4 0 1 0 311 -162.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-158.0"> + n_hash_map_ncah + </text> + <path d="M 300 -144.66666666666666 L 314 -144.66666666666666" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <path d="M 302.0 -139.66666666666666 L 312.0 -149.66666666666666" style="stroke-width:0.7;"/> + <path d="M 312.0 -139.66666666666666 L 302.0 -149.66666666666666" style="stroke-width:0.7;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-140.0"> + gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_map + </text> + </g> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_subscript_timing_test_find_local.pdf b/libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_subscript_timing_test_find_local.pdf Binary files differnew file mode 100644 index 00000000000..1e7f06c9ed2 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_subscript_timing_test_find_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_subscript_timing_test_find_local.png b/libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_subscript_timing_test_find_local.png Binary files differnew file mode 100644 index 00000000000..47c19ca203f --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_subscript_timing_test_find_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_subscript_timing_test_find_local.svg b/libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_subscript_timing_test_find_local.svg new file mode 100644 index 00000000000..be324e4cdcb --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_subscript_timing_test_find_local.svg @@ -0,0 +1,369 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 416.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 332.15 -490.97006552866367 L 344.65 -490.97006552866367 L 338.4 -500.97006552866367 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 370.55 -488.57217397844545 L 383.05 -488.57217397844545 L 376.8 -498.57217397844545 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 408.95 -475.82156836322497 L 421.45 -475.82156836322497 L 415.2 -485.82156836322497 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 447.35 -496.25949162793756 L 459.85 -496.25949162793756 L 453.6 -506.25949162793756 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 485.75 -464.12581440753127 L 498.25 -464.12581440753127 L 492.0 -474.12581440753127 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 524.15 -472.3791668364165 L 536.65 -472.3791668364165 L 530.4 -482.3791668364165 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 562.55 -481.68461314271207 L 575.05 -481.68461314271207 L 568.8 -491.68461314271207 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 600.95 -495.53971049555463 L 613.45 -495.53971049555463 L 607.2 -505.53971049555463 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 639.35 -494.5627661808165 L 651.85 -494.5627661808165 L 645.6 -504.5627661808165 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 677.75 -515.0 L 690.25 -515.0 L 684.0 -525.0 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 338.4 -407.71759057590634 M 342.4 -407.71759057590634 L 342.4 -407.718 M 342.4 -407.718 A 4 4 0 1 0 334.4 -407.718 A 4 4 0 1 0 342.4 -407.718 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 376.8 -414.10737173962775 M 380.8 -414.10737173962775 L 380.8 -414.107 M 380.8 -414.107 A 4 4 0 1 0 372.8 -414.107 A 4 4 0 1 0 380.8 -414.107 Z"/> + </clipPath> + <clipPath id="clip17"> + <path d="M 415.2 -408.428408916411 M 419.2 -408.428408916411 L 419.2 -408.428 M 419.2 -408.428 A 4 4 0 1 0 411.2 -408.428 A 4 4 0 1 0 419.2 -408.428 Z"/> + </clipPath> + <clipPath id="clip18"> + <path d="M 453.6 -413.90536419960074 M 457.6 -413.90536419960074 L 457.6 -413.905 M 457.6 -413.905 A 4 4 0 1 0 449.6 -413.905 A 4 4 0 1 0 457.6 -413.905 Z"/> + </clipPath> + <clipPath id="clip19"> + <path d="M 492.0 -422.3703764059204 M 496.0 -422.3703764059204 L 496 -422.37 M 496 -422.37 A 4 4 0 1 0 488 -422.37 A 4 4 0 1 0 496 -422.37 Z"/> + </clipPath> + <clipPath id="clip20"> + <path d="M 530.4 -415.6827547736268 M 534.4 -415.6827547736268 L 534.4 -415.683 M 534.4 -415.683 A 4 4 0 1 0 526.4 -415.683 A 4 4 0 1 0 534.4 -415.683 Z"/> + </clipPath> + <clipPath id="clip21"> + <path d="M 568.8 -415.5310767572243 M 572.8 -415.5310767572243 L 572.8 -415.531 M 572.8 -415.531 A 4 4 0 1 0 564.8 -415.531 A 4 4 0 1 0 572.8 -415.531 Z"/> + </clipPath> + <clipPath id="clip22"> + <path d="M 607.2 -423.0005296195201 M 611.2 -423.0005296195201 L 611.2 -423.001 M 611.2 -423.001 A 4 4 0 1 0 603.2 -423.001 A 4 4 0 1 0 611.2 -423.001 Z"/> + </clipPath> + <clipPath id="clip23"> + <path d="M 645.6 -417.433946417547 M 649.6 -417.433946417547 L 649.6 -417.434 M 649.6 -417.434 A 4 4 0 1 0 641.6 -417.434 A 4 4 0 1 0 649.6 -417.434 Z"/> + </clipPath> + <clipPath id="clip24"> + <path d="M 684.0 -418.55153762022206 M 688.0 -418.55153762022206 L 688 -418.552 M 688 -418.552 A 4 4 0 1 0 680 -418.552 A 4 4 0 1 0 688 -418.552 Z"/> + </clipPath> + <clipPath id="clip25"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip26"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip27"> + <path d="M 290 -134 L 290 -190 L 324 -190 L 324 -134 Z"/> + </clipPath> + <clipPath id="clip28"> + <path d="M 300.75 -175.66666666666669 L 313.25 -175.66666666666669 L 307.0 -185.66666666666669 Z"/> + </clipPath> + <clipPath id="clip29"> + <path d="M 307.0 -162.66666666666666 M 311.0 -162.66666666666666 L 311 -162.667 M 311 -162.667 A 4 4 0 1 0 303 -162.667 A 4 4 0 1 0 311 -162.667 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 6.38e-09 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.5004867321942"> + 1.28e-08 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.5004867321942"> + 1.91e-08 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.5004867321942"> + 2.55e-08 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321942"> + 3.19e-08 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 338.4 -495.97006552866367 L 376.8 -493.57217397844545 L 415.2 -480.82156836322497 L 453.6 -501.25949162793756 L 492.0 -469.12581440753127 L 530.4 -477.3791668364165 L 568.8 -486.68461314271207 L 607.2 -500.53971049555463 L 645.6 -499.5627661808165 L 684.0 -520.0" style="stroke:rgb(0,138,0);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip3);"> + <path d="M 332.15 -490.97006552866367 L 332.15 -500.97006552866367 L 344.65 -500.97006552866367 L 344.65 -490.97006552866367 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 332.15 -490.97006552866367 L 344.65 -490.97006552866367 L 338.4 -500.97006552866367 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip4);"> + <path d="M 370.55 -488.57217397844545 L 370.55 -498.57217397844545 L 383.05 -498.57217397844545 L 383.05 -488.57217397844545 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 370.55 -488.57217397844545 L 383.05 -488.57217397844545 L 376.8 -498.57217397844545 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 408.95 -475.82156836322497 L 408.95 -485.82156836322497 L 421.45 -485.82156836322497 L 421.45 -475.82156836322497 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 408.95 -475.82156836322497 L 421.45 -475.82156836322497 L 415.2 -485.82156836322497 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 447.35 -496.25949162793756 L 447.35 -506.25949162793756 L 459.85 -506.25949162793756 L 459.85 -496.25949162793756 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 447.35 -496.25949162793756 L 459.85 -496.25949162793756 L 453.6 -506.25949162793756 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 485.75 -464.12581440753127 L 485.75 -474.12581440753127 L 498.25 -474.12581440753127 L 498.25 -464.12581440753127 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 485.75 -464.12581440753127 L 498.25 -464.12581440753127 L 492.0 -474.12581440753127 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 524.15 -472.3791668364165 L 524.15 -482.3791668364165 L 536.65 -482.3791668364165 L 536.65 -472.3791668364165 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 524.15 -472.3791668364165 L 536.65 -472.3791668364165 L 530.4 -482.3791668364165 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 562.55 -481.68461314271207 L 562.55 -491.68461314271207 L 575.05 -491.68461314271207 L 575.05 -481.68461314271207 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 562.55 -481.68461314271207 L 575.05 -481.68461314271207 L 568.8 -491.68461314271207 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip10);"> + <path d="M 600.95 -495.53971049555463 L 600.95 -505.53971049555463 L 613.45 -505.53971049555463 L 613.45 -495.53971049555463 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.95 -495.53971049555463 L 613.45 -495.53971049555463 L 607.2 -505.53971049555463 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip11);"> + <path d="M 639.35 -494.5627661808165 L 639.35 -504.5627661808165 L 651.85 -504.5627661808165 L 651.85 -494.5627661808165 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 639.35 -494.5627661808165 L 651.85 -494.5627661808165 L 645.6 -504.5627661808165 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 677.75 -515.0 L 677.75 -525.0 L 690.25 -525.0 L 690.25 -515.0 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 677.75 -515.0 L 690.25 -515.0 L 684.0 -525.0 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip13);"> + <path d="M 338.4 -407.71759057590634 L 376.8 -414.10737173962775 L 415.2 -408.428408916411 L 453.6 -413.90536419960074 L 492.0 -422.3703764059204 L 530.4 -415.6827547736268 L 568.8 -415.5310767572243 L 607.2 -423.0005296195201 L 645.6 -417.433946417547 L 684.0 -418.55153762022206" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip14);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip15);"> + <path d="M 330.4 -399.71759057590634 L 330.4 -415.71759057590634 L 346.4 -415.71759057590634 L 346.4 -399.71759057590634 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -407.71759057590634 M 342.4 -407.71759057590634 L 342.4 -407.718 M 342.4 -407.718 A 4 4 0 1 0 334.4 -407.718 A 4 4 0 1 0 342.4 -407.718 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip16);"> + <path d="M 368.8 -406.10737173962775 L 368.8 -422.10737173962775 L 384.8 -422.10737173962775 L 384.8 -406.10737173962775 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -414.10737173962775 M 380.8 -414.10737173962775 L 380.8 -414.107 M 380.8 -414.107 A 4 4 0 1 0 372.8 -414.107 A 4 4 0 1 0 380.8 -414.107 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip17);"> + <path d="M 407.2 -400.428408916411 L 407.2 -416.428408916411 L 423.2 -416.428408916411 L 423.2 -400.428408916411 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -408.428408916411 M 419.2 -408.428408916411 L 419.2 -408.428 M 419.2 -408.428 A 4 4 0 1 0 411.2 -408.428 A 4 4 0 1 0 419.2 -408.428 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip18);"> + <path d="M 445.6 -405.90536419960074 L 445.6 -421.90536419960074 L 461.6 -421.90536419960074 L 461.6 -405.90536419960074 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -413.90536419960074 M 457.6 -413.90536419960074 L 457.6 -413.905 M 457.6 -413.905 A 4 4 0 1 0 449.6 -413.905 A 4 4 0 1 0 457.6 -413.905 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip19);"> + <path d="M 484.0 -414.3703764059204 L 484.0 -430.3703764059204 L 500.0 -430.3703764059204 L 500.0 -414.3703764059204 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -422.3703764059204 M 496.0 -422.3703764059204 L 496 -422.37 M 496 -422.37 A 4 4 0 1 0 488 -422.37 A 4 4 0 1 0 496 -422.37 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip20);"> + <path d="M 522.4 -407.6827547736268 L 522.4 -423.6827547736268 L 538.4 -423.6827547736268 L 538.4 -407.6827547736268 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -415.6827547736268 M 534.4 -415.6827547736268 L 534.4 -415.683 M 534.4 -415.683 A 4 4 0 1 0 526.4 -415.683 A 4 4 0 1 0 534.4 -415.683 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip21);"> + <path d="M 560.8 -407.5310767572243 L 560.8 -423.5310767572243 L 576.8 -423.5310767572243 L 576.8 -407.5310767572243 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -415.5310767572243 M 572.8 -415.5310767572243 L 572.8 -415.531 M 572.8 -415.531 A 4 4 0 1 0 564.8 -415.531 A 4 4 0 1 0 572.8 -415.531 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip22);"> + <path d="M 599.2 -415.0005296195201 L 599.2 -431.0005296195201 L 615.2 -431.0005296195201 L 615.2 -415.0005296195201 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -423.0005296195201 M 611.2 -423.0005296195201 L 611.2 -423.001 M 611.2 -423.001 A 4 4 0 1 0 603.2 -423.001 A 4 4 0 1 0 611.2 -423.001 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip23);"> + <path d="M 637.6 -409.433946417547 L 637.6 -425.433946417547 L 653.6 -425.433946417547 L 653.6 -409.433946417547 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -417.433946417547 M 649.6 -417.433946417547 L 649.6 -417.434 M 649.6 -417.434 A 4 4 0 1 0 641.6 -417.434 A 4 4 0 1 0 649.6 -417.434 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip24);"> + <path d="M 676.0 -410.55153762022206 L 676.0 -426.55153762022206 L 692.0 -426.55153762022206 L 692.0 -410.55153762022206 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -418.55153762022206 M 688.0 -418.55153762022206 L 688 -418.552 M 688 -418.552 A 4 4 0 1 0 680 -418.552 A 4 4 0 1 0 688 -418.552 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip25);"> + <path d="M 338.4 -337.7244599604509 L 376.8 -348.9684892054767 L 415.2 -344.8536025095817 L 453.6 -354.35036995020323 L 492.0 -364.3227169167996 L 530.4 -349.681858494439 L 568.8 -356.56617893618557 L 607.2 -360.7800700100596 L 645.6 -363.37686659542396 L 684.0 -368.84113608087824" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip26);"> + <path d="M 333.4 -332.7244599604509 L 343.4 -342.7244599604509" style="stroke-width:0.7;"/> + <path d="M 343.4 -332.7244599604509 L 333.4 -342.7244599604509" style="stroke-width:0.7;"/> + <path d="M 371.8 -343.9684892054767 L 381.8 -353.9684892054767" style="stroke-width:0.7;"/> + <path d="M 381.8 -343.9684892054767 L 371.8 -353.9684892054767" style="stroke-width:0.7;"/> + <path d="M 410.2 -339.8536025095817 L 420.2 -349.8536025095817" style="stroke-width:0.7;"/> + <path d="M 420.2 -339.8536025095817 L 410.2 -349.8536025095817" style="stroke-width:0.7;"/> + <path d="M 448.6 -349.35036995020323 L 458.6 -359.35036995020323" style="stroke-width:0.7;"/> + <path d="M 458.6 -349.35036995020323 L 448.6 -359.35036995020323" style="stroke-width:0.7;"/> + <path d="M 487.0 -359.3227169167996 L 497.0 -369.3227169167996" style="stroke-width:0.7;"/> + <path d="M 497.0 -359.3227169167996 L 487.0 -369.3227169167996" style="stroke-width:0.7;"/> + <path d="M 525.4 -344.681858494439 L 535.4 -354.681858494439" style="stroke-width:0.7;"/> + <path d="M 535.4 -344.681858494439 L 525.4 -354.681858494439" style="stroke-width:0.7;"/> + <path d="M 563.8 -351.56617893618557 L 573.8 -361.56617893618557" style="stroke-width:0.7;"/> + <path d="M 573.8 -351.56617893618557 L 563.8 -361.56617893618557" style="stroke-width:0.7;"/> + <path d="M 602.2 -355.7800700100596 L 612.2 -365.7800700100596" style="stroke-width:0.7;"/> + <path d="M 612.2 -355.7800700100596 L 602.2 -365.7800700100596" style="stroke-width:0.7;"/> + <path d="M 640.6 -358.37686659542396 L 650.6 -368.37686659542396" style="stroke-width:0.7;"/> + <path d="M 650.6 -358.37686659542396 L 640.6 -368.37686659542396" style="stroke-width:0.7;"/> + <path d="M 679.0 -363.84113608087824 L 689.0 -373.84113608087824" style="stroke-width:0.7;"/> + <path d="M 689.0 -363.84113608087824 L 679.0 -373.84113608087824" style="stroke-width:0.7;"/> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip27);"> + <path d="M 290 -134 L 290 -190 L 324 -190 L 324 -134 Z" style="stroke:none;"/> + </g> + <path d="M 300 -180.66666666666669 L 314 -180.66666666666669" style="stroke:rgb(0,138,0);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip28);"> + <path d="M 300.75 -175.66666666666669 L 300.75 -185.66666666666669 L 313.25 -185.66666666666669 L 313.25 -175.66666666666669 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 300.75 -175.66666666666669 L 313.25 -175.66666666666669 L 307.0 -185.66666666666669 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-176.0"> + gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map + </text> + <path d="M 300 -162.66666666666666 L 314 -162.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip29);"> + <path d="M 299.0 -154.66666666666666 L 299.0 -170.66666666666666 L 315.0 -170.66666666666666 L 315.0 -154.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -162.66666666666666 M 311.0 -162.66666666666666 L 311 -162.667 M 311 -162.667 A 4 4 0 1 0 303 -162.667 A 4 4 0 1 0 311 -162.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-158.0"> + n_hash_map_ncah + </text> + <path d="M 300 -144.66666666666666 L 314 -144.66666666666666" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <path d="M 302.0 -139.66666666666666 L 312.0 -149.66666666666666" style="stroke-width:0.7;"/> + <path d="M 312.0 -139.66666666666666 L 302.0 -149.66666666666666" style="stroke-width:0.7;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-140.0"> + gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_map + </text> + </g> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_subscript_timing_test_insert_local.pdf b/libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_subscript_timing_test_insert_local.pdf Binary files differnew file mode 100644 index 00000000000..f8880451bb7 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_subscript_timing_test_insert_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_subscript_timing_test_insert_local.png b/libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_subscript_timing_test_insert_local.png Binary files differnew file mode 100644 index 00000000000..a5d4fb54845 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_subscript_timing_test_insert_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_subscript_timing_test_insert_local.svg b/libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_subscript_timing_test_insert_local.svg new file mode 100644 index 00000000000..d85deab745f --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_subscript_timing_test_insert_local.svg @@ -0,0 +1,369 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 416.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 338.4 -482.3197045634397 M 342.4 -482.3197045634397 L 342.4 -482.32 M 342.4 -482.32 A 4 4 0 1 0 334.4 -482.32 A 4 4 0 1 0 342.4 -482.32 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 376.8 -451.43787918754947 M 380.8 -451.43787918754947 L 380.8 -451.438 M 380.8 -451.438 A 4 4 0 1 0 372.8 -451.438 A 4 4 0 1 0 380.8 -451.438 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 415.2 -461.3062516486415 M 419.2 -461.3062516486415 L 419.2 -461.306 M 419.2 -461.306 A 4 4 0 1 0 411.2 -461.306 A 4 4 0 1 0 419.2 -461.306 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 453.6 -451.24782379319436 M 457.6 -451.24782379319436 L 457.6 -451.248 M 457.6 -451.248 A 4 4 0 1 0 449.6 -451.248 A 4 4 0 1 0 457.6 -451.248 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 492.0 -470.6436296491691 M 496.0 -470.6436296491691 L 496 -470.644 M 496 -470.644 A 4 4 0 1 0 488 -470.644 A 4 4 0 1 0 496 -470.644 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 530.4 -462.67871274070166 M 534.4 -462.67871274070166 L 534.4 -462.679 M 534.4 -462.679 A 4 4 0 1 0 526.4 -462.679 A 4 4 0 1 0 534.4 -462.679 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 568.8 -464.4907676074914 M 572.8 -464.4907676074914 L 572.8 -464.491 M 572.8 -464.491 A 4 4 0 1 0 564.8 -464.491 A 4 4 0 1 0 572.8 -464.491 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 607.2 -453.52413611184386 M 611.2 -453.52413611184386 L 611.2 -453.524 M 611.2 -453.524 A 4 4 0 1 0 603.2 -453.524 A 4 4 0 1 0 611.2 -453.524 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 645.6 -480.26681614349775 M 649.6 -480.26681614349775 L 649.6 -480.267 M 649.6 -480.267 A 4 4 0 1 0 641.6 -480.267 A 4 4 0 1 0 649.6 -480.267 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 684.0 -475.5009232392509 M 688.0 -475.5009232392509 L 688 -475.501 M 688 -475.501 A 4 4 0 1 0 680 -475.501 A 4 4 0 1 0 688 -475.501 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 332.15 -406.4568979161171 L 344.65 -406.4568979161171 L 338.4 -416.4568979161171 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 370.55 -416.09502769717756 L 383.05 -416.09502769717756 L 376.8 -426.09502769717756 Z"/> + </clipPath> + <clipPath id="clip17"> + <path d="M 408.95 -437.40937747296226 L 421.45 -437.40937747296226 L 415.2 -447.40937747296226 Z"/> + </clipPath> + <clipPath id="clip18"> + <path d="M 447.35 -419.81343972566606 L 459.85 -419.81343972566606 L 453.6 -429.81343972566606 Z"/> + </clipPath> + <clipPath id="clip19"> + <path d="M 485.75 -485.7590345555262 L 498.25 -485.7590345555262 L 492.0 -495.7590345555262 Z"/> + </clipPath> + <clipPath id="clip20"> + <path d="M 524.15 -464.65708256396726 L 536.65 -464.65708256396726 L 530.4 -474.65708256396726 Z"/> + </clipPath> + <clipPath id="clip21"> + <path d="M 562.55 -450.18095489316806 L 575.05 -450.18095489316806 L 568.8 -460.18095489316806 Z"/> + </clipPath> + <clipPath id="clip22"> + <path d="M 600.95 -440.2313373780005 L 613.45 -440.2313373780005 L 607.2 -450.2313373780005 Z"/> + </clipPath> + <clipPath id="clip23"> + <path d="M 639.35 -515.0 L 651.85 -515.0 L 645.6 -525.0 Z"/> + </clipPath> + <clipPath id="clip24"> + <path d="M 677.75 -499.11804273278824 L 690.25 -499.11804273278824 L 684.0 -509.11804273278824 Z"/> + </clipPath> + <clipPath id="clip25"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip26"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip27"> + <path d="M 290 -134 L 290 -190 L 324 -190 L 324 -134 Z"/> + </clipPath> + <clipPath id="clip28"> + <path d="M 307.0 -180.66666666666669 M 311.0 -180.66666666666669 L 311 -180.667 M 311 -180.667 A 4 4 0 1 0 303 -180.667 A 4 4 0 1 0 311 -180.667 Z"/> + </clipPath> + <clipPath id="clip29"> + <path d="M 300.75 -157.66666666666666 L 313.25 -157.66666666666666 L 307.0 -167.66666666666666 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 3.03e-08 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.5004867321942"> + 6.07e-08 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.5004867321942"> + 9.10e-08 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.5004867321942"> + 1.21e-07 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321942"> + 1.52e-07 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 338.4 -482.3197045634397 L 376.8 -451.43787918754947 L 415.2 -461.3062516486415 L 453.6 -451.24782379319436 L 492.0 -470.6436296491691 L 530.4 -462.67871274070166 L 568.8 -464.4907676074914 L 607.2 -453.52413611184386 L 645.6 -480.26681614349775 L 684.0 -475.5009232392509" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip3);"> + <path d="M 330.4 -474.3197045634397 L 330.4 -490.3197045634397 L 346.4 -490.3197045634397 L 346.4 -474.3197045634397 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -482.3197045634397 M 342.4 -482.3197045634397 L 342.4 -482.32 M 342.4 -482.32 A 4 4 0 1 0 334.4 -482.32 A 4 4 0 1 0 342.4 -482.32 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip4);"> + <path d="M 368.8 -443.43787918754947 L 368.8 -459.43787918754947 L 384.8 -459.43787918754947 L 384.8 -443.43787918754947 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -451.43787918754947 M 380.8 -451.43787918754947 L 380.8 -451.438 M 380.8 -451.438 A 4 4 0 1 0 372.8 -451.438 A 4 4 0 1 0 380.8 -451.438 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 407.2 -453.3062516486415 L 407.2 -469.3062516486415 L 423.2 -469.3062516486415 L 423.2 -453.3062516486415 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -461.3062516486415 M 419.2 -461.3062516486415 L 419.2 -461.306 M 419.2 -461.306 A 4 4 0 1 0 411.2 -461.306 A 4 4 0 1 0 419.2 -461.306 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 445.6 -443.24782379319436 L 445.6 -459.24782379319436 L 461.6 -459.24782379319436 L 461.6 -443.24782379319436 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -451.24782379319436 M 457.6 -451.24782379319436 L 457.6 -451.248 M 457.6 -451.248 A 4 4 0 1 0 449.6 -451.248 A 4 4 0 1 0 457.6 -451.248 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 484.0 -462.6436296491691 L 484.0 -478.6436296491691 L 500.0 -478.6436296491691 L 500.0 -462.6436296491691 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -470.6436296491691 M 496.0 -470.6436296491691 L 496 -470.644 M 496 -470.644 A 4 4 0 1 0 488 -470.644 A 4 4 0 1 0 496 -470.644 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 522.4 -454.67871274070166 L 522.4 -470.67871274070166 L 538.4 -470.67871274070166 L 538.4 -454.67871274070166 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -462.67871274070166 M 534.4 -462.67871274070166 L 534.4 -462.679 M 534.4 -462.679 A 4 4 0 1 0 526.4 -462.679 A 4 4 0 1 0 534.4 -462.679 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 560.8 -456.4907676074914 L 560.8 -472.4907676074914 L 576.8 -472.4907676074914 L 576.8 -456.4907676074914 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -464.4907676074914 M 572.8 -464.4907676074914 L 572.8 -464.491 M 572.8 -464.491 A 4 4 0 1 0 564.8 -464.491 A 4 4 0 1 0 572.8 -464.491 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip10);"> + <path d="M 599.2 -445.52413611184386 L 599.2 -461.52413611184386 L 615.2 -461.52413611184386 L 615.2 -445.52413611184386 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -453.52413611184386 M 611.2 -453.52413611184386 L 611.2 -453.524 M 611.2 -453.524 A 4 4 0 1 0 603.2 -453.524 A 4 4 0 1 0 611.2 -453.524 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip11);"> + <path d="M 637.6 -472.26681614349775 L 637.6 -488.26681614349775 L 653.6 -488.26681614349775 L 653.6 -472.26681614349775 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -480.26681614349775 M 649.6 -480.26681614349775 L 649.6 -480.267 M 649.6 -480.267 A 4 4 0 1 0 641.6 -480.267 A 4 4 0 1 0 649.6 -480.267 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 676.0 -467.5009232392509 L 676.0 -483.5009232392509 L 692.0 -483.5009232392509 L 692.0 -467.5009232392509 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -475.5009232392509 M 688.0 -475.5009232392509 L 688 -475.501 M 688 -475.501 A 4 4 0 1 0 680 -475.501 A 4 4 0 1 0 688 -475.501 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip13);"> + <path d="M 338.4 -411.4568979161171 L 376.8 -421.09502769717756 L 415.2 -442.40937747296226 L 453.6 -424.81343972566606 L 492.0 -490.7590345555262 L 530.4 -469.65708256396726 L 568.8 -455.18095489316806 L 607.2 -445.2313373780005 L 645.6 -520.0 L 684.0 -504.11804273278824" style="stroke:rgb(0,138,0);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip14);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip15);"> + <path d="M 332.15 -406.4568979161171 L 332.15 -416.4568979161171 L 344.65 -416.4568979161171 L 344.65 -406.4568979161171 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 332.15 -406.4568979161171 L 344.65 -406.4568979161171 L 338.4 -416.4568979161171 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip16);"> + <path d="M 370.55 -416.09502769717756 L 370.55 -426.09502769717756 L 383.05 -426.09502769717756 L 383.05 -416.09502769717756 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 370.55 -416.09502769717756 L 383.05 -416.09502769717756 L 376.8 -426.09502769717756 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip17);"> + <path d="M 408.95 -437.40937747296226 L 408.95 -447.40937747296226 L 421.45 -447.40937747296226 L 421.45 -437.40937747296226 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 408.95 -437.40937747296226 L 421.45 -437.40937747296226 L 415.2 -447.40937747296226 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip18);"> + <path d="M 447.35 -419.81343972566606 L 447.35 -429.81343972566606 L 459.85 -429.81343972566606 L 459.85 -419.81343972566606 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 447.35 -419.81343972566606 L 459.85 -419.81343972566606 L 453.6 -429.81343972566606 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip19);"> + <path d="M 485.75 -485.7590345555262 L 485.75 -495.7590345555262 L 498.25 -495.7590345555262 L 498.25 -485.7590345555262 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 485.75 -485.7590345555262 L 498.25 -485.7590345555262 L 492.0 -495.7590345555262 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip20);"> + <path d="M 524.15 -464.65708256396726 L 524.15 -474.65708256396726 L 536.65 -474.65708256396726 L 536.65 -464.65708256396726 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 524.15 -464.65708256396726 L 536.65 -464.65708256396726 L 530.4 -474.65708256396726 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip21);"> + <path d="M 562.55 -450.18095489316806 L 562.55 -460.18095489316806 L 575.05 -460.18095489316806 L 575.05 -450.18095489316806 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 562.55 -450.18095489316806 L 575.05 -450.18095489316806 L 568.8 -460.18095489316806 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip22);"> + <path d="M 600.95 -440.2313373780005 L 600.95 -450.2313373780005 L 613.45 -450.2313373780005 L 613.45 -440.2313373780005 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.95 -440.2313373780005 L 613.45 -440.2313373780005 L 607.2 -450.2313373780005 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip23);"> + <path d="M 639.35 -515.0 L 639.35 -525.0 L 651.85 -525.0 L 651.85 -515.0 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 639.35 -515.0 L 651.85 -515.0 L 645.6 -525.0 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip24);"> + <path d="M 677.75 -499.11804273278824 L 677.75 -509.11804273278824 L 690.25 -509.11804273278824 L 690.25 -499.11804273278824 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 677.75 -499.11804273278824 L 690.25 -499.11804273278824 L 684.0 -509.11804273278824 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip25);"> + <path d="M 338.4 -367.37028488525453 L 376.8 -369.3916908467423 L 415.2 -387.21293853864415 L 453.6 -372.71649960432603 L 492.0 -363.0270113426537 L 530.4 -423.1365998417304 L 568.8 -409.0312978106041 L 607.2 -399.09372197309415 L 645.6 -391.1087839620153 L 684.0 -300.0" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip26);"> + <path d="M 333.4 -362.37028488525453 L 343.4 -372.37028488525453" style="stroke-width:0.7;"/> + <path d="M 343.4 -362.37028488525453 L 333.4 -372.37028488525453" style="stroke-width:0.7;"/> + <path d="M 371.8 -364.3916908467423 L 381.8 -374.3916908467423" style="stroke-width:0.7;"/> + <path d="M 381.8 -364.3916908467423 L 371.8 -374.3916908467423" style="stroke-width:0.7;"/> + <path d="M 410.2 -382.21293853864415 L 420.2 -392.21293853864415" style="stroke-width:0.7;"/> + <path d="M 420.2 -382.21293853864415 L 410.2 -392.21293853864415" style="stroke-width:0.7;"/> + <path d="M 448.6 -367.71649960432603 L 458.6 -377.71649960432603" style="stroke-width:0.7;"/> + <path d="M 458.6 -367.71649960432603 L 448.6 -377.71649960432603" style="stroke-width:0.7;"/> + <path d="M 487.0 -358.0270113426537 L 497.0 -368.0270113426537" style="stroke-width:0.7;"/> + <path d="M 497.0 -358.0270113426537 L 487.0 -368.0270113426537" style="stroke-width:0.7;"/> + <path d="M 525.4 -418.1365998417304 L 535.4 -428.1365998417304" style="stroke-width:0.7;"/> + <path d="M 535.4 -418.1365998417304 L 525.4 -428.1365998417304" style="stroke-width:0.7;"/> + <path d="M 563.8 -404.0312978106041 L 573.8 -414.0312978106041" style="stroke-width:0.7;"/> + <path d="M 573.8 -404.0312978106041 L 563.8 -414.0312978106041" style="stroke-width:0.7;"/> + <path d="M 602.2 -394.09372197309415 L 612.2 -404.09372197309415" style="stroke-width:0.7;"/> + <path d="M 612.2 -394.09372197309415 L 602.2 -404.09372197309415" style="stroke-width:0.7;"/> + <path d="M 640.6 -386.1087839620153 L 650.6 -396.1087839620153" style="stroke-width:0.7;"/> + <path d="M 650.6 -386.1087839620153 L 640.6 -396.1087839620153" style="stroke-width:0.7;"/> + <path d="M 679.0 -295.0 L 689.0 -305.0" style="stroke-width:0.7;"/> + <path d="M 689.0 -295.0 L 679.0 -305.0" style="stroke-width:0.7;"/> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip27);"> + <path d="M 290 -134 L 290 -190 L 324 -190 L 324 -134 Z" style="stroke:none;"/> + </g> + <path d="M 300 -180.66666666666669 L 314 -180.66666666666669" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip28);"> + <path d="M 299.0 -172.66666666666669 L 299.0 -188.66666666666669 L 315.0 -188.66666666666669 L 315.0 -172.66666666666669 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -180.66666666666669 M 311.0 -180.66666666666669 L 311 -180.667 M 311 -180.667 A 4 4 0 1 0 303 -180.667 A 4 4 0 1 0 311 -180.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-176.0"> + n_hash_map_ncah + </text> + <path d="M 300 -162.66666666666666 L 314 -162.66666666666666" style="stroke:rgb(0,138,0);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip29);"> + <path d="M 300.75 -157.66666666666666 L 300.75 -167.66666666666666 L 313.25 -167.66666666666666 L 313.25 -157.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 300.75 -157.66666666666666 L 313.25 -157.66666666666666 L 307.0 -167.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-158.0"> + gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map + </text> + <path d="M 300 -144.66666666666666 L 314 -144.66666666666666" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <path d="M 302.0 -139.66666666666666 L 312.0 -149.66666666666666" style="stroke-width:0.7;"/> + <path d="M 312.0 -139.66666666666666 L 302.0 -149.66666666666666" style="stroke-width:0.7;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-140.0"> + gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_map + </text> + </g> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_policy_cd.png b/libstdc++-v3/doc/xml/images/pbds_hash_policy_cd.png Binary files differindex f3122a112fc..f3122a112fc 100644 --- a/libstdc++-v3/doc/html/ext/pb_ds/hash_policy_cd.png +++ b/libstdc++-v3/doc/xml/images/pbds_hash_policy_cd.png diff --git a/libstdc++-v3/doc/xml/images/pbds_hash_random_int_erase_mem_usage_test_local.pdf b/libstdc++-v3/doc/xml/images/pbds_hash_random_int_erase_mem_usage_test_local.pdf Binary files differnew file mode 100644 index 00000000000..60a649e5429 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_hash_random_int_erase_mem_usage_test_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_hash_random_int_erase_mem_usage_test_local.png b/libstdc++-v3/doc/xml/images/pbds_hash_random_int_erase_mem_usage_test_local.png Binary files differnew file mode 100644 index 00000000000..7b6263b99c6 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_hash_random_int_erase_mem_usage_test_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_hash_random_int_erase_mem_usage_test_local.svg b/libstdc++-v3/doc/xml/images/pbds_hash_random_int_erase_mem_usage_test_local.svg new file mode 100644 index 00000000000..83dee9a3756 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_hash_random_int_erase_mem_usage_test_local.svg @@ -0,0 +1,416 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -526 535.725 418" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 338.4 -315.0656 M 342.4 -315.0656 L 342.4 -315.066 M 342.4 -315.066 A 4 4 0 1 0 334.4 -315.066 A 4 4 0 1 0 342.4 -315.066 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 376.8 -329.0048 M 380.8 -329.0048 L 380.8 -329.005 M 380.8 -329.005 A 4 4 0 1 0 372.8 -329.005 A 4 4 0 1 0 380.8 -329.005 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 415.2 -343.7888 M 419.2 -343.7888 L 419.2 -343.789 M 419.2 -343.789 A 4 4 0 1 0 411.2 -343.789 A 4 4 0 1 0 419.2 -343.789 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 453.6 -358.1504 M 457.6 -358.1504 L 457.6 -358.15 M 457.6 -358.15 A 4 4 0 1 0 449.6 -358.15 A 4 4 0 1 0 457.6 -358.15 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 492.0 -372.79359999999997 M 496.0 -372.79359999999997 L 496 -372.794 M 496 -372.794 A 4 4 0 1 0 488 -372.794 A 4 4 0 1 0 496 -372.794 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 530.4 -390.9568 M 534.4 -390.9568 L 534.4 -390.957 M 534.4 -390.957 A 4 4 0 1 0 526.4 -390.957 A 4 4 0 1 0 534.4 -390.957 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 568.8 -405.3184 M 572.8 -405.3184 L 572.8 -405.318 M 572.8 -405.318 A 4 4 0 1 0 564.8 -405.318 A 4 4 0 1 0 572.8 -405.318 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 607.2 -413.7664 M 611.2 -413.7664 L 611.2 -413.766 M 611.2 -413.766 A 4 4 0 1 0 603.2 -413.766 A 4 4 0 1 0 611.2 -413.766 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 645.6 -432.4928 M 649.6 -432.4928 L 649.6 -432.493 M 649.6 -432.493 A 4 4 0 1 0 641.6 -432.493 A 4 4 0 1 0 649.6 -432.493 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 684.0 -443.0528 M 688.0 -443.0528 L 688 -443.053 M 688 -443.053 A 4 4 0 1 0 680 -443.053 A 4 4 0 1 0 688 -443.053 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 338.4 -295.9152 L 332.15 -305.9152 L 344.65 -305.9152 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 376.8 -295.9152 L 370.55 -305.9152 L 383.05 -305.9152 Z"/> + </clipPath> + <clipPath id="clip17"> + <path d="M 415.2 -295.9152 L 408.95 -305.9152 L 421.45 -305.9152 Z"/> + </clipPath> + <clipPath id="clip18"> + <path d="M 453.6 -295.9152 L 447.35 -305.9152 L 459.85 -305.9152 Z"/> + </clipPath> + <clipPath id="clip19"> + <path d="M 492.0 -295.9152 L 485.75 -305.9152 L 498.25 -305.9152 Z"/> + </clipPath> + <clipPath id="clip20"> + <path d="M 530.4 -295.9152 L 524.15 -305.9152 L 536.65 -305.9152 Z"/> + </clipPath> + <clipPath id="clip21"> + <path d="M 568.8 -295.9152 L 562.55 -305.9152 L 575.05 -305.9152 Z"/> + </clipPath> + <clipPath id="clip22"> + <path d="M 607.2 -295.9152 L 600.95 -305.9152 L 613.45 -305.9152 Z"/> + </clipPath> + <clipPath id="clip23"> + <path d="M 645.6 -295.9152 L 639.35 -305.9152 L 651.85 -305.9152 Z"/> + </clipPath> + <clipPath id="clip24"> + <path d="M 684.0 -295.9152 L 677.75 -305.9152 L 690.25 -305.9152 Z"/> + </clipPath> + <clipPath id="clip25"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip26"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip27"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip28"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip29"> + <path d="M 290 -114 L 290 -188 L 324 -188 L 324 -114 Z"/> + </clipPath> + <clipPath id="clip30"> + <path d="M 307.0 -178.66666666666669 M 311.0 -178.66666666666669 L 311 -178.667 M 311 -178.667 A 4 4 0 1 0 303 -178.667 A 4 4 0 1 0 311 -178.667 Z"/> + </clipPath> + <clipPath id="clip31"> + <path d="M 307.0 -155.66666666666666 L 300.75 -165.66666666666666 L 313.25 -165.66666666666666 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -388.0 L 780 -388.0" style="stroke:rgb(179,179,179);stroke-width:0.4;stroke-dasharray:1,1;"/> + <path d="M 300 -476.0 L 780 -476.0" style="stroke:rgb(179,179,179);stroke-width:0.4;stroke-dasharray:1,1;"/> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -328.61056 L 288 -328.61056"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-324.111)" x="288.0" y="-324.1110467321942"> + 3.25e+03 + </text> + <path d="M 300 -357.22112 L 288 -357.22112"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-352.722)" x="288.0" y="-352.72160673219423"> + 6.50e+03 + </text> + <path d="M 300 -385.83168 L 288 -385.83168"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-381.332)" x="288.0" y="-381.3321667321942"> + 9.75e+03 + </text> + <path d="M 300 -414.44223999999997 L 288 -414.44223999999997"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-409.943)" x="288.0" y="-409.9427267321942"> + 1.30e+04 + </text> + <path d="M 300 -443.0528 L 288 -443.0528"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-438.553)" x="288.0" y="-438.55328673219424"> + 1.63e+04 + </text> + <path d="M 300 -471.66336 L 288 -471.66336"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-467.164)" x="288.0" y="-467.1638467321942"> + 1.95e+04 + </text> + <path d="M 300 -500.27392 L 288 -500.27392"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-495.774)" x="288.0" y="-495.7744067321942"> + 2.28e+04 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Memory (bytes) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 338.4 -315.0656 L 376.8 -329.0048 L 415.2 -343.7888 L 453.6 -358.1504 L 492.0 -372.79359999999997 L 530.4 -390.9568 L 568.8 -405.3184 L 607.2 -413.7664 L 645.6 -432.4928 L 684.0 -443.0528" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip3);"> + <path d="M 330.4 -307.0656 L 330.4 -323.0656 L 346.4 -323.0656 L 346.4 -307.0656 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -315.0656 M 342.4 -315.0656 L 342.4 -315.066 M 342.4 -315.066 A 4 4 0 1 0 334.4 -315.066 A 4 4 0 1 0 342.4 -315.066 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip4);"> + <path d="M 368.8 -321.0048 L 368.8 -337.0048 L 384.8 -337.0048 L 384.8 -321.0048 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -329.0048 M 380.8 -329.0048 L 380.8 -329.005 M 380.8 -329.005 A 4 4 0 1 0 372.8 -329.005 A 4 4 0 1 0 380.8 -329.005 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 407.2 -335.7888 L 407.2 -351.7888 L 423.2 -351.7888 L 423.2 -335.7888 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -343.7888 M 419.2 -343.7888 L 419.2 -343.789 M 419.2 -343.789 A 4 4 0 1 0 411.2 -343.789 A 4 4 0 1 0 419.2 -343.789 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 445.6 -350.1504 L 445.6 -366.1504 L 461.6 -366.1504 L 461.6 -350.1504 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -358.1504 M 457.6 -358.1504 L 457.6 -358.15 M 457.6 -358.15 A 4 4 0 1 0 449.6 -358.15 A 4 4 0 1 0 457.6 -358.15 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 484.0 -364.79359999999997 L 484.0 -380.79359999999997 L 500.0 -380.79359999999997 L 500.0 -364.79359999999997 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -372.79359999999997 M 496.0 -372.79359999999997 L 496 -372.794 M 496 -372.794 A 4 4 0 1 0 488 -372.794 A 4 4 0 1 0 496 -372.794 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 522.4 -382.9568 L 522.4 -398.9568 L 538.4 -398.9568 L 538.4 -382.9568 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -390.9568 M 534.4 -390.9568 L 534.4 -390.957 M 534.4 -390.957 A 4 4 0 1 0 526.4 -390.957 A 4 4 0 1 0 534.4 -390.957 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 560.8 -397.3184 L 560.8 -413.3184 L 576.8 -413.3184 L 576.8 -397.3184 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -405.3184 M 572.8 -405.3184 L 572.8 -405.318 M 572.8 -405.318 A 4 4 0 1 0 564.8 -405.318 A 4 4 0 1 0 572.8 -405.318 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip10);"> + <path d="M 599.2 -405.7664 L 599.2 -421.7664 L 615.2 -421.7664 L 615.2 -405.7664 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -413.7664 M 611.2 -413.7664 L 611.2 -413.766 M 611.2 -413.766 A 4 4 0 1 0 603.2 -413.766 A 4 4 0 1 0 611.2 -413.766 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip11);"> + <path d="M 637.6 -424.4928 L 637.6 -440.4928 L 653.6 -440.4928 L 653.6 -424.4928 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -432.4928 M 649.6 -432.4928 L 649.6 -432.493 M 649.6 -432.493 A 4 4 0 1 0 641.6 -432.493 A 4 4 0 1 0 649.6 -432.493 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 676.0 -435.0528 L 676.0 -451.0528 L 692.0 -451.0528 L 692.0 -435.0528 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -443.0528 M 688.0 -443.0528 L 688 -443.053 M 688 -443.053 A 4 4 0 1 0 680 -443.053 A 4 4 0 1 0 688 -443.053 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip13);"> + <path d="M 338.4 -300.9152 L 376.8 -300.9152 L 415.2 -300.9152 L 453.6 -300.9152 L 492.0 -300.9152 L 530.4 -300.9152 L 568.8 -300.9152 L 607.2 -300.9152 L 645.6 -300.9152 L 684.0 -300.9152" style="stroke:rgb(0,138,0);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip14);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip15);"> + <path d="M 332.15 -295.9152 L 332.15 -305.9152 L 344.65 -305.9152 L 344.65 -295.9152 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -295.9152 L 332.15 -305.9152 L 344.65 -305.9152 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip16);"> + <path d="M 370.55 -295.9152 L 370.55 -305.9152 L 383.05 -305.9152 L 383.05 -295.9152 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -295.9152 L 370.55 -305.9152 L 383.05 -305.9152 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip17);"> + <path d="M 408.95 -295.9152 L 408.95 -305.9152 L 421.45 -305.9152 L 421.45 -295.9152 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -295.9152 L 408.95 -305.9152 L 421.45 -305.9152 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip18);"> + <path d="M 447.35 -295.9152 L 447.35 -305.9152 L 459.85 -305.9152 L 459.85 -295.9152 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -295.9152 L 447.35 -305.9152 L 459.85 -305.9152 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip19);"> + <path d="M 485.75 -295.9152 L 485.75 -305.9152 L 498.25 -305.9152 L 498.25 -295.9152 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -295.9152 L 485.75 -305.9152 L 498.25 -305.9152 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip20);"> + <path d="M 524.15 -295.9152 L 524.15 -305.9152 L 536.65 -305.9152 L 536.65 -295.9152 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -295.9152 L 524.15 -305.9152 L 536.65 -305.9152 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip21);"> + <path d="M 562.55 -295.9152 L 562.55 -305.9152 L 575.05 -305.9152 L 575.05 -295.9152 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -295.9152 L 562.55 -305.9152 L 575.05 -305.9152 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip22);"> + <path d="M 600.95 -295.9152 L 600.95 -305.9152 L 613.45 -305.9152 L 613.45 -295.9152 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -295.9152 L 600.95 -305.9152 L 613.45 -305.9152 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip23);"> + <path d="M 639.35 -295.9152 L 639.35 -305.9152 L 651.85 -305.9152 L 651.85 -295.9152 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -295.9152 L 639.35 -305.9152 L 651.85 -305.9152 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip24);"> + <path d="M 677.75 -295.9152 L 677.75 -305.9152 L 690.25 -305.9152 L 690.25 -295.9152 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -295.9152 L 677.75 -305.9152 L 690.25 -305.9152 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip25);"> + <path d="M 338.4 -300.704 L 376.8 -300.704 L 415.2 -300.704 L 453.6 -300.704 L 492.0 -300.704 L 530.4 -300.704 L 568.8 -300.704 L 607.2 -300.704 L 645.6 -300.704 L 684.0 -300.704" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip26);"> + <path d="M 333.4 -295.704 L 343.4 -305.704" style="stroke-width:0.7;"/> + <path d="M 343.4 -295.704 L 333.4 -305.704" style="stroke-width:0.7;"/> + <path d="M 371.8 -295.704 L 381.8 -305.704" style="stroke-width:0.7;"/> + <path d="M 381.8 -295.704 L 371.8 -305.704" style="stroke-width:0.7;"/> + <path d="M 410.2 -295.704 L 420.2 -305.704" style="stroke-width:0.7;"/> + <path d="M 420.2 -295.704 L 410.2 -305.704" style="stroke-width:0.7;"/> + <path d="M 448.6 -295.704 L 458.6 -305.704" style="stroke-width:0.7;"/> + <path d="M 458.6 -295.704 L 448.6 -305.704" style="stroke-width:0.7;"/> + <path d="M 487.0 -295.704 L 497.0 -305.704" style="stroke-width:0.7;"/> + <path d="M 497.0 -295.704 L 487.0 -305.704" style="stroke-width:0.7;"/> + <path d="M 525.4 -295.704 L 535.4 -305.704" style="stroke-width:0.7;"/> + <path d="M 535.4 -295.704 L 525.4 -305.704" style="stroke-width:0.7;"/> + <path d="M 563.8 -295.704 L 573.8 -305.704" style="stroke-width:0.7;"/> + <path d="M 573.8 -295.704 L 563.8 -305.704" style="stroke-width:0.7;"/> + <path d="M 602.2 -295.704 L 612.2 -305.704" style="stroke-width:0.7;"/> + <path d="M 612.2 -295.704 L 602.2 -305.704" style="stroke-width:0.7;"/> + <path d="M 640.6 -295.704 L 650.6 -305.704" style="stroke-width:0.7;"/> + <path d="M 650.6 -295.704 L 640.6 -305.704" style="stroke-width:0.7;"/> + <path d="M 679.0 -295.704 L 689.0 -305.704" style="stroke-width:0.7;"/> + <path d="M 689.0 -295.704 L 679.0 -305.704" style="stroke-width:0.7;"/> + </g> + <g style="clip-path:url(#clip27);"> + <path d="M 338.4 -300.5632 L 376.8 -300.5632 L 415.2 -300.5632 L 453.6 -300.5632 L 492.0 -300.5632 L 530.4 -300.5632 L 568.8 -300.5632 L 607.2 -300.5632 L 645.6 -300.5632 L 684.0 -300.5632" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip28);"> + <path d="M 333.4 -295.5632 L 343.4 -305.5632" style="stroke-width:0.7;"/> + <path d="M 343.4 -295.5632 L 333.4 -305.5632" style="stroke-width:0.7;"/> + <path d="M 371.8 -295.5632 L 381.8 -305.5632" style="stroke-width:0.7;"/> + <path d="M 381.8 -295.5632 L 371.8 -305.5632" style="stroke-width:0.7;"/> + <path d="M 410.2 -295.5632 L 420.2 -305.5632" style="stroke-width:0.7;"/> + <path d="M 420.2 -295.5632 L 410.2 -305.5632" style="stroke-width:0.7;"/> + <path d="M 448.6 -295.5632 L 458.6 -305.5632" style="stroke-width:0.7;"/> + <path d="M 458.6 -295.5632 L 448.6 -305.5632" style="stroke-width:0.7;"/> + <path d="M 487.0 -295.5632 L 497.0 -305.5632" style="stroke-width:0.7;"/> + <path d="M 497.0 -295.5632 L 487.0 -305.5632" style="stroke-width:0.7;"/> + <path d="M 525.4 -295.5632 L 535.4 -305.5632" style="stroke-width:0.7;"/> + <path d="M 535.4 -295.5632 L 525.4 -305.5632" style="stroke-width:0.7;"/> + <path d="M 563.8 -295.5632 L 573.8 -305.5632" style="stroke-width:0.7;"/> + <path d="M 573.8 -295.5632 L 563.8 -305.5632" style="stroke-width:0.7;"/> + <path d="M 602.2 -295.5632 L 612.2 -305.5632" style="stroke-width:0.7;"/> + <path d="M 612.2 -295.5632 L 602.2 -305.5632" style="stroke-width:0.7;"/> + <path d="M 640.6 -295.5632 L 650.6 -305.5632" style="stroke-width:0.7;"/> + <path d="M 650.6 -295.5632 L 640.6 -305.5632" style="stroke-width:0.7;"/> + <path d="M 679.0 -295.5632 L 689.0 -305.5632" style="stroke-width:0.7;"/> + <path d="M 689.0 -295.5632 L 679.0 -305.5632" style="stroke-width:0.7;"/> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip29);"> + <path d="M 290 -114 L 290 -188 L 324 -188 L 324 -114 Z" style="stroke:none;"/> + </g> + <path d="M 300 -178.66666666666669 L 314 -178.66666666666669" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip30);"> + <path d="M 299.0 -170.66666666666669 L 299.0 -186.66666666666669 L 315.0 -186.66666666666669 L 315.0 -170.66666666666669 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -178.66666666666669 M 311.0 -178.66666666666669 L 311 -178.667 M 311 -178.667 A 4 4 0 1 0 303 -178.667 A 4 4 0 1 0 311 -178.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-174.0"> + n_hash_set_ncah + </text> + <path d="M 300 -160.66666666666666 L 314 -160.66666666666666" style="stroke:rgb(0,138,0);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip31);"> + <path d="M 300.75 -155.66666666666666 L 300.75 -165.66666666666666 L 313.25 -165.66666666666666 L 313.25 -155.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -155.66666666666666 L 300.75 -165.66666666666666 L 313.25 -165.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-156.0"> + cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_set + </text> + <path d="M 300 -142.66666666666666 L 314 -142.66666666666666" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <path d="M 302.0 -137.66666666666666 L 312.0 -147.66666666666666" style="stroke-width:0.7;"/> + <path d="M 312.0 -137.66666666666666 L 302.0 -147.66666666666666" style="stroke-width:0.7;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-138.0"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set + </text> + <path d="M 300 -124.66666666666666 L 314 -124.66666666666666" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <path d="M 302.0 -119.66666666666666 L 312.0 -129.66666666666666" style="stroke-width:0.7;"/> + <path d="M 312.0 -119.66666666666666 L 302.0 -129.66666666666666" style="stroke-width:0.7;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-120.0"> + gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_set + </text> + </g> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_range_hashing_seq_diagram.png b/libstdc++-v3/doc/xml/images/pbds_hash_range_hashing_seq_diagram.png Binary files differindex 5c37407dda6..5c37407dda6 100644 --- a/libstdc++-v3/doc/html/ext/pb_ds/hash_range_hashing_seq_diagram.png +++ b/libstdc++-v3/doc/xml/images/pbds_hash_range_hashing_seq_diagram.png diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_range_hashing_seq_diagram2.png b/libstdc++-v3/doc/xml/images/pbds_hash_range_hashing_seq_diagram2.png Binary files differindex 87763caacc7..87763caacc7 100644 --- a/libstdc++-v3/doc/html/ext/pb_ds/hash_range_hashing_seq_diagram2.png +++ b/libstdc++-v3/doc/xml/images/pbds_hash_range_hashing_seq_diagram2.png diff --git a/libstdc++-v3/doc/html/ext/pb_ds/hash_ranged_hash_range_hashing_fns.png b/libstdc++-v3/doc/xml/images/pbds_hash_ranged_hash_range_hashing_fns.png Binary files differindex 5e0d7f4037b..5e0d7f4037b 100644 --- a/libstdc++-v3/doc/html/ext/pb_ds/hash_ranged_hash_range_hashing_fns.png +++ b/libstdc++-v3/doc/xml/images/pbds_hash_ranged_hash_range_hashing_fns.png diff --git a/libstdc++-v3/doc/xml/images/pbds_hash_zlob_random_int_find_timing_test_local.pdf b/libstdc++-v3/doc/xml/images/pbds_hash_zlob_random_int_find_timing_test_local.pdf Binary files differnew file mode 100644 index 00000000000..63d18071aa2 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_hash_zlob_random_int_find_timing_test_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_hash_zlob_random_int_find_timing_test_local.png b/libstdc++-v3/doc/xml/images/pbds_hash_zlob_random_int_find_timing_test_local.png Binary files differnew file mode 100644 index 00000000000..9119cd197c8 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_hash_zlob_random_int_find_timing_test_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_hash_zlob_random_int_find_timing_test_local.svg b/libstdc++-v3/doc/xml/images/pbds_hash_zlob_random_int_find_timing_test_local.svg new file mode 100644 index 00000000000..c2594418449 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_hash_zlob_random_int_find_timing_test_local.svg @@ -0,0 +1,560 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 436.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 331.25714285714287 -427.41304550465907 L 338.4 -434.55590264751623 L 345.54285714285714 -427.41304550465907 L 338.4 -420.27018836180196 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 369.65714285714284 -427.91511711254185 L 376.8 -435.057974255399 L 383.9428571428571 -427.91511711254185 L 376.8 -420.7722599696847 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 408.0571428571429 -395.78253420804793 L 415.2 -402.9253913509051 L 422.34285714285716 -395.78253420804793 L 415.2 -388.63967706519077 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 446.45714285714286 -427.2546454480877 L 453.6 -434.3975025909448 L 460.74285714285713 -427.2546454480877 L 453.6 -420.1117883052305 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 484.8571428571429 -455.8133270761882 L 492.0 -462.9561842190454 L 499.1428571428571 -455.8133270761882 L 492.0 -448.6704699333311 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 523.2571428571429 -403.7923442115515 L 530.4 -410.9352013544086 L 537.5428571428572 -403.7923442115515 L 530.4 -396.6494870686943 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 561.6571428571428 -428.23686722745254 L 568.8 -435.3797243703097 L 575.9428571428572 -428.23686722745254 L 568.8 -421.0940100845954 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 600.0571428571428 -455.73978419278006 L 607.2 -462.88264133563723 L 614.3428571428572 -455.73978419278006 L 607.2 -448.5969270499229 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 638.4571428571428 -486.59809521360546 L 645.6 -493.74095235646257 L 652.7428571428572 -486.59809521360546 L 645.6 -479.4552380707483 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 676.8571428571429 -520.0 L 684.0 -527.1428571428571 L 691.1428571428571 -520.0 L 684.0 -512.8571428571429 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 332.15 -314.58524770901704 L 344.65 -314.58524770901704 L 338.4 -324.58524770901704 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 370.55 -316.8586420923722 L 383.05 -316.8586420923722 L 376.8 -326.8586420923722 Z"/> + </clipPath> + <clipPath id="clip17"> + <path d="M 408.95 -312.96136427191584 L 421.45 -312.96136427191584 L 415.2 -322.96136427191584 Z"/> + </clipPath> + <clipPath id="clip18"> + <path d="M 447.35 -315.2516593755926 L 459.85 -315.2516593755926 L 453.6 -325.2516593755926 Z"/> + </clipPath> + <clipPath id="clip19"> + <path d="M 485.75 -312.16660613093075 L 498.25 -312.16660613093075 L 492.0 -322.16660613093075 Z"/> + </clipPath> + <clipPath id="clip20"> + <path d="M 524.15 -313.5827309224039 L 536.65 -313.5827309224039 L 530.4 -323.5827309224039 Z"/> + </clipPath> + <clipPath id="clip21"> + <path d="M 562.55 -314.2230490082318 L 575.05 -314.2230490082318 L 568.8 -324.2230490082318 Z"/> + </clipPath> + <clipPath id="clip22"> + <path d="M 600.95 -315.42632372368706 L 613.45 -315.42632372368706 L 607.2 -325.42632372368706 Z"/> + </clipPath> + <clipPath id="clip23"> + <path d="M 639.35 -312.1963061415379 L 651.85 -312.1963061415379 L 645.6 -322.1963061415379 Z"/> + </clipPath> + <clipPath id="clip24"> + <path d="M 677.75 -312.96150570053777 L 690.25 -312.96150570053777 L 684.0 -322.96150570053777 Z"/> + </clipPath> + <clipPath id="clip25"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip26"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip27"> + <path d="M 338.4 -317.1112368254417 M 342.4 -317.1112368254417 L 342.4 -317.111 M 342.4 -317.111 A 4 4 0 1 0 334.4 -317.111 A 4 4 0 1 0 342.4 -317.111 Z"/> + </clipPath> + <clipPath id="clip28"> + <path d="M 376.8 -315.2160225771509 M 380.8 -315.2160225771509 L 380.8 -315.216 M 380.8 -315.216 A 4 4 0 1 0 372.8 -315.216 A 4 4 0 1 0 380.8 -315.216 Z"/> + </clipPath> + <clipPath id="clip29"> + <path d="M 415.2 -314.87609888432104 M 419.2 -314.87609888432104 L 419.2 -314.876 M 419.2 -314.876 A 4 4 0 1 0 411.2 -314.876 A 4 4 0 1 0 419.2 -314.876 Z"/> + </clipPath> + <clipPath id="clip30"> + <path d="M 453.6 -316.4453201590429 M 457.6 -316.4453201590429 L 457.6 -316.445 M 457.6 -316.445 A 4 4 0 1 0 449.6 -316.445 A 4 4 0 1 0 457.6 -316.445 Z"/> + </clipPath> + <clipPath id="clip31"> + <path d="M 492.0 -315.1061325379045 M 496.0 -315.1061325379045 L 496 -315.106 M 496 -315.106 A 4 4 0 1 0 488 -315.106 A 4 4 0 1 0 496 -315.106 Z"/> + </clipPath> + <clipPath id="clip32"> + <path d="M 530.4 -315.9192056854306 M 534.4 -315.9192056854306 L 534.4 -315.919 M 534.4 -315.919 A 4 4 0 1 0 526.4 -315.919 A 4 4 0 1 0 534.4 -315.919 Z"/> + </clipPath> + <clipPath id="clip33"> + <path d="M 568.8 -315.31961904272106 M 572.8 -315.31961904272106 L 572.8 -315.32 M 572.8 -315.32 A 4 4 0 1 0 564.8 -315.32 A 4 4 0 1 0 572.8 -315.32 Z"/> + </clipPath> + <clipPath id="clip34"> + <path d="M 607.2 -314.8980910350325 M 611.2 -314.8980910350325 L 611.2 -314.898 M 611.2 -314.898 A 4 4 0 1 0 603.2 -314.898 A 4 4 0 1 0 611.2 -314.898 Z"/> + </clipPath> + <clipPath id="clip35"> + <path d="M 645.6 -315.60000128571477 M 649.6 -315.60000128571477 L 649.6 -315.6 M 649.6 -315.6 A 4 4 0 1 0 641.6 -315.6 A 4 4 0 1 0 649.6 -315.6 Z"/> + </clipPath> + <clipPath id="clip36"> + <path d="M 684.0 -315.39485906959254 M 688.0 -315.39485906959254 L 688 -315.395 M 688 -315.395 A 4 4 0 1 0 680 -315.395 A 4 4 0 1 0 688 -315.395 Z"/> + </clipPath> + <clipPath id="clip37"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip38"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip39"> + <path d="M 338.4 -304.3340769050275 L 332.15 -314.3340769050275 L 344.65 -314.3340769050275 Z"/> + </clipPath> + <clipPath id="clip40"> + <path d="M 376.8 -306.87470066953597 L 370.55 -316.87470066953597 L 383.05 -316.87470066953597 Z"/> + </clipPath> + <clipPath id="clip41"> + <path d="M 415.2 -306.0968432488726 L 408.95 -316.0968432488726 L 421.45 -316.0968432488726 Z"/> + </clipPath> + <clipPath id="clip42"> + <path d="M 453.6 -307.9735303476894 L 447.35 -317.9735303476894 L 459.85 -317.9735303476894 Z"/> + </clipPath> + <clipPath id="clip43"> + <path d="M 492.0 -305.54562519486615 L 485.75 -315.54562519486615 L 498.25 -315.54562519486615 Z"/> + </clipPath> + <clipPath id="clip44"> + <path d="M 530.4 -306.09245896159246 L 524.15 -316.09245896159246 L 536.65 -316.09245896159246 Z"/> + </clipPath> + <clipPath id="clip45"> + <path d="M 568.8 -306.85475923384257 L 562.55 -316.85475923384257 L 575.05 -316.85475923384257 Z"/> + </clipPath> + <clipPath id="clip46"> + <path d="M 607.2 -307.21589721996327 L 600.95 -317.21589721996327 L 613.45 -317.21589721996327 Z"/> + </clipPath> + <clipPath id="clip47"> + <path d="M 645.6 -305.52335018691076 L 639.35 -315.52335018691076 L 651.85 -315.52335018691076 Z"/> + </clipPath> + <clipPath id="clip48"> + <path d="M 684.0 -306.07980109992894 L 677.75 -316.07980109992894 L 690.25 -316.07980109992894 Z"/> + </clipPath> + <clipPath id="clip49"> + <path d="M 290 -114 L 290 -188 L 324 -188 L 324 -114 Z"/> + </clipPath> + <clipPath id="clip50"> + <path d="M 299.85714285714283 -178.66666666666669 L 307.0 -185.8095238095238 L 314.14285714285717 -178.66666666666669 L 307.0 -171.52380952380952 Z"/> + </clipPath> + <clipPath id="clip51"> + <path d="M 300.75 -155.66666666666666 L 313.25 -155.66666666666666 L 307.0 -165.66666666666666 Z"/> + </clipPath> + <clipPath id="clip52"> + <path d="M 307.0 -142.66666666666666 M 311.0 -142.66666666666666 L 311 -142.667 M 311 -142.667 A 4 4 0 1 0 303 -142.667 A 4 4 0 1 0 311 -142.667 Z"/> + </clipPath> + <clipPath id="clip53"> + <path d="M 307.0 -119.66666666666666 L 300.75 -129.66666666666666 L 313.25 -129.66666666666666 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 6.22e-08 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.5004867321942"> + 1.24e-07 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.5004867321942"> + 1.87e-07 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.5004867321942"> + 2.49e-07 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321942"> + 3.11e-07 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 338.4 -427.41304550465907 L 376.8 -427.91511711254185 L 415.2 -395.78253420804793 L 453.6 -427.2546454480877 L 492.0 -455.8133270761882 L 530.4 -403.7923442115515 L 568.8 -428.23686722745254 L 607.2 -455.73978419278006 L 645.6 -486.59809521360546 L 684.0 -520.0" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip3);"> + <path d="M 331.25714285714287 -420.27018836180196 L 331.25714285714287 -434.55590264751623 L 345.54285714285714 -434.55590264751623 L 345.54285714285714 -420.27018836180196 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 331.25714285714287 -427.41304550465907 L 338.4 -434.55590264751623 L 345.54285714285714 -427.41304550465907 L 338.4 -420.27018836180196 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip4);"> + <path d="M 369.65714285714284 -420.7722599696847 L 369.65714285714284 -435.057974255399 L 383.9428571428571 -435.057974255399 L 383.9428571428571 -420.7722599696847 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 369.65714285714284 -427.91511711254185 L 376.8 -435.057974255399 L 383.9428571428571 -427.91511711254185 L 376.8 -420.7722599696847 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 408.0571428571429 -388.63967706519077 L 408.0571428571429 -402.9253913509051 L 422.34285714285716 -402.9253913509051 L 422.34285714285716 -388.63967706519077 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 408.0571428571429 -395.78253420804793 L 415.2 -402.9253913509051 L 422.34285714285716 -395.78253420804793 L 415.2 -388.63967706519077 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 446.45714285714286 -420.1117883052305 L 446.45714285714286 -434.3975025909448 L 460.74285714285713 -434.3975025909448 L 460.74285714285713 -420.1117883052305 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 446.45714285714286 -427.2546454480877 L 453.6 -434.3975025909448 L 460.74285714285713 -427.2546454480877 L 453.6 -420.1117883052305 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 484.8571428571429 -448.6704699333311 L 484.8571428571429 -462.9561842190454 L 499.1428571428571 -462.9561842190454 L 499.1428571428571 -448.6704699333311 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 484.8571428571429 -455.8133270761882 L 492.0 -462.9561842190454 L 499.1428571428571 -455.8133270761882 L 492.0 -448.6704699333311 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 523.2571428571429 -396.6494870686943 L 523.2571428571429 -410.9352013544086 L 537.5428571428572 -410.9352013544086 L 537.5428571428572 -396.6494870686943 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 523.2571428571429 -403.7923442115515 L 530.4 -410.9352013544086 L 537.5428571428572 -403.7923442115515 L 530.4 -396.6494870686943 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 561.6571428571428 -421.0940100845954 L 561.6571428571428 -435.3797243703097 L 575.9428571428572 -435.3797243703097 L 575.9428571428572 -421.0940100845954 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 561.6571428571428 -428.23686722745254 L 568.8 -435.3797243703097 L 575.9428571428572 -428.23686722745254 L 568.8 -421.0940100845954 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip10);"> + <path d="M 600.0571428571428 -448.5969270499229 L 600.0571428571428 -462.88264133563723 L 614.3428571428572 -462.88264133563723 L 614.3428571428572 -448.5969270499229 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.0571428571428 -455.73978419278006 L 607.2 -462.88264133563723 L 614.3428571428572 -455.73978419278006 L 607.2 -448.5969270499229 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip11);"> + <path d="M 638.4571428571428 -479.4552380707483 L 638.4571428571428 -493.74095235646257 L 652.7428571428572 -493.74095235646257 L 652.7428571428572 -479.4552380707483 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 638.4571428571428 -486.59809521360546 L 645.6 -493.74095235646257 L 652.7428571428572 -486.59809521360546 L 645.6 -479.4552380707483 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 676.8571428571429 -512.8571428571429 L 676.8571428571429 -527.1428571428571 L 691.1428571428571 -527.1428571428571 L 691.1428571428571 -512.8571428571429 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 676.8571428571429 -520.0 L 684.0 -527.1428571428571 L 691.1428571428571 -520.0 L 684.0 -512.8571428571429 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip13);"> + <path d="M 338.4 -319.58524770901704 L 376.8 -321.8586420923722 L 415.2 -317.96136427191584 L 453.6 -320.2516593755926 L 492.0 -317.16660613093075 L 530.4 -318.5827309224039 L 568.8 -319.2230490082318 L 607.2 -320.42632372368706 L 645.6 -317.1963061415379 L 684.0 -317.96150570053777" style="stroke:rgb(0,138,0);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip14);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip15);"> + <path d="M 332.15 -314.58524770901704 L 332.15 -324.58524770901704 L 344.65 -324.58524770901704 L 344.65 -314.58524770901704 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 332.15 -314.58524770901704 L 344.65 -314.58524770901704 L 338.4 -324.58524770901704 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip16);"> + <path d="M 370.55 -316.8586420923722 L 370.55 -326.8586420923722 L 383.05 -326.8586420923722 L 383.05 -316.8586420923722 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 370.55 -316.8586420923722 L 383.05 -316.8586420923722 L 376.8 -326.8586420923722 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip17);"> + <path d="M 408.95 -312.96136427191584 L 408.95 -322.96136427191584 L 421.45 -322.96136427191584 L 421.45 -312.96136427191584 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 408.95 -312.96136427191584 L 421.45 -312.96136427191584 L 415.2 -322.96136427191584 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip18);"> + <path d="M 447.35 -315.2516593755926 L 447.35 -325.2516593755926 L 459.85 -325.2516593755926 L 459.85 -315.2516593755926 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 447.35 -315.2516593755926 L 459.85 -315.2516593755926 L 453.6 -325.2516593755926 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip19);"> + <path d="M 485.75 -312.16660613093075 L 485.75 -322.16660613093075 L 498.25 -322.16660613093075 L 498.25 -312.16660613093075 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 485.75 -312.16660613093075 L 498.25 -312.16660613093075 L 492.0 -322.16660613093075 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip20);"> + <path d="M 524.15 -313.5827309224039 L 524.15 -323.5827309224039 L 536.65 -323.5827309224039 L 536.65 -313.5827309224039 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 524.15 -313.5827309224039 L 536.65 -313.5827309224039 L 530.4 -323.5827309224039 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip21);"> + <path d="M 562.55 -314.2230490082318 L 562.55 -324.2230490082318 L 575.05 -324.2230490082318 L 575.05 -314.2230490082318 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 562.55 -314.2230490082318 L 575.05 -314.2230490082318 L 568.8 -324.2230490082318 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip22);"> + <path d="M 600.95 -315.42632372368706 L 600.95 -325.42632372368706 L 613.45 -325.42632372368706 L 613.45 -315.42632372368706 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.95 -315.42632372368706 L 613.45 -315.42632372368706 L 607.2 -325.42632372368706 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip23);"> + <path d="M 639.35 -312.1963061415379 L 639.35 -322.1963061415379 L 651.85 -322.1963061415379 L 651.85 -312.1963061415379 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 639.35 -312.1963061415379 L 651.85 -312.1963061415379 L 645.6 -322.1963061415379 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip24);"> + <path d="M 677.75 -312.96150570053777 L 677.75 -322.96150570053777 L 690.25 -322.96150570053777 L 690.25 -312.96150570053777 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 677.75 -312.96150570053777 L 690.25 -312.96150570053777 L 684.0 -322.96150570053777 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip25);"> + <path d="M 338.4 -317.1112368254417 L 376.8 -315.2160225771509 L 415.2 -314.87609888432104 L 453.6 -316.4453201590429 L 492.0 -315.1061325379045 L 530.4 -315.9192056854306 L 568.8 -315.31961904272106 L 607.2 -314.8980910350325 L 645.6 -315.60000128571477 L 684.0 -315.39485906959254" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip26);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip27);"> + <path d="M 330.4 -309.1112368254417 L 330.4 -325.1112368254417 L 346.4 -325.1112368254417 L 346.4 -309.1112368254417 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -317.1112368254417 M 342.4 -317.1112368254417 L 342.4 -317.111 M 342.4 -317.111 A 4 4 0 1 0 334.4 -317.111 A 4 4 0 1 0 342.4 -317.111 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip28);"> + <path d="M 368.8 -307.2160225771509 L 368.8 -323.2160225771509 L 384.8 -323.2160225771509 L 384.8 -307.2160225771509 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -315.2160225771509 M 380.8 -315.2160225771509 L 380.8 -315.216 M 380.8 -315.216 A 4 4 0 1 0 372.8 -315.216 A 4 4 0 1 0 380.8 -315.216 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip29);"> + <path d="M 407.2 -306.87609888432104 L 407.2 -322.87609888432104 L 423.2 -322.87609888432104 L 423.2 -306.87609888432104 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -314.87609888432104 M 419.2 -314.87609888432104 L 419.2 -314.876 M 419.2 -314.876 A 4 4 0 1 0 411.2 -314.876 A 4 4 0 1 0 419.2 -314.876 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip30);"> + <path d="M 445.6 -308.4453201590429 L 445.6 -324.4453201590429 L 461.6 -324.4453201590429 L 461.6 -308.4453201590429 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -316.4453201590429 M 457.6 -316.4453201590429 L 457.6 -316.445 M 457.6 -316.445 A 4 4 0 1 0 449.6 -316.445 A 4 4 0 1 0 457.6 -316.445 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip31);"> + <path d="M 484.0 -307.1061325379045 L 484.0 -323.1061325379045 L 500.0 -323.1061325379045 L 500.0 -307.1061325379045 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -315.1061325379045 M 496.0 -315.1061325379045 L 496 -315.106 M 496 -315.106 A 4 4 0 1 0 488 -315.106 A 4 4 0 1 0 496 -315.106 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip32);"> + <path d="M 522.4 -307.9192056854306 L 522.4 -323.9192056854306 L 538.4 -323.9192056854306 L 538.4 -307.9192056854306 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -315.9192056854306 M 534.4 -315.9192056854306 L 534.4 -315.919 M 534.4 -315.919 A 4 4 0 1 0 526.4 -315.919 A 4 4 0 1 0 534.4 -315.919 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip33);"> + <path d="M 560.8 -307.31961904272106 L 560.8 -323.3196190427211 L 576.8 -323.3196190427211 L 576.8 -307.31961904272106 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -315.31961904272106 M 572.8 -315.31961904272106 L 572.8 -315.32 M 572.8 -315.32 A 4 4 0 1 0 564.8 -315.32 A 4 4 0 1 0 572.8 -315.32 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip34);"> + <path d="M 599.2 -306.8980910350325 L 599.2 -322.8980910350325 L 615.2 -322.8980910350325 L 615.2 -306.8980910350325 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -314.8980910350325 M 611.2 -314.8980910350325 L 611.2 -314.898 M 611.2 -314.898 A 4 4 0 1 0 603.2 -314.898 A 4 4 0 1 0 611.2 -314.898 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip35);"> + <path d="M 637.6 -307.60000128571477 L 637.6 -323.60000128571477 L 653.6 -323.60000128571477 L 653.6 -307.60000128571477 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -315.60000128571477 M 649.6 -315.60000128571477 L 649.6 -315.6 M 649.6 -315.6 A 4 4 0 1 0 641.6 -315.6 A 4 4 0 1 0 649.6 -315.6 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip36);"> + <path d="M 676.0 -307.39485906959254 L 676.0 -323.39485906959254 L 692.0 -323.39485906959254 L 692.0 -307.39485906959254 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -315.39485906959254 M 688.0 -315.39485906959254 L 688 -315.395 M 688 -315.395 A 4 4 0 1 0 680 -315.395 A 4 4 0 1 0 688 -315.395 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip37);"> + <path d="M 338.4 -309.3340769050275 L 376.8 -311.87470066953597 L 415.2 -311.0968432488726 L 453.6 -312.9735303476894 L 492.0 -310.54562519486615 L 530.4 -311.09245896159246 L 568.8 -311.85475923384257 L 607.2 -312.21589721996327 L 645.6 -310.52335018691076 L 684.0 -311.07980109992894" style="stroke:rgb(0,138,0);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip38);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip39);"> + <path d="M 332.15 -304.3340769050275 L 332.15 -314.3340769050275 L 344.65 -314.3340769050275 L 344.65 -304.3340769050275 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -304.3340769050275 L 332.15 -314.3340769050275 L 344.65 -314.3340769050275 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip40);"> + <path d="M 370.55 -306.87470066953597 L 370.55 -316.87470066953597 L 383.05 -316.87470066953597 L 383.05 -306.87470066953597 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -306.87470066953597 L 370.55 -316.87470066953597 L 383.05 -316.87470066953597 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip41);"> + <path d="M 408.95 -306.0968432488726 L 408.95 -316.0968432488726 L 421.45 -316.0968432488726 L 421.45 -306.0968432488726 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -306.0968432488726 L 408.95 -316.0968432488726 L 421.45 -316.0968432488726 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip42);"> + <path d="M 447.35 -307.9735303476894 L 447.35 -317.9735303476894 L 459.85 -317.9735303476894 L 459.85 -307.9735303476894 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -307.9735303476894 L 447.35 -317.9735303476894 L 459.85 -317.9735303476894 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip43);"> + <path d="M 485.75 -305.54562519486615 L 485.75 -315.54562519486615 L 498.25 -315.54562519486615 L 498.25 -305.54562519486615 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -305.54562519486615 L 485.75 -315.54562519486615 L 498.25 -315.54562519486615 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip44);"> + <path d="M 524.15 -306.09245896159246 L 524.15 -316.09245896159246 L 536.65 -316.09245896159246 L 536.65 -306.09245896159246 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -306.09245896159246 L 524.15 -316.09245896159246 L 536.65 -316.09245896159246 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip45);"> + <path d="M 562.55 -306.85475923384257 L 562.55 -316.85475923384257 L 575.05 -316.85475923384257 L 575.05 -306.85475923384257 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -306.85475923384257 L 562.55 -316.85475923384257 L 575.05 -316.85475923384257 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip46);"> + <path d="M 600.95 -307.21589721996327 L 600.95 -317.21589721996327 L 613.45 -317.21589721996327 L 613.45 -307.21589721996327 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -307.21589721996327 L 600.95 -317.21589721996327 L 613.45 -317.21589721996327 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip47);"> + <path d="M 639.35 -305.52335018691076 L 639.35 -315.52335018691076 L 651.85 -315.52335018691076 L 651.85 -305.52335018691076 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -305.52335018691076 L 639.35 -315.52335018691076 L 651.85 -315.52335018691076 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip48);"> + <path d="M 677.75 -306.07980109992894 L 677.75 -316.07980109992894 L 690.25 -316.07980109992894 L 690.25 -306.07980109992894 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -306.07980109992894 L 677.75 -316.07980109992894 L 690.25 -316.07980109992894 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip49);"> + <path d="M 290 -114 L 290 -188 L 324 -188 L 324 -114 Z" style="stroke:none;"/> + </g> + <path d="M 300 -178.66666666666669 L 314 -178.66666666666669" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip50);"> + <path d="M 299.85714285714283 -171.52380952380952 L 299.85714285714283 -185.8095238095238 L 314.14285714285717 -185.8095238095238 L 314.14285714285717 -171.52380952380952 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 299.85714285714283 -178.66666666666669 L 307.0 -185.8095238095238 L 314.14285714285717 -178.66666666666669 L 307.0 -171.52380952380952 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-174.0"> + cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map + </text> + <path d="M 300 -160.66666666666666 L 314 -160.66666666666666" style="stroke:rgb(0,138,0);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip51);"> + <path d="M 300.75 -155.66666666666666 L 300.75 -165.66666666666666 L 313.25 -165.66666666666666 L 313.25 -155.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 300.75 -155.66666666666666 L 313.25 -155.66666666666666 L 307.0 -165.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-156.0"> + gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map + </text> + <path d="M 300 -142.66666666666666 L 314 -142.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip52);"> + <path d="M 299.0 -134.66666666666666 L 299.0 -150.66666666666666 L 315.0 -150.66666666666666 L 315.0 -134.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -142.66666666666666 M 311.0 -142.66666666666666 L 311 -142.667 M 311 -142.667 A 4 4 0 1 0 303 -142.667 A 4 4 0 1 0 311 -142.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-138.0"> + n_hash_map_ncah + </text> + <path d="M 300 -124.66666666666666 L 314 -124.66666666666666" style="stroke:rgb(0,138,0);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip53);"> + <path d="M 300.75 -119.66666666666666 L 300.75 -129.66666666666666 L 313.25 -129.66666666666666 L 313.25 -119.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -119.66666666666666 L 300.75 -129.66666666666666 L 313.25 -129.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-120.0"> + cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map + </text> + </g> + </g> + </g> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/insert_resize_sequence_diagram1.png b/libstdc++-v3/doc/xml/images/pbds_insert_resize_sequence_diagram1.png Binary files differindex f64764ec931..f64764ec931 100644 --- a/libstdc++-v3/doc/html/ext/pb_ds/insert_resize_sequence_diagram1.png +++ b/libstdc++-v3/doc/xml/images/pbds_insert_resize_sequence_diagram1.png diff --git a/libstdc++-v3/doc/html/ext/pb_ds/insert_resize_sequence_diagram2.png b/libstdc++-v3/doc/xml/images/pbds_insert_resize_sequence_diagram2.png Binary files differindex e4645973eeb..e4645973eeb 100644 --- a/libstdc++-v3/doc/html/ext/pb_ds/insert_resize_sequence_diagram2.png +++ b/libstdc++-v3/doc/xml/images/pbds_insert_resize_sequence_diagram2.png diff --git a/libstdc++-v3/doc/html/ext/pb_ds/insert_resize_sequence_diagram3.png b/libstdc++-v3/doc/xml/images/pbds_insert_resize_sequence_diagram3.png Binary files differindex 5535c5fe603..5535c5fe603 100644 --- a/libstdc++-v3/doc/html/ext/pb_ds/insert_resize_sequence_diagram3.png +++ b/libstdc++-v3/doc/xml/images/pbds_insert_resize_sequence_diagram3.png diff --git a/libstdc++-v3/doc/html/ext/pb_ds/invalidation_guarantee_erase.png b/libstdc++-v3/doc/xml/images/pbds_invalidation_guarantee_erase.png Binary files differindex 940a27f7142..940a27f7142 100644 --- a/libstdc++-v3/doc/html/ext/pb_ds/invalidation_guarantee_erase.png +++ b/libstdc++-v3/doc/xml/images/pbds_invalidation_guarantee_erase.png diff --git a/libstdc++-v3/doc/xml/images/pbds_invalidation_tag_hierarchy.pdf b/libstdc++-v3/doc/xml/images/pbds_invalidation_tag_hierarchy.pdf Binary files differnew file mode 100644 index 00000000000..39e4e2cb63b --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_invalidation_tag_hierarchy.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_invalidation_tag_hierarchy.png b/libstdc++-v3/doc/xml/images/pbds_invalidation_tag_hierarchy.png Binary files differnew file mode 100644 index 00000000000..570a70da969 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_invalidation_tag_hierarchy.png diff --git a/libstdc++-v3/doc/xml/images/pbds_invalidation_tag_hierarchy.svg b/libstdc++-v3/doc/xml/images/pbds_invalidation_tag_hierarchy.svg new file mode 100644 index 00000000000..46ebb3da57f --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_invalidation_tag_hierarchy.svg @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Generated by graphviz version 2.26.3 (20100126.1600) + --> +<!-- Title: G Pages: 1 --> +<svg width="224pt" height="146pt" viewBox="0.00 0.00 224.00 146.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph1" class="graph" transform="scale(1) rotate(0) translate(4, 142)"> +<title>G</title> +<polygon fill="white" stroke="white" points="-4,5 -4,-142 221,-142 221,5 -4,5"/> +<!-- Node1 --> +<g id="node1" class="node"><title>Node1</title> +<polygon fill="#bfbfbf" stroke="black" points="1,-117 1,-137 215,-137 215,-117 1,-117"/> +<text text-anchor="middle" x="108" y="-124.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::basic_invalidation_guarantee</text> +</g> +<!-- Node2 --> +<g id="node3" class="node"><title>Node2</title> +<a xlink:href="a00351.html" target="_top" xlink:title="__gnu_pbds::point_invalidation_guarantee"> +<polygon fill="white" stroke="black" points="1.5,-59 1.5,-79 214.5,-79 214.5,-59 1.5,-59"/> +<text text-anchor="middle" x="108" y="-66.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::point_invalidation_guarantee</text> +</a> +</g> +<!-- Node1->Node2 --> +<g id="edge2" class="edge"><title>Node1->Node2</title> +<path fill="none" stroke="midnightblue" d="M108,-106.89C108,-97.6201 108,-87.0083 108,-79.3776"/> +<polygon fill="midnightblue" stroke="midnightblue" points="104.5,-106.897 108,-116.897 111.5,-106.897 104.5,-106.897"/> +</g> +<!-- Node3 --> +<g id="node5" class="node"><title>Node3</title> +<a xlink:href="a00355.html" target="_top" xlink:title="__gnu_pbds::range_invalidation_guarantee"> +<polygon fill="white" stroke="black" points="-0.5,-1 -0.5,-21 216.5,-21 216.5,-1 -0.5,-1"/> +<text text-anchor="middle" x="108" y="-8.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::range_invalidation_guarantee</text> +</a> +</g> +<!-- Node2->Node3 --> +<g id="edge4" class="edge"><title>Node2->Node3</title> +<path fill="none" stroke="midnightblue" d="M108,-48.8902C108,-39.6201 108,-29.0083 108,-21.3776"/> +<polygon fill="midnightblue" stroke="midnightblue" points="104.5,-48.8971 108,-58.8972 111.5,-48.8972 104.5,-48.8971"/> +</g> +</g> +</svg>
\ No newline at end of file diff --git a/libstdc++-v3/doc/html/ext/pb_ds/lu.png b/libstdc++-v3/doc/xml/images/pbds_list_update.png Binary files differindex 7c96dcaf665..7c96dcaf665 100644 --- a/libstdc++-v3/doc/html/ext/pb_ds/lu.png +++ b/libstdc++-v3/doc/xml/images/pbds_list_update.png diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_large_s2p_hash_local.pdf b/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_large_s2p_hash_local.pdf Binary files differnew file mode 100644 index 00000000000..65b9b30c0c8 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_large_s2p_hash_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_large_s2p_hash_local.png b/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_large_s2p_hash_local.png Binary files differnew file mode 100644 index 00000000000..40877824fb9 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_large_s2p_hash_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_large_s2p_hash_local.svg b/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_large_s2p_hash_local.svg new file mode 100644 index 00000000000..563fc893c58 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_large_s2p_hash_local.svg @@ -0,0 +1,239 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 416.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 357.6 -352.28267637128954 M 361.6 -352.28267637128954 L 361.6 -352.283 M 361.6 -352.283 A 4 4 0 1 0 353.6 -352.283 A 4 4 0 1 0 361.6 -352.283 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 434.4 -392.65813127548563 M 438.4 -392.65813127548563 L 438.4 -392.658 M 438.4 -392.658 A 4 4 0 1 0 430.4 -392.658 A 4 4 0 1 0 438.4 -392.658 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 511.2 -436.7246897882229 M 515.2 -436.7246897882229 L 515.2 -436.725 M 515.2 -436.725 A 4 4 0 1 0 507.2 -436.725 A 4 4 0 1 0 515.2 -436.725 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 588.0 -473.31161485508835 M 592.0 -473.31161485508835 L 592 -473.312 M 592 -473.312 A 4 4 0 1 0 584 -473.312 A 4 4 0 1 0 592 -473.312 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 664.8 -520.0 M 668.8 -520.0 L 668.8 -520 M 668.8 -520 A 4 4 0 1 0 660.8 -520 A 4 4 0 1 0 668.8 -520 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 290 -134 L 290 -246 L 324 -246 L 324 -134 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 307.0 -236.66666666666666 M 311.0 -236.66666666666666 L 311 -236.667 M 311 -236.667 A 4 4 0 1 0 303 -236.667 A 4 4 0 1 0 311 -236.667 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 9.12e-08 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.5004867321942"> + 1.82e-07 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.5004867321942"> + 2.74e-07 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.5004867321942"> + 3.65e-07 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321942"> + 4.56e-07 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 357.6 -352.28267637128954 L 434.4 -392.65813127548563 L 511.2 -436.7246897882229 L 588.0 -473.31161485508835 L 664.8 -520.0" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip3);"> + <path d="M 349.6 -344.28267637128954 L 349.6 -360.28267637128954 L 365.6 -360.28267637128954 L 365.6 -344.28267637128954 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 357.6 -352.28267637128954 M 361.6 -352.28267637128954 L 361.6 -352.283 M 361.6 -352.283 A 4 4 0 1 0 353.6 -352.283 A 4 4 0 1 0 361.6 -352.283 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip4);"> + <path d="M 426.4 -384.65813127548563 L 426.4 -400.65813127548563 L 442.4 -400.65813127548563 L 442.4 -384.65813127548563 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 434.4 -392.65813127548563 M 438.4 -392.65813127548563 L 438.4 -392.658 M 438.4 -392.658 A 4 4 0 1 0 430.4 -392.658 A 4 4 0 1 0 438.4 -392.658 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 503.2 -428.7246897882229 L 503.2 -444.7246897882229 L 519.2 -444.7246897882229 L 519.2 -428.7246897882229 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 511.2 -436.7246897882229 M 515.2 -436.7246897882229 L 515.2 -436.725 M 515.2 -436.725 A 4 4 0 1 0 507.2 -436.725 A 4 4 0 1 0 515.2 -436.725 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 580.0 -465.31161485508835 L 580.0 -481.31161485508835 L 596.0 -481.31161485508835 L 596.0 -465.31161485508835 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 588.0 -473.31161485508835 M 592.0 -473.31161485508835 L 592 -473.312 M 592 -473.312 A 4 4 0 1 0 584 -473.312 A 4 4 0 1 0 592 -473.312 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 656.8 -512.0 L 656.8 -528.0 L 672.8 -528.0 L 672.8 -512.0 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 664.8 -520.0 M 668.8 -520.0 L 668.8 -520 M 668.8 -520 A 4 4 0 1 0 660.8 -520 A 4 4 0 1 0 668.8 -520 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip8);"> + <path d="M 357.6 -319.2265839435261 L 434.4 -322.2206077081598 L 511.2 -326.16313851010653 L 588.0 -331.68599991230764 L 664.8 -337.375402288771" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip9);"> + <path d="M 352.6 -314.2265839435261 L 362.6 -324.2265839435261" style="stroke-width:0.7;"/> + <path d="M 362.6 -314.2265839435261 L 352.6 -324.2265839435261" style="stroke-width:0.7;"/> + <path d="M 429.4 -317.2206077081598 L 439.4 -327.2206077081598" style="stroke-width:0.7;"/> + <path d="M 439.4 -317.2206077081598 L 429.4 -327.2206077081598" style="stroke-width:0.7;"/> + <path d="M 506.2 -321.16313851010653 L 516.2 -331.16313851010653" style="stroke-width:0.7;"/> + <path d="M 516.2 -321.16313851010653 L 506.2 -331.16313851010653" style="stroke-width:0.7;"/> + <path d="M 583.0 -326.68599991230764 L 593.0 -336.68599991230764" style="stroke-width:0.7;"/> + <path d="M 593.0 -326.68599991230764 L 583.0 -336.68599991230764" style="stroke-width:0.7;"/> + <path d="M 659.8 -332.375402288771 L 669.8 -342.375402288771" style="stroke-width:0.7;"/> + <path d="M 669.8 -332.375402288771 L 659.8 -342.375402288771" style="stroke-width:0.7;"/> + </g> + <g style="clip-path:url(#clip10);"> + <path d="M 357.6 -320.4353926426097 L 434.4 -321.22165124742406 L 511.2 -321.2458631122024 L 588.0 -322.2087911606086 L 664.8 -321.7055026965405" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip11);"> + <path d="M 352.6 -315.4353926426097 L 362.6 -325.4353926426097" style="stroke-width:0.7;"/> + <path d="M 362.6 -315.4353926426097 L 352.6 -325.4353926426097" style="stroke-width:0.7;"/> + <path d="M 429.4 -316.22165124742406 L 439.4 -326.22165124742406" style="stroke-width:0.7;"/> + <path d="M 439.4 -316.22165124742406 L 429.4 -326.22165124742406" style="stroke-width:0.7;"/> + <path d="M 506.2 -316.2458631122024 L 516.2 -326.2458631122024" style="stroke-width:0.7;"/> + <path d="M 516.2 -316.2458631122024 L 506.2 -326.2458631122024" style="stroke-width:0.7;"/> + <path d="M 583.0 -317.2087911606086 L 593.0 -327.2087911606086" style="stroke-width:0.7;"/> + <path d="M 593.0 -317.2087911606086 L 583.0 -327.2087911606086" style="stroke-width:0.7;"/> + <path d="M 659.8 -316.7055026965405 L 669.8 -326.7055026965405" style="stroke-width:0.7;"/> + <path d="M 669.8 -316.7055026965405 L 659.8 -326.7055026965405" style="stroke-width:0.7;"/> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 290 -134 L 290 -246 L 324 -246 L 324 -134 Z" style="stroke:none;"/> + </g> + <path d="M 300 -236.66666666666666 L 314 -236.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip13);"> + <path d="M 299.0 -228.66666666666666 L 299.0 -244.66666666666666 L 315.0 -244.66666666666666 L 315.0 -228.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -236.66666666666666 M 311.0 -236.66666666666666 L 311 -236.667 M 311 -236.667 A 4 4 0 1 0 303 -236.667 A 4 4 0 1 0 311 -236.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-232.0"> + n_hash_mmap + </text> + <path d="M 300 -218.66666666666669 L 314 -218.66666666666669" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <path d="M 302.0 -213.66666666666669 L 312.0 -223.66666666666669" style="stroke-width:0.7;"/> + <path d="M 312.0 -213.66666666666669 L 302.0 -223.66666666666669" style="stroke-width:0.7;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-214.0"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-200.0"> + mmap_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-186.0"> + lu_mtf_set + </text> + <path d="M 300 -172.66666666666669 L 314 -172.66666666666669" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <path d="M 302.0 -167.66666666666669 L 312.0 -177.66666666666669" style="stroke-width:0.7;"/> + <path d="M 312.0 -167.66666666666669 L 302.0 -177.66666666666669" style="stroke-width:0.7;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-168.0"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-154.0"> + mmap_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-140.0"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set + </text> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_large_s2p_tree_local.pdf b/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_large_s2p_tree_local.pdf Binary files differnew file mode 100644 index 00000000000..5669985f26b --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_large_s2p_tree_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_large_s2p_tree_local.png b/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_large_s2p_tree_local.png Binary files differnew file mode 100644 index 00000000000..5dd805a254e --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_large_s2p_tree_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_large_s2p_tree_local.svg b/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_large_s2p_tree_local.svg new file mode 100644 index 00000000000..0bdda44a63e --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_large_s2p_tree_local.svg @@ -0,0 +1,281 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 416.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 357.6 -418.65912233461904 M 361.6 -418.65912233461904 L 361.6 -418.659 M 361.6 -418.659 A 4 4 0 1 0 353.6 -418.659 A 4 4 0 1 0 361.6 -418.659 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 434.4 -455.05312568226475 M 438.4 -455.05312568226475 L 438.4 -455.053 M 438.4 -455.053 A 4 4 0 1 0 430.4 -455.053 A 4 4 0 1 0 438.4 -455.053 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 511.2 -479.33192635179387 M 515.2 -479.33192635179387 L 515.2 -479.332 M 515.2 -479.332 A 4 4 0 1 0 507.2 -479.332 A 4 4 0 1 0 515.2 -479.332 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 588.0 -507.1464958882177 M 592.0 -507.1464958882177 L 592 -507.146 M 592 -507.146 A 4 4 0 1 0 584 -507.146 A 4 4 0 1 0 592 -507.146 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 664.8 -520.0 M 668.8 -520.0 L 668.8 -520 M 668.8 -520 A 4 4 0 1 0 660.8 -520 A 4 4 0 1 0 668.8 -520 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 350.45714285714286 -369.1154210028382 L 357.6 -376.2582781456954 L 364.74285714285713 -369.1154210028382 L 357.6 -361.97256385998105 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 427.25714285714287 -376.8102758168983 L 434.4 -383.95313295975546 L 441.54285714285714 -376.8102758168983 L 434.4 -369.6674186740412 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 504.0571428571428 -385.80634597190885 L 511.2 -392.949203114766 L 518.3428571428572 -385.80634597190885 L 511.2 -378.66348882905174 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 580.8571428571429 -393.1296848846518 L 588.0 -400.2725420275089 L 595.1428571428571 -393.1296848846518 L 588.0 -385.9868277417946 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 657.6571428571428 -400.48504475656796 L 664.8 -407.62790189942507 L 671.9428571428572 -400.48504475656796 L 664.8 -393.3421876137108 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip17"> + <path d="M 290 -134 L 290 -246 L 324 -246 L 324 -134 Z"/> + </clipPath> + <clipPath id="clip18"> + <path d="M 307.0 -236.66666666666666 M 311.0 -236.66666666666666 L 311 -236.667 M 311 -236.667 A 4 4 0 1 0 303 -236.667 A 4 4 0 1 0 311 -236.667 Z"/> + </clipPath> + <clipPath id="clip19"> + <path d="M 299.85714285714283 -218.66666666666669 L 307.0 -225.8095238095238 L 314.14285714285717 -218.66666666666669 L 307.0 -211.52380952380952 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 1.21e-07 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.5004867321942"> + 2.42e-07 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.5004867321942"> + 3.63e-07 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.5004867321942"> + 4.84e-07 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321943"> + 6.05e-07 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 357.6 -418.65912233461904 L 434.4 -455.05312568226475 L 511.2 -479.33192635179387 L 588.0 -507.1464958882177 L 664.8 -520.0" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip3);"> + <path d="M 349.6 -410.65912233461904 L 349.6 -426.65912233461904 L 365.6 -426.65912233461904 L 365.6 -410.65912233461904 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 357.6 -418.65912233461904 M 361.6 -418.65912233461904 L 361.6 -418.659 M 361.6 -418.659 A 4 4 0 1 0 353.6 -418.659 A 4 4 0 1 0 361.6 -418.659 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip4);"> + <path d="M 426.4 -447.05312568226475 L 426.4 -463.05312568226475 L 442.4 -463.05312568226475 L 442.4 -447.05312568226475 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 434.4 -455.05312568226475 M 438.4 -455.05312568226475 L 438.4 -455.053 M 438.4 -455.053 A 4 4 0 1 0 430.4 -455.053 A 4 4 0 1 0 438.4 -455.053 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 503.2 -471.33192635179387 L 503.2 -487.33192635179387 L 519.2 -487.33192635179387 L 519.2 -471.33192635179387 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 511.2 -479.33192635179387 M 515.2 -479.33192635179387 L 515.2 -479.332 M 515.2 -479.332 A 4 4 0 1 0 507.2 -479.332 A 4 4 0 1 0 515.2 -479.332 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 580.0 -499.1464958882177 L 580.0 -515.1464958882177 L 596.0 -515.1464958882177 L 596.0 -499.1464958882177 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 588.0 -507.1464958882177 M 592.0 -507.1464958882177 L 592 -507.146 M 592 -507.146 A 4 4 0 1 0 584 -507.146 A 4 4 0 1 0 592 -507.146 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 656.8 -512.0 L 656.8 -528.0 L 672.8 -528.0 L 672.8 -512.0 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 664.8 -520.0 M 668.8 -520.0 L 668.8 -520 M 668.8 -520 A 4 4 0 1 0 660.8 -520 A 4 4 0 1 0 668.8 -520 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip8);"> + <path d="M 357.6 -369.1154210028382 L 434.4 -376.8102758168983 L 511.2 -385.80634597190885 L 588.0 -393.1296848846518 L 664.8 -400.48504475656796" style="stroke:rgb(126,126,126);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip9);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip10);"> + <path d="M 350.45714285714286 -361.97256385998105 L 350.45714285714286 -376.2582781456954 L 364.74285714285713 -376.2582781456954 L 364.74285714285713 -361.97256385998105 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 350.45714285714286 -369.1154210028382 L 357.6 -376.2582781456954 L 364.74285714285713 -369.1154210028382 L 357.6 -361.97256385998105 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip11);"> + <path d="M 427.25714285714287 -369.6674186740412 L 427.25714285714287 -383.95313295975546 L 441.54285714285714 -383.95313295975546 L 441.54285714285714 -369.6674186740412 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 427.25714285714287 -376.8102758168983 L 434.4 -383.95313295975546 L 441.54285714285714 -376.8102758168983 L 434.4 -369.6674186740412 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 504.0571428571428 -378.66348882905174 L 504.0571428571428 -392.949203114766 L 518.3428571428572 -392.949203114766 L 518.3428571428572 -378.66348882905174 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 504.0571428571428 -385.80634597190885 L 511.2 -392.949203114766 L 518.3428571428572 -385.80634597190885 L 511.2 -378.66348882905174 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip13);"> + <path d="M 580.8571428571429 -385.9868277417946 L 580.8571428571429 -400.2725420275089 L 595.1428571428571 -400.2725420275089 L 595.1428571428571 -385.9868277417946 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 580.8571428571429 -393.1296848846518 L 588.0 -400.2725420275089 L 595.1428571428571 -393.1296848846518 L 588.0 -385.9868277417946 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip14);"> + <path d="M 657.6571428571428 -393.3421876137108 L 657.6571428571428 -407.62790189942507 L 671.9428571428572 -407.62790189942507 L 671.9428571428572 -393.3421876137108 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 657.6571428571428 -400.48504475656796 L 664.8 -407.62790189942507 L 671.9428571428572 -400.48504475656796 L 664.8 -393.3421876137108 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip15);"> + <path d="M 357.6 -368.56778982606795 L 434.4 -369.4832981587948 L 511.2 -370.27108652936465 L 588.0 -371.9077941925624 L 664.8 -371.7138490648424" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip16);"> + <path d="M 352.6 -363.56778982606795 L 362.6 -373.56778982606795" style="stroke-width:0.7;"/> + <path d="M 362.6 -363.56778982606795 L 352.6 -373.56778982606795" style="stroke-width:0.7;"/> + <path d="M 429.4 -364.4832981587948 L 439.4 -374.4832981587948" style="stroke-width:0.7;"/> + <path d="M 439.4 -364.4832981587948 L 429.4 -374.4832981587948" style="stroke-width:0.7;"/> + <path d="M 506.2 -365.27108652936465 L 516.2 -375.27108652936465" style="stroke-width:0.7;"/> + <path d="M 516.2 -365.27108652936465 L 506.2 -375.27108652936465" style="stroke-width:0.7;"/> + <path d="M 583.0 -366.9077941925624 L 593.0 -376.9077941925624" style="stroke-width:0.7;"/> + <path d="M 593.0 -366.9077941925624 L 583.0 -376.9077941925624" style="stroke-width:0.7;"/> + <path d="M 659.8 -366.7138490648424 L 669.8 -376.7138490648424" style="stroke-width:0.7;"/> + <path d="M 669.8 -366.7138490648424 L 659.8 -376.7138490648424" style="stroke-width:0.7;"/> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip17);"> + <path d="M 290 -134 L 290 -246 L 324 -246 L 324 -134 Z" style="stroke:none;"/> + </g> + <path d="M 300 -236.66666666666666 L 314 -236.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip18);"> + <path d="M 299.0 -228.66666666666666 L 299.0 -244.66666666666666 L 315.0 -244.66666666666666 L 315.0 -228.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -236.66666666666666 M 311.0 -236.66666666666666 L 311 -236.667 M 311 -236.667 A 4 4 0 1 0 303 -236.667 A 4 4 0 1 0 311 -236.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-232.0"> + n_mmap + </text> + <path d="M 300 -218.66666666666669 L 314 -218.66666666666669" style="stroke:rgb(126,126,126);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip19);"> + <path d="M 299.85714285714283 -211.52380952380952 L 299.85714285714283 -225.8095238095238 L 314.14285714285717 -225.8095238095238 L 314.14285714285717 -211.52380952380952 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 299.85714285714283 -218.66666666666669 L 307.0 -225.8095238095238 L 314.14285714285717 -218.66666666666669 L 307.0 -211.52380952380952 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-214.0"> + rb_tree_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-200.0"> + mmap_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-186.0"> + lu_mtf_set + </text> + <path d="M 300 -172.66666666666669 L 314 -172.66666666666669" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <path d="M 302.0 -167.66666666666669 L 312.0 -177.66666666666669" style="stroke-width:0.7;"/> + <path d="M 312.0 -167.66666666666669 L 302.0 -177.66666666666669" style="stroke-width:0.7;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-168.0"> + rb_tree_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-154.0"> + mmap_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-140.0"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set + </text> + </g> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_small_s2p_hash_local.pdf b/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_small_s2p_hash_local.pdf Binary files differnew file mode 100644 index 00000000000..258e0fc19dc --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_small_s2p_hash_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_small_s2p_hash_local.png b/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_small_s2p_hash_local.png Binary files differnew file mode 100644 index 00000000000..55d25a5bf5c --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_small_s2p_hash_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_small_s2p_hash_local.svg b/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_small_s2p_hash_local.svg new file mode 100644 index 00000000000..6ce9719dd38 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_small_s2p_hash_local.svg @@ -0,0 +1,239 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 416.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 376.8 -393.911762030383 M 380.8 -393.911762030383 L 380.8 -393.912 M 380.8 -393.912 A 4 4 0 1 0 372.8 -393.912 A 4 4 0 1 0 380.8 -393.912 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 453.6 -425.9281360866006 M 457.6 -425.9281360866006 L 457.6 -425.928 M 457.6 -425.928 A 4 4 0 1 0 449.6 -425.928 A 4 4 0 1 0 457.6 -425.928 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 530.4 -459.4157320892516 M 534.4 -459.4157320892516 L 534.4 -459.416 M 534.4 -459.416 A 4 4 0 1 0 526.4 -459.416 A 4 4 0 1 0 534.4 -459.416 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 607.2 -491.6548193005939 M 611.2 -491.6548193005939 L 611.2 -491.655 M 611.2 -491.655 A 4 4 0 1 0 603.2 -491.655 A 4 4 0 1 0 611.2 -491.655 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 684.0 -520.0 M 688.0 -520.0 L 688 -520 M 688 -520 A 4 4 0 1 0 680 -520 A 4 4 0 1 0 688 -520 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 290 -134 L 290 -246 L 324 -246 L 324 -134 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 307.0 -236.66666666666666 M 311.0 -236.66666666666666 L 311 -236.667 M 311 -236.667 A 4 4 0 1 0 303 -236.667 A 4 4 0 1 0 311 -236.667 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 3.08e-08 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.5004867321942"> + 6.16e-08 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.5004867321942"> + 9.23e-08 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.5004867321942"> + 1.23e-07 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321942"> + 1.54e-07 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 376.8 -393.911762030383 L 453.6 -425.9281360866006 L 530.4 -459.4157320892516 L 607.2 -491.6548193005939 L 684.0 -520.0" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip3);"> + <path d="M 368.8 -385.911762030383 L 368.8 -401.911762030383 L 384.8 -401.911762030383 L 384.8 -385.911762030383 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -393.911762030383 M 380.8 -393.911762030383 L 380.8 -393.912 M 380.8 -393.912 A 4 4 0 1 0 372.8 -393.912 A 4 4 0 1 0 380.8 -393.912 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip4);"> + <path d="M 445.6 -417.9281360866006 L 445.6 -433.9281360866006 L 461.6 -433.9281360866006 L 461.6 -417.9281360866006 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -425.9281360866006 M 457.6 -425.9281360866006 L 457.6 -425.928 M 457.6 -425.928 A 4 4 0 1 0 449.6 -425.928 A 4 4 0 1 0 457.6 -425.928 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 522.4 -451.4157320892516 L 522.4 -467.4157320892516 L 538.4 -467.4157320892516 L 538.4 -451.4157320892516 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -459.4157320892516 M 534.4 -459.4157320892516 L 534.4 -459.416 M 534.4 -459.416 A 4 4 0 1 0 526.4 -459.416 A 4 4 0 1 0 534.4 -459.416 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 599.2 -483.6548193005939 L 599.2 -499.6548193005939 L 615.2 -499.6548193005939 L 615.2 -483.6548193005939 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -491.6548193005939 M 611.2 -491.6548193005939 L 611.2 -491.655 M 611.2 -491.655 A 4 4 0 1 0 603.2 -491.655 A 4 4 0 1 0 611.2 -491.655 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 676.0 -512.0 L 676.0 -528.0 L 692.0 -528.0 L 692.0 -512.0 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -520.0 M 688.0 -520.0 L 688 -520 M 688 -520 A 4 4 0 1 0 680 -520 A 4 4 0 1 0 688 -520 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip8);"> + <path d="M 376.8 -359.20153084430353 L 453.6 -360.8051227404452 L 530.4 -362.5319359072657 L 607.2 -363.3200088367922 L 684.0 -364.55622409065506" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip9);"> + <path d="M 371.8 -354.20153084430353 L 381.8 -364.20153084430353" style="stroke-width:0.7;"/> + <path d="M 381.8 -354.20153084430353 L 371.8 -364.20153084430353" style="stroke-width:0.7;"/> + <path d="M 448.6 -355.8051227404452 L 458.6 -365.8051227404452" style="stroke-width:0.7;"/> + <path d="M 458.6 -355.8051227404452 L 448.6 -365.8051227404452" style="stroke-width:0.7;"/> + <path d="M 525.4 -357.5319359072657 L 535.4 -367.5319359072657" style="stroke-width:0.7;"/> + <path d="M 535.4 -357.5319359072657 L 525.4 -367.5319359072657" style="stroke-width:0.7;"/> + <path d="M 602.2 -358.3200088367922 L 612.2 -368.3200088367922" style="stroke-width:0.7;"/> + <path d="M 612.2 -358.3200088367922 L 602.2 -368.3200088367922" style="stroke-width:0.7;"/> + <path d="M 679.0 -359.55622409065506 L 689.0 -369.55622409065506" style="stroke-width:0.7;"/> + <path d="M 689.0 -359.55622409065506 L 679.0 -369.55622409065506" style="stroke-width:0.7;"/> + </g> + <g style="clip-path:url(#clip10);"> + <path d="M 376.8 -358.2454938857195 L 453.6 -359.3646346376265 L 530.4 -362.06535327676056 L 607.2 -363.5512988785071 L 684.0 -365.91337344543933" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip11);"> + <path d="M 371.8 -353.2454938857195 L 381.8 -363.2454938857195" style="stroke-width:0.7;"/> + <path d="M 381.8 -353.2454938857195 L 371.8 -363.2454938857195" style="stroke-width:0.7;"/> + <path d="M 448.6 -354.3646346376265 L 458.6 -364.3646346376265" style="stroke-width:0.7;"/> + <path d="M 458.6 -354.3646346376265 L 448.6 -364.3646346376265" style="stroke-width:0.7;"/> + <path d="M 525.4 -357.06535327676056 L 535.4 -367.06535327676056" style="stroke-width:0.7;"/> + <path d="M 535.4 -357.06535327676056 L 525.4 -367.06535327676056" style="stroke-width:0.7;"/> + <path d="M 602.2 -358.5512988785071 L 612.2 -368.5512988785071" style="stroke-width:0.7;"/> + <path d="M 612.2 -358.5512988785071 L 602.2 -368.5512988785071" style="stroke-width:0.7;"/> + <path d="M 679.0 -360.91337344543933 L 689.0 -370.91337344543933" style="stroke-width:0.7;"/> + <path d="M 689.0 -360.91337344543933 L 679.0 -370.91337344543933" style="stroke-width:0.7;"/> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 290 -134 L 290 -246 L 324 -246 L 324 -134 Z" style="stroke:none;"/> + </g> + <path d="M 300 -236.66666666666666 L 314 -236.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip13);"> + <path d="M 299.0 -228.66666666666666 L 299.0 -244.66666666666666 L 315.0 -244.66666666666666 L 315.0 -228.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -236.66666666666666 M 311.0 -236.66666666666666 L 311 -236.667 M 311 -236.667 A 4 4 0 1 0 303 -236.667 A 4 4 0 1 0 311 -236.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-232.0"> + n_hash_mmap + </text> + <path d="M 300 -218.66666666666669 L 314 -218.66666666666669" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <path d="M 302.0 -213.66666666666669 L 312.0 -223.66666666666669" style="stroke-width:0.7;"/> + <path d="M 312.0 -213.66666666666669 L 302.0 -223.66666666666669" style="stroke-width:0.7;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-214.0"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-200.0"> + mmap_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-186.0"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set + </text> + <path d="M 300 -172.66666666666669 L 314 -172.66666666666669" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <path d="M 302.0 -167.66666666666669 L 312.0 -177.66666666666669" style="stroke-width:0.7;"/> + <path d="M 312.0 -167.66666666666669 L 302.0 -177.66666666666669" style="stroke-width:0.7;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-168.0"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-154.0"> + mmap_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-140.0"> + lu_mtf_set + </text> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_small_s2p_tree_local.pdf b/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_small_s2p_tree_local.pdf Binary files differnew file mode 100644 index 00000000000..ad058078261 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_small_s2p_tree_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_small_s2p_tree_local.png b/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_small_s2p_tree_local.png Binary files differnew file mode 100644 index 00000000000..95c1d8791f8 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_small_s2p_tree_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_small_s2p_tree_local.svg b/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_small_s2p_tree_local.svg new file mode 100644 index 00000000000..fe45e74e8a7 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_small_s2p_tree_local.svg @@ -0,0 +1,281 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 416.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 376.8 -445.7331353751806 M 380.8 -445.7331353751806 L 380.8 -445.733 M 380.8 -445.733 A 4 4 0 1 0 372.8 -445.733 A 4 4 0 1 0 380.8 -445.733 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 453.6 -472.86240439854794 M 457.6 -472.86240439854794 L 457.6 -472.862 M 457.6 -472.862 A 4 4 0 1 0 449.6 -472.862 A 4 4 0 1 0 457.6 -472.862 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 530.4 -494.05610087054595 M 534.4 -494.05610087054595 L 534.4 -494.056 M 534.4 -494.056 A 4 4 0 1 0 526.4 -494.056 A 4 4 0 1 0 534.4 -494.056 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 607.2 -496.5950022909104 M 611.2 -496.5950022909104 L 611.2 -496.595 M 611.2 -496.595 A 4 4 0 1 0 603.2 -496.595 A 4 4 0 1 0 611.2 -496.595 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 684.0 -520.0 M 688.0 -520.0 L 688 -520 M 688 -520 A 4 4 0 1 0 680 -520 A 4 4 0 1 0 688 -520 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 369.65714285714284 -411.838631797836 L 376.8 -418.9814889406931 L 383.9428571428571 -411.838631797836 L 376.8 -404.69577465497883 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 446.45714285714286 -413.64237126845944 L 453.6 -420.7852284113166 L 460.74285714285713 -413.64237126845944 L 453.6 -406.49951412560233 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 523.2571428571429 -417.1946040249533 L 530.4 -424.33746116781043 L 537.5428571428572 -417.1946040249533 L 530.4 -410.05174688209615 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 600.0571428571428 -418.5200278433722 L 607.2 -425.66288498622936 L 614.3428571428572 -418.5200278433722 L 607.2 -411.3771707005151 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 676.8571428571429 -421.15391393225957 L 684.0 -428.2967710751167 L 691.1428571428571 -421.15391393225957 L 684.0 -414.0110567894024 Z"/> + </clipPath> + <clipPath id="clip17"> + <path d="M 290 -134 L 290 -246 L 324 -246 L 324 -134 Z"/> + </clipPath> + <clipPath id="clip18"> + <path d="M 307.0 -236.66666666666666 M 311.0 -236.66666666666666 L 311 -236.667 M 311 -236.667 A 4 4 0 1 0 303 -236.667 A 4 4 0 1 0 311 -236.667 Z"/> + </clipPath> + <clipPath id="clip19"> + <path d="M 299.85714285714283 -172.66666666666669 L 307.0 -179.8095238095238 L 314.14285714285717 -172.66666666666669 L 307.0 -165.52380952380952 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 9.08e-08 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.5004867321942"> + 1.82e-07 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.5004867321942"> + 2.72e-07 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.5004867321942"> + 3.63e-07 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321942"> + 4.54e-07 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 376.8 -445.7331353751806 L 453.6 -472.86240439854794 L 530.4 -494.05610087054595 L 607.2 -496.5950022909104 L 684.0 -520.0" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip3);"> + <path d="M 368.8 -437.7331353751806 L 368.8 -453.7331353751806 L 384.8 -453.7331353751806 L 384.8 -437.7331353751806 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -445.7331353751806 M 380.8 -445.7331353751806 L 380.8 -445.733 M 380.8 -445.733 A 4 4 0 1 0 372.8 -445.733 A 4 4 0 1 0 380.8 -445.733 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip4);"> + <path d="M 445.6 -464.86240439854794 L 445.6 -480.86240439854794 L 461.6 -480.86240439854794 L 461.6 -464.86240439854794 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -472.86240439854794 M 457.6 -472.86240439854794 L 457.6 -472.862 M 457.6 -472.862 A 4 4 0 1 0 449.6 -472.862 A 4 4 0 1 0 457.6 -472.862 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 522.4 -486.05610087054595 L 522.4 -502.05610087054595 L 538.4 -502.05610087054595 L 538.4 -486.05610087054595 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -494.05610087054595 M 534.4 -494.05610087054595 L 534.4 -494.056 M 534.4 -494.056 A 4 4 0 1 0 526.4 -494.056 A 4 4 0 1 0 534.4 -494.056 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 599.2 -488.5950022909104 L 599.2 -504.5950022909104 L 615.2 -504.5950022909104 L 615.2 -488.5950022909104 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -496.5950022909104 M 611.2 -496.5950022909104 L 611.2 -496.595 M 611.2 -496.595 A 4 4 0 1 0 603.2 -496.595 A 4 4 0 1 0 611.2 -496.595 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 676.0 -512.0 L 676.0 -528.0 L 692.0 -528.0 L 692.0 -512.0 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -520.0 M 688.0 -520.0 L 688 -520 M 688 -520 A 4 4 0 1 0 680 -520 A 4 4 0 1 0 688 -520 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip8);"> + <path d="M 376.8 -412.93919395199663 L 453.6 -415.11414901490855 L 530.4 -418.15462763895255 L 607.2 -417.96950445846403 L 684.0 -418.7739664469742" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip9);"> + <path d="M 371.8 -407.93919395199663 L 381.8 -417.93919395199663" style="stroke-width:0.7;"/> + <path d="M 381.8 -407.93919395199663 L 371.8 -417.93919395199663" style="stroke-width:0.7;"/> + <path d="M 448.6 -410.11414901490855 L 458.6 -420.11414901490855" style="stroke-width:0.7;"/> + <path d="M 458.6 -410.11414901490855 L 448.6 -420.11414901490855" style="stroke-width:0.7;"/> + <path d="M 525.4 -413.15462763895255 L 535.4 -423.15462763895255" style="stroke-width:0.7;"/> + <path d="M 535.4 -413.15462763895255 L 525.4 -423.15462763895255" style="stroke-width:0.7;"/> + <path d="M 602.2 -412.96950445846403 L 612.2 -422.96950445846403" style="stroke-width:0.7;"/> + <path d="M 612.2 -412.96950445846403 L 602.2 -422.96950445846403" style="stroke-width:0.7;"/> + <path d="M 679.0 -413.7739664469742 L 689.0 -423.7739664469742" style="stroke-width:0.7;"/> + <path d="M 689.0 -413.7739664469742 L 679.0 -423.7739664469742" style="stroke-width:0.7;"/> + </g> + <g style="clip-path:url(#clip10);"> + <path d="M 376.8 -411.838631797836 L 453.6 -413.64237126845944 L 530.4 -417.1946040249533 L 607.2 -418.5200278433722 L 684.0 -421.15391393225957" style="stroke:rgb(126,126,126);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip11);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 369.65714285714284 -404.69577465497883 L 369.65714285714284 -418.9814889406931 L 383.9428571428571 -418.9814889406931 L 383.9428571428571 -404.69577465497883 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 369.65714285714284 -411.838631797836 L 376.8 -418.9814889406931 L 383.9428571428571 -411.838631797836 L 376.8 -404.69577465497883 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip13);"> + <path d="M 446.45714285714286 -406.49951412560233 L 446.45714285714286 -420.7852284113166 L 460.74285714285713 -420.7852284113166 L 460.74285714285713 -406.49951412560233 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 446.45714285714286 -413.64237126845944 L 453.6 -420.7852284113166 L 460.74285714285713 -413.64237126845944 L 453.6 -406.49951412560233 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip14);"> + <path d="M 523.2571428571429 -410.05174688209615 L 523.2571428571429 -424.33746116781043 L 537.5428571428572 -424.33746116781043 L 537.5428571428572 -410.05174688209615 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 523.2571428571429 -417.1946040249533 L 530.4 -424.33746116781043 L 537.5428571428572 -417.1946040249533 L 530.4 -410.05174688209615 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip15);"> + <path d="M 600.0571428571428 -411.3771707005151 L 600.0571428571428 -425.66288498622936 L 614.3428571428572 -425.66288498622936 L 614.3428571428572 -411.3771707005151 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.0571428571428 -418.5200278433722 L 607.2 -425.66288498622936 L 614.3428571428572 -418.5200278433722 L 607.2 -411.3771707005151 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip16);"> + <path d="M 676.8571428571429 -414.0110567894024 L 676.8571428571429 -428.2967710751167 L 691.1428571428571 -428.2967710751167 L 691.1428571428571 -414.0110567894024 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 676.8571428571429 -421.15391393225957 L 684.0 -428.2967710751167 L 691.1428571428571 -421.15391393225957 L 684.0 -414.0110567894024 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip17);"> + <path d="M 290 -134 L 290 -246 L 324 -246 L 324 -134 Z" style="stroke:none;"/> + </g> + <path d="M 300 -236.66666666666666 L 314 -236.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip18);"> + <path d="M 299.0 -228.66666666666666 L 299.0 -244.66666666666666 L 315.0 -244.66666666666666 L 315.0 -228.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -236.66666666666666 M 311.0 -236.66666666666666 L 311 -236.667 M 311 -236.667 A 4 4 0 1 0 303 -236.667 A 4 4 0 1 0 311 -236.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-232.0"> + n_mmap + </text> + <path d="M 300 -218.66666666666669 L 314 -218.66666666666669" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <path d="M 302.0 -213.66666666666669 L 312.0 -223.66666666666669" style="stroke-width:0.7;"/> + <path d="M 312.0 -213.66666666666669 L 302.0 -223.66666666666669" style="stroke-width:0.7;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-214.0"> + rb_tree_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-200.0"> + mmap_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-186.0"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set + </text> + <path d="M 300 -172.66666666666669 L 314 -172.66666666666669" style="stroke:rgb(126,126,126);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip19);"> + <path d="M 299.85714285714283 -165.52380952380952 L 299.85714285714283 -179.8095238095238 L 314.14285714285717 -179.8095238095238 L 314.14285714285717 -165.52380952380952 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 299.85714285714283 -172.66666666666669 L 307.0 -179.8095238095238 L 314.14285714285717 -172.66666666666669 L 307.0 -165.52380952380952 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-168.0"> + rb_tree_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-154.0"> + mmap_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-140.0"> + lu_mtf_set + </text> + </g> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_large_s2p_hash_local.pdf b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_large_s2p_hash_local.pdf Binary files differnew file mode 100644 index 00000000000..58af87574b3 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_large_s2p_hash_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_large_s2p_hash_local.png b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_large_s2p_hash_local.png Binary files differnew file mode 100644 index 00000000000..c68826a8b92 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_large_s2p_hash_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_large_s2p_hash_local.svg b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_large_s2p_hash_local.svg new file mode 100644 index 00000000000..b3ad54d73c3 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_large_s2p_hash_local.svg @@ -0,0 +1,244 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -526 535.725 398" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 357.6 -301.1115789473684 M 361.6 -301.1115789473684 L 361.6 -301.112 M 361.6 -301.112 A 4 4 0 1 0 353.6 -301.112 A 4 4 0 1 0 361.6 -301.112 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 434.4 -331.01305263157894 M 438.4 -331.01305263157894 L 438.4 -331.013 M 438.4 -331.013 A 4 4 0 1 0 430.4 -331.013 A 4 4 0 1 0 438.4 -331.013 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 511.2 -370.2517894736842 M 515.2 -370.2517894736842 L 515.2 -370.252 M 515.2 -370.252 A 4 4 0 1 0 507.2 -370.252 A 4 4 0 1 0 515.2 -370.252 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 588.0 -392.48336842105266 M 592.0 -392.48336842105266 L 592 -392.483 M 592 -392.483 A 4 4 0 1 0 584 -392.483 A 4 4 0 1 0 592 -392.483 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 664.8 -451.73052631578946 M 668.8 -451.73052631578946 L 668.8 -451.731 M 668.8 -451.731 A 4 4 0 1 0 660.8 -451.731 A 4 4 0 1 0 668.8 -451.731 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 290 -134 L 290 -246 L 324 -246 L 324 -134 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 307.0 -190.66666666666669 M 311.0 -190.66666666666669 L 311 -190.667 M 311 -190.667 A 4 4 0 1 0 303 -190.667 A 4 4 0 1 0 311 -190.667 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -323.1578947368421 L 780 -323.1578947368421" style="stroke:rgb(179,179,179);stroke-width:0.4;stroke-dasharray:1,1;"/> + <path d="M 300 -346.3157894736842 L 780 -346.3157894736842" style="stroke:rgb(179,179,179);stroke-width:0.4;stroke-dasharray:1,1;"/> + <path d="M 300 -369.4736842105263 L 780 -369.4736842105263" style="stroke:rgb(179,179,179);stroke-width:0.4;stroke-dasharray:1,1;"/> + <path d="M 300 -392.63157894736844 L 780 -392.63157894736844" style="stroke:rgb(179,179,179);stroke-width:0.4;stroke-dasharray:1,1;"/> + <path d="M 300 -415.7894736842105 L 780 -415.7894736842105" style="stroke:rgb(179,179,179);stroke-width:0.4;stroke-dasharray:1,1;"/> + <path d="M 300 -438.9473684210526 L 780 -438.9473684210526" style="stroke:rgb(179,179,179);stroke-width:0.4;stroke-dasharray:1,1;"/> + <path d="M 300 -462.10526315789474 L 780 -462.10526315789474" style="stroke:rgb(179,179,179);stroke-width:0.4;stroke-dasharray:1,1;"/> + <path d="M 300 -485.2631578947369 L 780 -485.2631578947369" style="stroke:rgb(179,179,179);stroke-width:0.4;stroke-dasharray:1,1;"/> + <path d="M 300 -508.42105263157896 L 780 -508.42105263157896" style="stroke:rgb(179,179,179);stroke-width:0.4;stroke-dasharray:1,1;"/> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 1.00e+04 + </text> + <path d="M 300 -344.3001263157895 L 288 -344.3001263157895"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.801)" x="288.0" y="-339.8006130479837"> + 2.91e+04 + </text> + <path d="M 300 -388.60025263157894 L 288 -388.60025263157894"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-384.101)" x="288.0" y="-384.1007393637732"> + 4.83e+04 + </text> + <path d="M 300 -432.9003789473684 L 288 -432.9003789473684"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-428.401)" x="288.0" y="-428.4008656795626"> + 6.74e+04 + </text> + <path d="M 300 -477.2005052631579 L 288 -477.2005052631579"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-472.701)" x="288.0" y="-472.7009919953521"> + 8.65e+04 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Memory (bytes) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 357.6 -335.3111578947368 L 434.4 -364.95326315789475 L 511.2 -409.41642105263156 L 588.0 -424.2374736842105 L 664.8 -498.3427368421053" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <path d="M 352.6 -330.3111578947368 L 362.6 -340.3111578947368" style="stroke-width:0.7;"/> + <path d="M 362.6 -330.3111578947368 L 352.6 -340.3111578947368" style="stroke-width:0.7;"/> + <path d="M 429.4 -359.95326315789475 L 439.4 -369.95326315789475" style="stroke-width:0.7;"/> + <path d="M 439.4 -359.95326315789475 L 429.4 -369.95326315789475" style="stroke-width:0.7;"/> + <path d="M 506.2 -404.41642105263156 L 516.2 -414.41642105263156" style="stroke-width:0.7;"/> + <path d="M 516.2 -404.41642105263156 L 506.2 -414.41642105263156" style="stroke-width:0.7;"/> + <path d="M 583.0 -419.2374736842105 L 593.0 -429.2374736842105" style="stroke-width:0.7;"/> + <path d="M 593.0 -419.2374736842105 L 583.0 -429.2374736842105" style="stroke-width:0.7;"/> + <path d="M 659.8 -493.3427368421053 L 669.8 -503.3427368421053" style="stroke-width:0.7;"/> + <path d="M 669.8 -493.3427368421053 L 659.8 -503.3427368421053" style="stroke-width:0.7;"/> + </g> + <g style="clip-path:url(#clip3);"> + <path d="M 357.6 -301.1115789473684 L 434.4 -331.01305263157894 L 511.2 -370.2517894736842 L 588.0 -392.48336842105266 L 664.8 -451.73052631578946" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip4);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 349.6 -293.1115789473684 L 349.6 -309.1115789473684 L 365.6 -309.1115789473684 L 365.6 -293.1115789473684 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 357.6 -301.1115789473684 M 361.6 -301.1115789473684 L 361.6 -301.112 M 361.6 -301.112 A 4 4 0 1 0 353.6 -301.112 A 4 4 0 1 0 361.6 -301.112 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 426.4 -323.01305263157894 L 426.4 -339.01305263157894 L 442.4 -339.01305263157894 L 442.4 -323.01305263157894 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 434.4 -331.01305263157894 M 438.4 -331.01305263157894 L 438.4 -331.013 M 438.4 -331.013 A 4 4 0 1 0 430.4 -331.013 A 4 4 0 1 0 438.4 -331.013 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 503.2 -362.2517894736842 L 503.2 -378.2517894736842 L 519.2 -378.2517894736842 L 519.2 -362.2517894736842 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 511.2 -370.2517894736842 M 515.2 -370.2517894736842 L 515.2 -370.252 M 515.2 -370.252 A 4 4 0 1 0 507.2 -370.252 A 4 4 0 1 0 515.2 -370.252 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 580.0 -384.48336842105266 L 580.0 -400.48336842105266 L 596.0 -400.48336842105266 L 596.0 -384.48336842105266 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 588.0 -392.48336842105266 M 592.0 -392.48336842105266 L 592 -392.483 M 592 -392.483 A 4 4 0 1 0 584 -392.483 A 4 4 0 1 0 592 -392.483 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 656.8 -443.73052631578946 L 656.8 -459.73052631578946 L 672.8 -459.73052631578946 L 672.8 -443.73052631578946 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 664.8 -451.73052631578946 M 668.8 -451.73052631578946 L 668.8 -451.731 M 668.8 -451.731 A 4 4 0 1 0 660.8 -451.731 A 4 4 0 1 0 668.8 -451.731 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip10);"> + <path d="M 357.6 -301.9637894736842 L 434.4 -316.7848421052632 L 511.2 -331.6058947368421 L 588.0 -346.42694736842105 L 664.8 -361.248" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip11);"> + <path d="M 352.6 -296.9637894736842 L 362.6 -306.9637894736842" style="stroke-width:0.7;"/> + <path d="M 362.6 -296.9637894736842 L 352.6 -306.9637894736842" style="stroke-width:0.7;"/> + <path d="M 429.4 -311.7848421052632 L 439.4 -321.7848421052632" style="stroke-width:0.7;"/> + <path d="M 439.4 -311.7848421052632 L 429.4 -321.7848421052632" style="stroke-width:0.7;"/> + <path d="M 506.2 -326.6058947368421 L 516.2 -336.6058947368421" style="stroke-width:0.7;"/> + <path d="M 516.2 -326.6058947368421 L 506.2 -336.6058947368421" style="stroke-width:0.7;"/> + <path d="M 583.0 -341.42694736842105 L 593.0 -351.42694736842105" style="stroke-width:0.7;"/> + <path d="M 593.0 -341.42694736842105 L 583.0 -351.42694736842105" style="stroke-width:0.7;"/> + <path d="M 659.8 -356.248 L 669.8 -366.248" style="stroke-width:0.7;"/> + <path d="M 669.8 -356.248 L 659.8 -366.248" style="stroke-width:0.7;"/> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 290 -134 L 290 -246 L 324 -246 L 324 -134 Z" style="stroke:none;"/> + </g> + <path d="M 300 -236.66666666666666 L 314 -236.66666666666666" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <path d="M 302.0 -231.66666666666666 L 312.0 -241.66666666666666" style="stroke-width:0.7;"/> + <path d="M 312.0 -231.66666666666666 L 302.0 -241.66666666666666" style="stroke-width:0.7;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-232.0"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-218.0"> + mmap_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-204.0"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set + </text> + <path d="M 300 -190.66666666666669 L 314 -190.66666666666669" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip13);"> + <path d="M 299.0 -182.66666666666669 L 299.0 -198.66666666666669 L 315.0 -198.66666666666669 L 315.0 -182.66666666666669 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -190.66666666666669 M 311.0 -190.66666666666669 L 311 -190.667 M 311 -190.667 A 4 4 0 1 0 303 -190.667 A 4 4 0 1 0 311 -190.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-186.0"> + n_hash_mmap + </text> + <path d="M 300 -172.66666666666669 L 314 -172.66666666666669" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <path d="M 302.0 -167.66666666666669 L 312.0 -177.66666666666669" style="stroke-width:0.7;"/> + <path d="M 312.0 -167.66666666666669 L 302.0 -177.66666666666669" style="stroke-width:0.7;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-168.0"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-154.0"> + mmap_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-140.0"> + lu_mtf_set + </text> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_large_s2p_tree_local.pdf b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_large_s2p_tree_local.pdf Binary files differnew file mode 100644 index 00000000000..8dddc241f5a --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_large_s2p_tree_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_large_s2p_tree_local.png b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_large_s2p_tree_local.png Binary files differnew file mode 100644 index 00000000000..1991e4d4737 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_large_s2p_tree_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_large_s2p_tree_local.svg b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_large_s2p_tree_local.svg new file mode 100644 index 00000000000..0e2ecb709b5 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_large_s2p_tree_local.svg @@ -0,0 +1,286 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -526 535.725 398" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 357.6 -310.1894736842105 M 361.6 -310.1894736842105 L 361.6 -310.189 M 361.6 -310.189 A 4 4 0 1 0 353.6 -310.189 A 4 4 0 1 0 361.6 -310.189 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 434.4 -354.65263157894736 M 438.4 -354.65263157894736 L 438.4 -354.653 M 438.4 -354.653 A 4 4 0 1 0 430.4 -354.653 A 4 4 0 1 0 438.4 -354.653 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 511.2 -399.11578947368423 M 515.2 -399.11578947368423 L 515.2 -399.116 M 515.2 -399.116 A 4 4 0 1 0 507.2 -399.116 A 4 4 0 1 0 515.2 -399.116 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 588.0 -443.57894736842104 M 592.0 -443.57894736842104 L 592 -443.579 M 592 -443.579 A 4 4 0 1 0 584 -443.579 A 4 4 0 1 0 592 -443.579 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 664.8 -488.0421052631579 M 668.8 -488.0421052631579 L 668.8 -488.042 M 668.8 -488.042 A 4 4 0 1 0 660.8 -488.042 A 4 4 0 1 0 668.8 -488.042 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 350.45714285714286 -302.92715789473687 L 357.6 -310.070015037594 L 364.74285714285713 -302.92715789473687 L 357.6 -295.7843007518797 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 427.25714285714287 -317.7482105263158 L 434.4 -324.8910676691729 L 441.54285714285714 -317.7482105263158 L 434.4 -310.60535338345863 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 504.0571428571428 -332.56926315789474 L 511.2 -339.7121203007519 L 518.3428571428572 -332.56926315789474 L 511.2 -325.42640601503757 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 580.8571428571429 -347.3903157894737 L 588.0 -354.53317293233084 L 595.1428571428571 -347.3903157894737 L 588.0 -340.24745864661656 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 657.6571428571428 -362.2113684210526 L 664.8 -369.3542255639098 L 671.9428571428572 -362.2113684210526 L 664.8 -355.0685112781955 Z"/> + </clipPath> + <clipPath id="clip17"> + <path d="M 290 -134 L 290 -246 L 324 -246 L 324 -134 Z"/> + </clipPath> + <clipPath id="clip18"> + <path d="M 307.0 -190.66666666666669 M 311.0 -190.66666666666669 L 311 -190.667 M 311 -190.667 A 4 4 0 1 0 303 -190.667 A 4 4 0 1 0 311 -190.667 Z"/> + </clipPath> + <clipPath id="clip19"> + <path d="M 299.85714285714283 -172.66666666666669 L 307.0 -179.8095238095238 L 314.14285714285717 -172.66666666666669 L 307.0 -165.52380952380952 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -323.1578947368421 L 780 -323.1578947368421" style="stroke:rgb(179,179,179);stroke-width:0.4;stroke-dasharray:1,1;"/> + <path d="M 300 -346.3157894736842 L 780 -346.3157894736842" style="stroke:rgb(179,179,179);stroke-width:0.4;stroke-dasharray:1,1;"/> + <path d="M 300 -369.4736842105263 L 780 -369.4736842105263" style="stroke:rgb(179,179,179);stroke-width:0.4;stroke-dasharray:1,1;"/> + <path d="M 300 -392.63157894736844 L 780 -392.63157894736844" style="stroke:rgb(179,179,179);stroke-width:0.4;stroke-dasharray:1,1;"/> + <path d="M 300 -415.7894736842105 L 780 -415.7894736842105" style="stroke:rgb(179,179,179);stroke-width:0.4;stroke-dasharray:1,1;"/> + <path d="M 300 -438.9473684210526 L 780 -438.9473684210526" style="stroke:rgb(179,179,179);stroke-width:0.4;stroke-dasharray:1,1;"/> + <path d="M 300 -462.10526315789474 L 780 -462.10526315789474" style="stroke:rgb(179,179,179);stroke-width:0.4;stroke-dasharray:1,1;"/> + <path d="M 300 -485.2631578947369 L 780 -485.2631578947369" style="stroke:rgb(179,179,179);stroke-width:0.4;stroke-dasharray:1,1;"/> + <path d="M 300 -508.42105263157896 L 780 -508.42105263157896" style="stroke:rgb(179,179,179);stroke-width:0.4;stroke-dasharray:1,1;"/> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 1.00e+04 + </text> + <path d="M 300 -344.52985263157893 L 288 -344.52985263157893"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-340.03)" x="288.0" y="-340.0303393637732"> + 2.92e+04 + </text> + <path d="M 300 -389.05970526315787 L 288 -389.05970526315787"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-384.56)" x="288.0" y="-384.5601919953521"> + 4.85e+04 + </text> + <path d="M 300 -433.5895578947368 L 288 -433.5895578947368"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-429.09)" x="288.0" y="-429.09004462693105"> + 6.77e+04 + </text> + <path d="M 300 -478.1194105263158 L 288 -478.1194105263158"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-473.62)" x="288.0" y="-473.61989725851004"> + 8.69e+04 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Memory (bytes) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 357.6 -336.4597894736842 L 434.4 -366.1018947368421 L 511.2 -410.56505263157896 L 588.0 -425.3861052631579 L 664.8 -499.49136842105264" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <path d="M 352.6 -331.4597894736842 L 362.6 -341.4597894736842" style="stroke-width:0.7;"/> + <path d="M 362.6 -331.4597894736842 L 352.6 -341.4597894736842" style="stroke-width:0.7;"/> + <path d="M 429.4 -361.1018947368421 L 439.4 -371.1018947368421" style="stroke-width:0.7;"/> + <path d="M 439.4 -361.1018947368421 L 429.4 -371.1018947368421" style="stroke-width:0.7;"/> + <path d="M 506.2 -405.56505263157896 L 516.2 -415.56505263157896" style="stroke-width:0.7;"/> + <path d="M 516.2 -405.56505263157896 L 506.2 -415.56505263157896" style="stroke-width:0.7;"/> + <path d="M 583.0 -420.3861052631579 L 593.0 -430.3861052631579" style="stroke-width:0.7;"/> + <path d="M 593.0 -420.3861052631579 L 583.0 -430.3861052631579" style="stroke-width:0.7;"/> + <path d="M 659.8 -494.49136842105264 L 669.8 -504.49136842105264" style="stroke-width:0.7;"/> + <path d="M 669.8 -494.49136842105264 L 659.8 -504.49136842105264" style="stroke-width:0.7;"/> + </g> + <g style="clip-path:url(#clip3);"> + <path d="M 357.6 -310.1894736842105 L 434.4 -354.65263157894736 L 511.2 -399.11578947368423 L 588.0 -443.57894736842104 L 664.8 -488.0421052631579" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip4);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 349.6 -302.1894736842105 L 349.6 -318.1894736842105 L 365.6 -318.1894736842105 L 365.6 -302.1894736842105 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 357.6 -310.1894736842105 M 361.6 -310.1894736842105 L 361.6 -310.189 M 361.6 -310.189 A 4 4 0 1 0 353.6 -310.189 A 4 4 0 1 0 361.6 -310.189 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 426.4 -346.65263157894736 L 426.4 -362.65263157894736 L 442.4 -362.65263157894736 L 442.4 -346.65263157894736 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 434.4 -354.65263157894736 M 438.4 -354.65263157894736 L 438.4 -354.653 M 438.4 -354.653 A 4 4 0 1 0 430.4 -354.653 A 4 4 0 1 0 438.4 -354.653 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 503.2 -391.11578947368423 L 503.2 -407.11578947368423 L 519.2 -407.11578947368423 L 519.2 -391.11578947368423 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 511.2 -399.11578947368423 M 515.2 -399.11578947368423 L 515.2 -399.116 M 515.2 -399.116 A 4 4 0 1 0 507.2 -399.116 A 4 4 0 1 0 515.2 -399.116 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 580.0 -435.57894736842104 L 580.0 -451.57894736842104 L 596.0 -451.57894736842104 L 596.0 -435.57894736842104 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 588.0 -443.57894736842104 M 592.0 -443.57894736842104 L 592 -443.579 M 592 -443.579 A 4 4 0 1 0 584 -443.579 A 4 4 0 1 0 592 -443.579 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 656.8 -480.0421052631579 L 656.8 -496.0421052631579 L 672.8 -496.0421052631579 L 672.8 -480.0421052631579 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 664.8 -488.0421052631579 M 668.8 -488.0421052631579 L 668.8 -488.042 M 668.8 -488.042 A 4 4 0 1 0 660.8 -488.042 A 4 4 0 1 0 668.8 -488.042 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip10);"> + <path d="M 357.6 -302.92715789473687 L 434.4 -317.7482105263158 L 511.2 -332.56926315789474 L 588.0 -347.3903157894737 L 664.8 -362.2113684210526" style="stroke:rgb(126,126,126);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip11);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 350.45714285714286 -295.7843007518797 L 350.45714285714286 -310.070015037594 L 364.74285714285713 -310.070015037594 L 364.74285714285713 -295.7843007518797 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 350.45714285714286 -302.92715789473687 L 357.6 -310.070015037594 L 364.74285714285713 -302.92715789473687 L 357.6 -295.7843007518797 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip13);"> + <path d="M 427.25714285714287 -310.60535338345863 L 427.25714285714287 -324.8910676691729 L 441.54285714285714 -324.8910676691729 L 441.54285714285714 -310.60535338345863 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 427.25714285714287 -317.7482105263158 L 434.4 -324.8910676691729 L 441.54285714285714 -317.7482105263158 L 434.4 -310.60535338345863 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip14);"> + <path d="M 504.0571428571428 -325.42640601503757 L 504.0571428571428 -339.7121203007519 L 518.3428571428572 -339.7121203007519 L 518.3428571428572 -325.42640601503757 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 504.0571428571428 -332.56926315789474 L 511.2 -339.7121203007519 L 518.3428571428572 -332.56926315789474 L 511.2 -325.42640601503757 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip15);"> + <path d="M 580.8571428571429 -340.24745864661656 L 580.8571428571429 -354.53317293233084 L 595.1428571428571 -354.53317293233084 L 595.1428571428571 -340.24745864661656 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 580.8571428571429 -347.3903157894737 L 588.0 -354.53317293233084 L 595.1428571428571 -347.3903157894737 L 588.0 -340.24745864661656 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip16);"> + <path d="M 657.6571428571428 -355.0685112781955 L 657.6571428571428 -369.3542255639098 L 671.9428571428572 -369.3542255639098 L 671.9428571428572 -355.0685112781955 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 657.6571428571428 -362.2113684210526 L 664.8 -369.3542255639098 L 671.9428571428572 -362.2113684210526 L 664.8 -355.0685112781955 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip17);"> + <path d="M 290 -134 L 290 -246 L 324 -246 L 324 -134 Z" style="stroke:none;"/> + </g> + <path d="M 300 -236.66666666666666 L 314 -236.66666666666666" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <path d="M 302.0 -231.66666666666666 L 312.0 -241.66666666666666" style="stroke-width:0.7;"/> + <path d="M 312.0 -231.66666666666666 L 302.0 -241.66666666666666" style="stroke-width:0.7;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-232.0"> + rb_tree_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-218.0"> + mmap_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-204.0"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set + </text> + <path d="M 300 -190.66666666666669 L 314 -190.66666666666669" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip18);"> + <path d="M 299.0 -182.66666666666669 L 299.0 -198.66666666666669 L 315.0 -198.66666666666669 L 315.0 -182.66666666666669 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -190.66666666666669 M 311.0 -190.66666666666669 L 311 -190.667 M 311 -190.667 A 4 4 0 1 0 303 -190.667 A 4 4 0 1 0 311 -190.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-186.0"> + n_mmap + </text> + <path d="M 300 -172.66666666666669 L 314 -172.66666666666669" style="stroke:rgb(126,126,126);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip19);"> + <path d="M 299.85714285714283 -165.52380952380952 L 299.85714285714283 -179.8095238095238 L 314.14285714285717 -179.8095238095238 L 314.14285714285717 -165.52380952380952 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 299.85714285714283 -172.66666666666669 L 307.0 -179.8095238095238 L 314.14285714285717 -172.66666666666669 L 307.0 -165.52380952380952 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-168.0"> + rb_tree_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-154.0"> + mmap_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-140.0"> + lu_mtf_set + </text> + </g> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_small_s2p_hash_local.pdf b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_small_s2p_hash_local.pdf Binary files differnew file mode 100644 index 00000000000..c97c24be2cf --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_small_s2p_hash_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_small_s2p_hash_local.png b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_small_s2p_hash_local.png Binary files differnew file mode 100644 index 00000000000..09ab7bc873f --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_small_s2p_hash_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_small_s2p_hash_local.svg b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_small_s2p_hash_local.svg new file mode 100644 index 00000000000..cb47139a4ad --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_small_s2p_hash_local.svg @@ -0,0 +1,253 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -526 535.725 398" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 376.8 -311.3344 M 380.8 -311.3344 L 380.8 -311.334 M 380.8 -311.334 A 4 4 0 1 0 372.8 -311.334 A 4 4 0 1 0 380.8 -311.334 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 453.6 -322.69696 M 457.6 -322.69696 L 457.6 -322.697 M 457.6 -322.697 A 4 4 0 1 0 449.6 -322.697 A 4 4 0 1 0 457.6 -322.697 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 530.4 -337.60768 M 534.4 -337.60768 L 534.4 -337.608 M 534.4 -337.608 A 4 4 0 1 0 526.4 -337.608 A 4 4 0 1 0 534.4 -337.608 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 607.2 -346.05568 M 611.2 -346.05568 L 611.2 -346.056 M 611.2 -346.056 A 4 4 0 1 0 603.2 -346.056 A 4 4 0 1 0 611.2 -346.056 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 684.0 -368.5696 M 688.0 -368.5696 L 688 -368.57 M 688 -368.57 A 4 4 0 1 0 680 -368.57 A 4 4 0 1 0 688 -368.57 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 290 -134 L 290 -246 L 324 -246 L 324 -134 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 307.0 -144.66666666666666 M 311.0 -144.66666666666666 L 311 -144.667 M 311 -144.667 A 4 4 0 1 0 303 -144.667 A 4 4 0 1 0 311 -144.667 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -388.0 L 780 -388.0" style="stroke:rgb(179,179,179);stroke-width:0.4;stroke-dasharray:1,1;"/> + <path d="M 300 -476.0 L 780 -476.0" style="stroke:rgb(179,179,179);stroke-width:0.4;stroke-dasharray:1,1;"/> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -324.532992 L 288 -324.532992"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-320.033)" x="288.0" y="-320.0334787321942"> + 2.79e+04 + </text> + <path d="M 300 -349.065984 L 288 -349.065984"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-344.566)" x="288.0" y="-344.5664707321942"> + 5.58e+04 + </text> + <path d="M 300 -373.598976 L 288 -373.598976"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-369.099)" x="288.0" y="-369.09946273219424"> + 8.36e+04 + </text> + <path d="M 300 -398.13196800000003 L 288 -398.13196800000003"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-393.632)" x="288.0" y="-393.6324547321942"> + 1.12e+05 + </text> + <path d="M 300 -422.66496 L 288 -422.66496"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-418.165)" x="288.0" y="-418.1654467321942"> + 1.39e+05 + </text> + <path d="M 300 -447.197952 L 288 -447.197952"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-442.698)" x="288.0" y="-442.6984387321942"> + 1.67e+05 + </text> + <path d="M 300 -471.730944 L 288 -471.730944"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-467.231)" x="288.0" y="-467.2314307321942"> + 1.95e+05 + </text> + <path d="M 300 -496.26393599999994 L 288 -496.26393599999994"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-491.764)" x="288.0" y="-491.7644227321942"> + 2.23e+05 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Memory (bytes) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 376.8 -377.60896 L 453.6 -383.24096 L 530.4 -388.87296000000003 L 607.2 -417.03296 L 684.0 -422.66496" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <path d="M 371.8 -372.60896 L 381.8 -382.60896" style="stroke-width:0.7;"/> + <path d="M 381.8 -372.60896 L 371.8 -382.60896" style="stroke-width:0.7;"/> + <path d="M 448.6 -378.24096 L 458.6 -388.24096" style="stroke-width:0.7;"/> + <path d="M 458.6 -378.24096 L 448.6 -388.24096" style="stroke-width:0.7;"/> + <path d="M 525.4 -383.87296000000003 L 535.4 -393.87296000000003" style="stroke-width:0.7;"/> + <path d="M 535.4 -383.87296000000003 L 525.4 -393.87296000000003" style="stroke-width:0.7;"/> + <path d="M 602.2 -412.03296 L 612.2 -422.03296" style="stroke-width:0.7;"/> + <path d="M 612.2 -412.03296 L 602.2 -422.03296" style="stroke-width:0.7;"/> + <path d="M 679.0 -417.66496 L 689.0 -427.66496" style="stroke-width:0.7;"/> + <path d="M 689.0 -417.66496 L 679.0 -427.66496" style="stroke-width:0.7;"/> + </g> + <g style="clip-path:url(#clip3);"> + <path d="M 376.8 -326.92096 L 453.6 -332.55296 L 530.4 -338.18496 L 607.2 -343.81696 L 684.0 -349.44896" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip4);"> + <path d="M 371.8 -321.92096 L 381.8 -331.92096" style="stroke-width:0.7;"/> + <path d="M 381.8 -321.92096 L 371.8 -331.92096" style="stroke-width:0.7;"/> + <path d="M 448.6 -327.55296 L 458.6 -337.55296" style="stroke-width:0.7;"/> + <path d="M 458.6 -327.55296 L 448.6 -337.55296" style="stroke-width:0.7;"/> + <path d="M 525.4 -333.18496 L 535.4 -343.18496" style="stroke-width:0.7;"/> + <path d="M 535.4 -333.18496 L 525.4 -343.18496" style="stroke-width:0.7;"/> + <path d="M 602.2 -338.81696 L 612.2 -348.81696" style="stroke-width:0.7;"/> + <path d="M 612.2 -338.81696 L 602.2 -348.81696" style="stroke-width:0.7;"/> + <path d="M 679.0 -344.44896 L 689.0 -354.44896" style="stroke-width:0.7;"/> + <path d="M 689.0 -344.44896 L 679.0 -354.44896" style="stroke-width:0.7;"/> + </g> + <g style="clip-path:url(#clip5);"> + <path d="M 376.8 -311.3344 L 453.6 -322.69696 L 530.4 -337.60768 L 607.2 -346.05568 L 684.0 -368.5696" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip6);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 368.8 -303.3344 L 368.8 -319.3344 L 384.8 -319.3344 L 384.8 -303.3344 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -311.3344 M 380.8 -311.3344 L 380.8 -311.334 M 380.8 -311.334 A 4 4 0 1 0 372.8 -311.334 A 4 4 0 1 0 380.8 -311.334 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 445.6 -314.69696 L 445.6 -330.69696 L 461.6 -330.69696 L 461.6 -314.69696 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -322.69696 M 457.6 -322.69696 L 457.6 -322.697 M 457.6 -322.697 A 4 4 0 1 0 449.6 -322.697 A 4 4 0 1 0 457.6 -322.697 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 522.4 -329.60768 L 522.4 -345.60768 L 538.4 -345.60768 L 538.4 -329.60768 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -337.60768 M 534.4 -337.60768 L 534.4 -337.608 M 534.4 -337.608 A 4 4 0 1 0 526.4 -337.608 A 4 4 0 1 0 534.4 -337.608 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip10);"> + <path d="M 599.2 -338.05568 L 599.2 -354.05568 L 615.2 -354.05568 L 615.2 -338.05568 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -346.05568 M 611.2 -346.05568 L 611.2 -346.056 M 611.2 -346.056 A 4 4 0 1 0 603.2 -346.056 A 4 4 0 1 0 611.2 -346.056 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip11);"> + <path d="M 676.0 -360.5696 L 676.0 -376.5696 L 692.0 -376.5696 L 692.0 -360.5696 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -368.5696 M 688.0 -368.5696 L 688 -368.57 M 688 -368.57 A 4 4 0 1 0 680 -368.57 A 4 4 0 1 0 688 -368.57 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 290 -134 L 290 -246 L 324 -246 L 324 -134 Z" style="stroke:none;"/> + </g> + <path d="M 300 -236.66666666666666 L 314 -236.66666666666666" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <path d="M 302.0 -231.66666666666666 L 312.0 -241.66666666666666" style="stroke-width:0.7;"/> + <path d="M 312.0 -231.66666666666666 L 302.0 -241.66666666666666" style="stroke-width:0.7;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-232.0"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-218.0"> + mmap_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-204.0"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set + </text> + <path d="M 300 -190.66666666666669 L 314 -190.66666666666669" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <path d="M 302.0 -185.66666666666669 L 312.0 -195.66666666666669" style="stroke-width:0.7;"/> + <path d="M 312.0 -185.66666666666669 L 302.0 -195.66666666666669" style="stroke-width:0.7;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-186.0"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-172.0"> + mmap_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-158.0"> + lu_mtf_set + </text> + <path d="M 300 -144.66666666666666 L 314 -144.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip13);"> + <path d="M 299.0 -136.66666666666666 L 299.0 -152.66666666666666 L 315.0 -152.66666666666666 L 315.0 -136.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -144.66666666666666 M 311.0 -144.66666666666666 L 311 -144.667 M 311 -144.667 A 4 4 0 1 0 303 -144.667 A 4 4 0 1 0 311 -144.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-140.0"> + n_hash_mmap + </text> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_small_s2p_tree_local.pdf b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_small_s2p_tree_local.pdf Binary files differnew file mode 100644 index 00000000000..4caca02c65b --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_small_s2p_tree_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_small_s2p_tree_local.png b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_small_s2p_tree_local.png Binary files differnew file mode 100644 index 00000000000..666e4a2a40d --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_small_s2p_tree_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_small_s2p_tree_local.svg b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_small_s2p_tree_local.svg new file mode 100644 index 00000000000..f9a835ed852 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_small_s2p_tree_local.svg @@ -0,0 +1,295 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -526 535.725 398" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 376.8 -316.896 M 380.8 -316.896 L 380.8 -316.896 M 380.8 -316.896 A 4 4 0 1 0 372.8 -316.896 A 4 4 0 1 0 380.8 -316.896 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 453.6 -333.79200000000003 M 457.6 -333.79200000000003 L 457.6 -333.792 M 457.6 -333.792 A 4 4 0 1 0 449.6 -333.792 A 4 4 0 1 0 457.6 -333.792 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 530.4 -350.688 M 534.4 -350.688 L 534.4 -350.688 M 534.4 -350.688 A 4 4 0 1 0 526.4 -350.688 A 4 4 0 1 0 534.4 -350.688 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 607.2 -367.584 M 611.2 -367.584 L 611.2 -367.584 M 611.2 -367.584 A 4 4 0 1 0 603.2 -367.584 A 4 4 0 1 0 611.2 -367.584 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 684.0 -384.48 M 688.0 -384.48 L 688 -384.48 M 688 -384.48 A 4 4 0 1 0 680 -384.48 A 4 4 0 1 0 688 -384.48 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 369.65714285714284 -328.21632 L 376.8 -335.35917714285716 L 383.9428571428571 -328.21632 L 376.8 -321.0734628571429 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 446.45714285714286 -333.84832 L 453.6 -340.99117714285717 L 460.74285714285713 -333.84832 L 453.6 -326.70546285714283 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 523.2571428571429 -339.48032 L 530.4 -346.6231771428571 L 537.5428571428572 -339.48032 L 530.4 -332.33746285714284 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 600.0571428571428 -345.11232 L 607.2 -352.2551771428571 L 614.3428571428572 -345.11232 L 607.2 -337.96946285714284 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 676.8571428571429 -350.74432 L 684.0 -357.8871771428571 L 691.1428571428571 -350.74432 L 684.0 -343.60146285714285 Z"/> + </clipPath> + <clipPath id="clip17"> + <path d="M 290 -134 L 290 -246 L 324 -246 L 324 -134 Z"/> + </clipPath> + <clipPath id="clip18"> + <path d="M 307.0 -190.66666666666669 M 311.0 -190.66666666666669 L 311 -190.667 M 311 -190.667 A 4 4 0 1 0 303 -190.667 A 4 4 0 1 0 311 -190.667 Z"/> + </clipPath> + <clipPath id="clip19"> + <path d="M 299.85714285714283 -172.66666666666669 L 307.0 -179.8095238095238 L 314.14285714285717 -172.66666666666669 L 307.0 -165.52380952380952 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -388.0 L 780 -388.0" style="stroke:rgb(179,179,179);stroke-width:0.4;stroke-dasharray:1,1;"/> + <path d="M 300 -476.0 L 780 -476.0" style="stroke:rgb(179,179,179);stroke-width:0.4;stroke-dasharray:1,1;"/> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -324.806144 L 288 -324.806144"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-320.307)" x="288.0" y="-320.3066307321942"> + 2.82e+04 + </text> + <path d="M 300 -349.612288 L 288 -349.612288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-345.113)" x="288.0" y="-345.1127747321942"> + 5.64e+04 + </text> + <path d="M 300 -374.418432 L 288 -374.418432"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-369.919)" x="288.0" y="-369.91891873219424"> + 8.46e+04 + </text> + <path d="M 300 -399.224576 L 288 -399.224576"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-394.725)" x="288.0" y="-394.7250627321942"> + 1.13e+05 + </text> + <path d="M 300 -424.03072 L 288 -424.03072"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-419.531)" x="288.0" y="-419.5312067321942"> + 1.41e+05 + </text> + <path d="M 300 -448.836864 L 288 -448.836864"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-444.337)" x="288.0" y="-444.3373507321942"> + 1.69e+05 + </text> + <path d="M 300 -473.643008 L 288 -473.643008"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-469.143)" x="288.0" y="-469.1434947321942"> + 1.97e+05 + </text> + <path d="M 300 -498.44915199999997 L 288 -498.44915199999997"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-493.95)" x="288.0" y="-493.9496387321942"> + 2.26e+05 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Memory (bytes) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 376.8 -378.97472 L 453.6 -384.60672 L 530.4 -390.23872 L 607.2 -418.39872 L 684.0 -424.03072" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <path d="M 371.8 -373.97472 L 381.8 -383.97472" style="stroke-width:0.7;"/> + <path d="M 381.8 -373.97472 L 371.8 -383.97472" style="stroke-width:0.7;"/> + <path d="M 448.6 -379.60672 L 458.6 -389.60672" style="stroke-width:0.7;"/> + <path d="M 458.6 -379.60672 L 448.6 -389.60672" style="stroke-width:0.7;"/> + <path d="M 525.4 -385.23872 L 535.4 -395.23872" style="stroke-width:0.7;"/> + <path d="M 535.4 -385.23872 L 525.4 -395.23872" style="stroke-width:0.7;"/> + <path d="M 602.2 -413.39872 L 612.2 -423.39872" style="stroke-width:0.7;"/> + <path d="M 612.2 -413.39872 L 602.2 -423.39872" style="stroke-width:0.7;"/> + <path d="M 679.0 -419.03072 L 689.0 -429.03072" style="stroke-width:0.7;"/> + <path d="M 689.0 -419.03072 L 679.0 -429.03072" style="stroke-width:0.7;"/> + </g> + <g style="clip-path:url(#clip3);"> + <path d="M 376.8 -316.896 L 453.6 -333.79200000000003 L 530.4 -350.688 L 607.2 -367.584 L 684.0 -384.48" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip4);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 368.8 -308.896 L 368.8 -324.896 L 384.8 -324.896 L 384.8 -308.896 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -316.896 M 380.8 -316.896 L 380.8 -316.896 M 380.8 -316.896 A 4 4 0 1 0 372.8 -316.896 A 4 4 0 1 0 380.8 -316.896 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 445.6 -325.79200000000003 L 445.6 -341.79200000000003 L 461.6 -341.79200000000003 L 461.6 -325.79200000000003 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -333.79200000000003 M 457.6 -333.79200000000003 L 457.6 -333.792 M 457.6 -333.792 A 4 4 0 1 0 449.6 -333.792 A 4 4 0 1 0 457.6 -333.792 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 522.4 -342.688 L 522.4 -358.688 L 538.4 -358.688 L 538.4 -342.688 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -350.688 M 534.4 -350.688 L 534.4 -350.688 M 534.4 -350.688 A 4 4 0 1 0 526.4 -350.688 A 4 4 0 1 0 534.4 -350.688 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 599.2 -359.584 L 599.2 -375.584 L 615.2 -375.584 L 615.2 -359.584 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -367.584 M 611.2 -367.584 L 611.2 -367.584 M 611.2 -367.584 A 4 4 0 1 0 603.2 -367.584 A 4 4 0 1 0 611.2 -367.584 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 676.0 -376.48 L 676.0 -392.48 L 692.0 -392.48 L 692.0 -376.48 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -384.48 M 688.0 -384.48 L 688 -384.48 M 688 -384.48 A 4 4 0 1 0 680 -384.48 A 4 4 0 1 0 688 -384.48 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip10);"> + <path d="M 376.8 -328.21632 L 453.6 -333.84832 L 530.4 -339.48032 L 607.2 -345.11232 L 684.0 -350.74432" style="stroke:rgb(126,126,126);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip11);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 369.65714285714284 -321.0734628571429 L 369.65714285714284 -335.35917714285716 L 383.9428571428571 -335.35917714285716 L 383.9428571428571 -321.0734628571429 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 369.65714285714284 -328.21632 L 376.8 -335.35917714285716 L 383.9428571428571 -328.21632 L 376.8 -321.0734628571429 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip13);"> + <path d="M 446.45714285714286 -326.70546285714283 L 446.45714285714286 -340.99117714285717 L 460.74285714285713 -340.99117714285717 L 460.74285714285713 -326.70546285714283 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 446.45714285714286 -333.84832 L 453.6 -340.99117714285717 L 460.74285714285713 -333.84832 L 453.6 -326.70546285714283 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip14);"> + <path d="M 523.2571428571429 -332.33746285714284 L 523.2571428571429 -346.6231771428571 L 537.5428571428572 -346.6231771428571 L 537.5428571428572 -332.33746285714284 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 523.2571428571429 -339.48032 L 530.4 -346.6231771428571 L 537.5428571428572 -339.48032 L 530.4 -332.33746285714284 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip15);"> + <path d="M 600.0571428571428 -337.96946285714284 L 600.0571428571428 -352.2551771428571 L 614.3428571428572 -352.2551771428571 L 614.3428571428572 -337.96946285714284 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.0571428571428 -345.11232 L 607.2 -352.2551771428571 L 614.3428571428572 -345.11232 L 607.2 -337.96946285714284 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip16);"> + <path d="M 676.8571428571429 -343.60146285714285 L 676.8571428571429 -357.8871771428571 L 691.1428571428571 -357.8871771428571 L 691.1428571428571 -343.60146285714285 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 676.8571428571429 -350.74432 L 684.0 -357.8871771428571 L 691.1428571428571 -350.74432 L 684.0 -343.60146285714285 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip17);"> + <path d="M 290 -134 L 290 -246 L 324 -246 L 324 -134 Z" style="stroke:none;"/> + </g> + <path d="M 300 -236.66666666666666 L 314 -236.66666666666666" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <path d="M 302.0 -231.66666666666666 L 312.0 -241.66666666666666" style="stroke-width:0.7;"/> + <path d="M 312.0 -231.66666666666666 L 302.0 -241.66666666666666" style="stroke-width:0.7;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-232.0"> + rb_tree_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-218.0"> + mmap_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-204.0"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set + </text> + <path d="M 300 -190.66666666666669 L 314 -190.66666666666669" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip18);"> + <path d="M 299.0 -182.66666666666669 L 299.0 -198.66666666666669 L 315.0 -198.66666666666669 L 315.0 -182.66666666666669 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -190.66666666666669 M 311.0 -190.66666666666669 L 311 -190.667 M 311 -190.667 A 4 4 0 1 0 303 -190.667 A 4 4 0 1 0 311 -190.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-186.0"> + n_mmap + </text> + <path d="M 300 -172.66666666666669 L 314 -172.66666666666669" style="stroke:rgb(126,126,126);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip19);"> + <path d="M 299.85714285714283 -165.52380952380952 L 299.85714285714283 -179.8095238095238 L 314.14285714285717 -179.8095238095238 L 314.14285714285717 -165.52380952380952 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 299.85714285714283 -172.66666666666669 L 307.0 -179.8095238095238 L 314.14285714285717 -172.66666666666669 L 307.0 -165.52380952380952 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-168.0"> + rb_tree_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-154.0"> + mmap_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-140.0"> + lu_mtf_set + </text> + </g> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_large_s2p_hash_local.pdf b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_large_s2p_hash_local.pdf Binary files differnew file mode 100644 index 00000000000..17b3400afd1 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_large_s2p_hash_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_large_s2p_hash_local.png b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_large_s2p_hash_local.png Binary files differnew file mode 100644 index 00000000000..77b902c9e48 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_large_s2p_hash_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_large_s2p_hash_local.svg b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_large_s2p_hash_local.svg new file mode 100644 index 00000000000..ede137c86d3 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_large_s2p_hash_local.svg @@ -0,0 +1,239 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 416.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 357.6 -419.1525365323605 M 361.6 -419.1525365323605 L 361.6 -419.153 M 361.6 -419.153 A 4 4 0 1 0 353.6 -419.153 A 4 4 0 1 0 361.6 -419.153 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 434.4 -444.59385387974703 M 438.4 -444.59385387974703 L 438.4 -444.594 M 438.4 -444.594 A 4 4 0 1 0 430.4 -444.594 A 4 4 0 1 0 438.4 -444.594 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 511.2 -467.2453646803691 M 515.2 -467.2453646803691 L 515.2 -467.245 M 515.2 -467.245 A 4 4 0 1 0 507.2 -467.245 A 4 4 0 1 0 515.2 -467.245 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 588.0 -489.8104521260099 M 592.0 -489.8104521260099 L 592 -489.81 M 592 -489.81 A 4 4 0 1 0 584 -489.81 A 4 4 0 1 0 592 -489.81 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 664.8 -520.0 M 668.8 -520.0 L 668.8 -520 M 668.8 -520 A 4 4 0 1 0 660.8 -520 A 4 4 0 1 0 668.8 -520 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 290 -134 L 290 -246 L 324 -246 L 324 -134 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 307.0 -236.66666666666666 M 311.0 -236.66666666666666 L 311 -236.667 M 311 -236.667 A 4 4 0 1 0 303 -236.667 A 4 4 0 1 0 311 -236.667 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 8.71e-08 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.5004867321942"> + 1.74e-07 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.5004867321942"> + 2.61e-07 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.5004867321942"> + 3.48e-07 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321942"> + 4.35e-07 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 357.6 -419.1525365323605 L 434.4 -444.59385387974703 L 511.2 -467.2453646803691 L 588.0 -489.8104521260099 L 664.8 -520.0" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip3);"> + <path d="M 349.6 -411.1525365323605 L 349.6 -427.1525365323605 L 365.6 -427.1525365323605 L 365.6 -411.1525365323605 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 357.6 -419.1525365323605 M 361.6 -419.1525365323605 L 361.6 -419.153 M 361.6 -419.153 A 4 4 0 1 0 353.6 -419.153 A 4 4 0 1 0 361.6 -419.153 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip4);"> + <path d="M 426.4 -436.59385387974703 L 426.4 -452.59385387974703 L 442.4 -452.59385387974703 L 442.4 -436.59385387974703 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 434.4 -444.59385387974703 M 438.4 -444.59385387974703 L 438.4 -444.594 M 438.4 -444.594 A 4 4 0 1 0 430.4 -444.594 A 4 4 0 1 0 438.4 -444.594 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 503.2 -459.2453646803691 L 503.2 -475.2453646803691 L 519.2 -475.2453646803691 L 519.2 -459.2453646803691 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 511.2 -467.2453646803691 M 515.2 -467.2453646803691 L 515.2 -467.245 M 515.2 -467.245 A 4 4 0 1 0 507.2 -467.245 A 4 4 0 1 0 515.2 -467.245 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 580.0 -481.8104521260099 L 580.0 -497.8104521260099 L 596.0 -497.8104521260099 L 596.0 -481.8104521260099 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 588.0 -489.8104521260099 M 592.0 -489.8104521260099 L 592 -489.81 M 592 -489.81 A 4 4 0 1 0 584 -489.81 A 4 4 0 1 0 592 -489.81 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 656.8 -512.0 L 656.8 -528.0 L 672.8 -528.0 L 672.8 -512.0 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 664.8 -520.0 M 668.8 -520.0 L 668.8 -520 M 668.8 -520 A 4 4 0 1 0 660.8 -520 A 4 4 0 1 0 668.8 -520 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip8);"> + <path d="M 357.6 -464.55815428016143 L 434.4 -441.7671531522011 L 511.2 -414.2981720610431 L 588.0 -400.50126464797756 L 664.8 -406.1314177151797" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip9);"> + <path d="M 352.6 -459.55815428016143 L 362.6 -469.55815428016143" style="stroke-width:0.7;"/> + <path d="M 362.6 -459.55815428016143 L 352.6 -469.55815428016143" style="stroke-width:0.7;"/> + <path d="M 429.4 -436.7671531522011 L 439.4 -446.7671531522011" style="stroke-width:0.7;"/> + <path d="M 439.4 -436.7671531522011 L 429.4 -446.7671531522011" style="stroke-width:0.7;"/> + <path d="M 506.2 -409.2981720610431 L 516.2 -419.2981720610431" style="stroke-width:0.7;"/> + <path d="M 516.2 -409.2981720610431 L 506.2 -419.2981720610431" style="stroke-width:0.7;"/> + <path d="M 583.0 -395.50126464797756 L 593.0 -405.50126464797756" style="stroke-width:0.7;"/> + <path d="M 593.0 -395.50126464797756 L 583.0 -405.50126464797756" style="stroke-width:0.7;"/> + <path d="M 659.8 -401.1314177151797 L 669.8 -411.1314177151797" style="stroke-width:0.7;"/> + <path d="M 669.8 -401.1314177151797 L 659.8 -411.1314177151797" style="stroke-width:0.7;"/> + </g> + <g style="clip-path:url(#clip10);"> + <path d="M 357.6 -368.10817392183304 L 434.4 -355.5151286816648 L 511.2 -353.79171557940634 L 588.0 -354.34411749165514 L 664.8 -356.1044247746951" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip11);"> + <path d="M 352.6 -363.10817392183304 L 362.6 -373.10817392183304" style="stroke-width:0.7;"/> + <path d="M 362.6 -363.10817392183304 L 352.6 -373.10817392183304" style="stroke-width:0.7;"/> + <path d="M 429.4 -350.5151286816648 L 439.4 -360.5151286816648" style="stroke-width:0.7;"/> + <path d="M 439.4 -350.5151286816648 L 429.4 -360.5151286816648" style="stroke-width:0.7;"/> + <path d="M 506.2 -348.79171557940634 L 516.2 -358.79171557940634" style="stroke-width:0.7;"/> + <path d="M 516.2 -348.79171557940634 L 506.2 -358.79171557940634" style="stroke-width:0.7;"/> + <path d="M 583.0 -349.34411749165514 L 593.0 -359.34411749165514" style="stroke-width:0.7;"/> + <path d="M 593.0 -349.34411749165514 L 583.0 -359.34411749165514" style="stroke-width:0.7;"/> + <path d="M 659.8 -351.1044247746951 L 669.8 -361.1044247746951" style="stroke-width:0.7;"/> + <path d="M 669.8 -351.1044247746951 L 659.8 -361.1044247746951" style="stroke-width:0.7;"/> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 290 -134 L 290 -246 L 324 -246 L 324 -134 Z" style="stroke:none;"/> + </g> + <path d="M 300 -236.66666666666666 L 314 -236.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip13);"> + <path d="M 299.0 -228.66666666666666 L 299.0 -244.66666666666666 L 315.0 -244.66666666666666 L 315.0 -228.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -236.66666666666666 M 311.0 -236.66666666666666 L 311 -236.667 M 311 -236.667 A 4 4 0 1 0 303 -236.667 A 4 4 0 1 0 311 -236.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-232.0"> + n_hash_mmap + </text> + <path d="M 300 -218.66666666666669 L 314 -218.66666666666669" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <path d="M 302.0 -213.66666666666669 L 312.0 -223.66666666666669" style="stroke-width:0.7;"/> + <path d="M 312.0 -213.66666666666669 L 302.0 -223.66666666666669" style="stroke-width:0.7;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-214.0"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-200.0"> + mmap_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-186.0"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set + </text> + <path d="M 300 -172.66666666666669 L 314 -172.66666666666669" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <path d="M 302.0 -167.66666666666669 L 312.0 -177.66666666666669" style="stroke-width:0.7;"/> + <path d="M 312.0 -167.66666666666669 L 302.0 -177.66666666666669" style="stroke-width:0.7;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-168.0"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-154.0"> + mmap_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-140.0"> + lu_mtf_set + </text> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_large_s2p_tree_local.pdf b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_large_s2p_tree_local.pdf Binary files differnew file mode 100644 index 00000000000..cbacc907d5f --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_large_s2p_tree_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_large_s2p_tree_local.png b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_large_s2p_tree_local.png Binary files differnew file mode 100644 index 00000000000..42c7afa84a9 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_large_s2p_tree_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_large_s2p_tree_local.svg b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_large_s2p_tree_local.svg new file mode 100644 index 00000000000..c3060808d3e --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_large_s2p_tree_local.svg @@ -0,0 +1,281 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 416.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 357.6 -430.69209183524026 M 361.6 -430.69209183524026 L 361.6 -430.692 M 361.6 -430.692 A 4 4 0 1 0 353.6 -430.692 A 4 4 0 1 0 361.6 -430.692 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 434.4 -462.4399257163278 M 438.4 -462.4399257163278 L 438.4 -462.44 M 438.4 -462.44 A 4 4 0 1 0 430.4 -462.44 A 4 4 0 1 0 438.4 -462.44 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 511.2 -482.7841614088121 M 515.2 -482.7841614088121 L 515.2 -482.784 M 515.2 -482.784 A 4 4 0 1 0 507.2 -482.784 A 4 4 0 1 0 515.2 -482.784 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 588.0 -500.8572148309578 M 592.0 -500.8572148309578 L 592 -500.857 M 592 -500.857 A 4 4 0 1 0 584 -500.857 A 4 4 0 1 0 592 -500.857 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 664.8 -520.0 M 668.8 -520.0 L 668.8 -520 M 668.8 -520 A 4 4 0 1 0 660.8 -520 A 4 4 0 1 0 668.8 -520 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 350.45714285714286 -365.1721822879137 L 357.6 -372.3150394307708 L 364.74285714285713 -365.1721822879137 L 357.6 -358.02932514505653 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 427.25714285714287 -363.7732824829962 L 434.4 -370.9161396258533 L 441.54285714285714 -363.7732824829962 L 434.4 -356.630425340139 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 504.0571428571428 -366.8693181485322 L 511.2 -374.0121752913893 L 518.3428571428572 -366.8693181485322 L 511.2 -359.72646100567505 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 580.8571428571429 -368.9134079685056 L 588.0 -376.05626511136273 L 595.1428571428571 -368.9134079685056 L 588.0 -361.77055082564846 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 657.6571428571428 -372.0042883003216 L 664.8 -379.1471454431788 L 671.9428571428572 -372.0042883003216 L 664.8 -364.8614311574645 Z"/> + </clipPath> + <clipPath id="clip17"> + <path d="M 290 -134 L 290 -246 L 324 -246 L 324 -134 Z"/> + </clipPath> + <clipPath id="clip18"> + <path d="M 307.0 -236.66666666666666 M 311.0 -236.66666666666666 L 311 -236.667 M 311 -236.667 A 4 4 0 1 0 303 -236.667 A 4 4 0 1 0 311 -236.667 Z"/> + </clipPath> + <clipPath id="clip19"> + <path d="M 299.85714285714283 -172.66666666666669 L 307.0 -179.8095238095238 L 314.14285714285717 -172.66666666666669 L 307.0 -165.52380952380952 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.5004867321942"> + 1.71e-07 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.5004867321942"> + 3.41e-07 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.5004867321942"> + 5.12e-07 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.5004867321942"> + 6.83e-07 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321942"> + 8.53e-07 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 357.6 -430.69209183524026 L 434.4 -462.4399257163278 L 511.2 -482.7841614088121 L 588.0 -500.8572148309578 L 664.8 -520.0" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip3);"> + <path d="M 349.6 -422.69209183524026 L 349.6 -438.69209183524026 L 365.6 -438.69209183524026 L 365.6 -422.69209183524026 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 357.6 -430.69209183524026 M 361.6 -430.69209183524026 L 361.6 -430.692 M 361.6 -430.692 A 4 4 0 1 0 353.6 -430.692 A 4 4 0 1 0 361.6 -430.692 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip4);"> + <path d="M 426.4 -454.4399257163278 L 426.4 -470.4399257163278 L 442.4 -470.4399257163278 L 442.4 -454.4399257163278 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 434.4 -462.4399257163278 M 438.4 -462.4399257163278 L 438.4 -462.44 M 438.4 -462.44 A 4 4 0 1 0 430.4 -462.44 A 4 4 0 1 0 438.4 -462.44 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 503.2 -474.7841614088121 L 503.2 -490.7841614088121 L 519.2 -490.7841614088121 L 519.2 -474.7841614088121 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 511.2 -482.7841614088121 M 515.2 -482.7841614088121 L 515.2 -482.784 M 515.2 -482.784 A 4 4 0 1 0 507.2 -482.784 A 4 4 0 1 0 515.2 -482.784 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 580.0 -492.8572148309578 L 580.0 -508.8572148309578 L 596.0 -508.8572148309578 L 596.0 -492.8572148309578 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 588.0 -500.8572148309578 M 592.0 -500.8572148309578 L 592 -500.857 M 592 -500.857 A 4 4 0 1 0 584 -500.857 A 4 4 0 1 0 592 -500.857 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 656.8 -512.0 L 656.8 -528.0 L 672.8 -528.0 L 672.8 -512.0 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 664.8 -520.0 M 668.8 -520.0 L 668.8 -520 M 668.8 -520 A 4 4 0 1 0 660.8 -520 A 4 4 0 1 0 668.8 -520 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip8);"> + <path d="M 357.6 -453.98260074869506 L 434.4 -455.4425912581944 L 511.2 -458.8961493172112 L 588.0 -454.7667270075045 L 664.8 -459.6078431372549" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip9);"> + <path d="M 352.6 -448.98260074869506 L 362.6 -458.98260074869506" style="stroke-width:0.7;"/> + <path d="M 362.6 -448.98260074869506 L 352.6 -458.98260074869506" style="stroke-width:0.7;"/> + <path d="M 429.4 -450.4425912581944 L 439.4 -460.4425912581944" style="stroke-width:0.7;"/> + <path d="M 439.4 -450.4425912581944 L 429.4 -460.4425912581944" style="stroke-width:0.7;"/> + <path d="M 506.2 -453.8961493172112 L 516.2 -463.8961493172112" style="stroke-width:0.7;"/> + <path d="M 516.2 -453.8961493172112 L 506.2 -463.8961493172112" style="stroke-width:0.7;"/> + <path d="M 583.0 -449.7667270075045 L 593.0 -459.7667270075045" style="stroke-width:0.7;"/> + <path d="M 593.0 -449.7667270075045 L 583.0 -459.7667270075045" style="stroke-width:0.7;"/> + <path d="M 659.8 -454.6078431372549 L 669.8 -464.6078431372549" style="stroke-width:0.7;"/> + <path d="M 669.8 -454.6078431372549 L 659.8 -464.6078431372549" style="stroke-width:0.7;"/> + </g> + <g style="clip-path:url(#clip10);"> + <path d="M 357.6 -365.1721822879137 L 434.4 -363.7732824829962 L 511.2 -366.8693181485322 L 588.0 -368.9134079685056 L 664.8 -372.0042883003216" style="stroke:rgb(126,126,126);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip11);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 350.45714285714286 -358.02932514505653 L 350.45714285714286 -372.3150394307708 L 364.74285714285713 -372.3150394307708 L 364.74285714285713 -358.02932514505653 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 350.45714285714286 -365.1721822879137 L 357.6 -372.3150394307708 L 364.74285714285713 -365.1721822879137 L 357.6 -358.02932514505653 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip13);"> + <path d="M 427.25714285714287 -356.630425340139 L 427.25714285714287 -370.9161396258533 L 441.54285714285714 -370.9161396258533 L 441.54285714285714 -356.630425340139 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 427.25714285714287 -363.7732824829962 L 434.4 -370.9161396258533 L 441.54285714285714 -363.7732824829962 L 434.4 -356.630425340139 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip14);"> + <path d="M 504.0571428571428 -359.72646100567505 L 504.0571428571428 -374.0121752913893 L 518.3428571428572 -374.0121752913893 L 518.3428571428572 -359.72646100567505 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 504.0571428571428 -366.8693181485322 L 511.2 -374.0121752913893 L 518.3428571428572 -366.8693181485322 L 511.2 -359.72646100567505 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip15);"> + <path d="M 580.8571428571429 -361.77055082564846 L 580.8571428571429 -376.05626511136273 L 595.1428571428571 -376.05626511136273 L 595.1428571428571 -361.77055082564846 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 580.8571428571429 -368.9134079685056 L 588.0 -376.05626511136273 L 595.1428571428571 -368.9134079685056 L 588.0 -361.77055082564846 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip16);"> + <path d="M 657.6571428571428 -364.8614311574645 L 657.6571428571428 -379.1471454431788 L 671.9428571428572 -379.1471454431788 L 671.9428571428572 -364.8614311574645 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 657.6571428571428 -372.0042883003216 L 664.8 -379.1471454431788 L 671.9428571428572 -372.0042883003216 L 664.8 -364.8614311574645 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip17);"> + <path d="M 290 -134 L 290 -246 L 324 -246 L 324 -134 Z" style="stroke:none;"/> + </g> + <path d="M 300 -236.66666666666666 L 314 -236.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip18);"> + <path d="M 299.0 -228.66666666666666 L 299.0 -244.66666666666666 L 315.0 -244.66666666666666 L 315.0 -228.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -236.66666666666666 M 311.0 -236.66666666666666 L 311 -236.667 M 311 -236.667 A 4 4 0 1 0 303 -236.667 A 4 4 0 1 0 311 -236.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-232.0"> + n_mmap + </text> + <path d="M 300 -218.66666666666669 L 314 -218.66666666666669" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <path d="M 302.0 -213.66666666666669 L 312.0 -223.66666666666669" style="stroke-width:0.7;"/> + <path d="M 312.0 -213.66666666666669 L 302.0 -223.66666666666669" style="stroke-width:0.7;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-214.0"> + rb_tree_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-200.0"> + mmap_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-186.0"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set + </text> + <path d="M 300 -172.66666666666669 L 314 -172.66666666666669" style="stroke:rgb(126,126,126);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip19);"> + <path d="M 299.85714285714283 -165.52380952380952 L 299.85714285714283 -179.8095238095238 L 314.14285714285717 -179.8095238095238 L 314.14285714285717 -165.52380952380952 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 299.85714285714283 -172.66666666666669 L 307.0 -179.8095238095238 L 314.14285714285717 -172.66666666666669 L 307.0 -165.52380952380952 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-168.0"> + rb_tree_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-154.0"> + mmap_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-140.0"> + lu_mtf_set + </text> + </g> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_small_s2p_hash_local.pdf b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_small_s2p_hash_local.pdf Binary files differnew file mode 100644 index 00000000000..941c80b3807 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_small_s2p_hash_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_small_s2p_hash_local.png b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_small_s2p_hash_local.png Binary files differnew file mode 100644 index 00000000000..c30ecbe1657 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_small_s2p_hash_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_small_s2p_hash_local.svg b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_small_s2p_hash_local.svg new file mode 100644 index 00000000000..4602fc1a2fd --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_small_s2p_hash_local.svg @@ -0,0 +1,239 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 416.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 376.8 -358.99285188439524 M 380.8 -358.99285188439524 L 380.8 -358.993 M 380.8 -358.993 A 4 4 0 1 0 372.8 -358.993 A 4 4 0 1 0 380.8 -358.993 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 453.6 -370.0192357928234 M 457.6 -370.0192357928234 L 457.6 -370.019 M 457.6 -370.019 A 4 4 0 1 0 449.6 -370.019 A 4 4 0 1 0 457.6 -370.019 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 530.4 -379.0749899071458 M 534.4 -379.0749899071458 L 534.4 -379.075 M 534.4 -379.075 A 4 4 0 1 0 526.4 -379.075 A 4 4 0 1 0 534.4 -379.075 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 607.2 -378.7690279987651 M 611.2 -378.7690279987651 L 611.2 -378.769 M 611.2 -378.769 A 4 4 0 1 0 603.2 -378.769 A 4 4 0 1 0 611.2 -378.769 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 684.0 -386.9343252036382 M 688.0 -386.9343252036382 L 688 -386.934 M 688 -386.934 A 4 4 0 1 0 680 -386.934 A 4 4 0 1 0 688 -386.934 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 290 -134 L 290 -246 L 324 -246 L 324 -134 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 307.0 -190.66666666666669 M 311.0 -190.66666666666669 L 311 -190.667 M 311 -190.667 A 4 4 0 1 0 303 -190.667 A 4 4 0 1 0 311 -190.667 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 1.35e-07 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.5004867321942"> + 2.69e-07 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.5004867321942"> + 4.04e-07 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.5004867321942"> + 5.39e-07 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321943"> + 6.74e-07 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 376.8 -520.0 L 453.6 -427.27786815170157 L 530.4 -398.3398145289606 L 607.2 -407.08079032985825 L 684.0 -395.4777482248451" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <path d="M 371.8 -515.0 L 381.8 -525.0" style="stroke-width:0.7;"/> + <path d="M 381.8 -515.0 L 371.8 -525.0" style="stroke-width:0.7;"/> + <path d="M 448.6 -422.27786815170157 L 458.6 -432.27786815170157" style="stroke-width:0.7;"/> + <path d="M 458.6 -422.27786815170157 L 448.6 -432.27786815170157" style="stroke-width:0.7;"/> + <path d="M 525.4 -393.3398145289606 L 535.4 -403.3398145289606" style="stroke-width:0.7;"/> + <path d="M 535.4 -393.3398145289606 L 525.4 -403.3398145289606" style="stroke-width:0.7;"/> + <path d="M 602.2 -402.08079032985825 L 612.2 -412.08079032985825" style="stroke-width:0.7;"/> + <path d="M 612.2 -402.08079032985825 L 602.2 -412.08079032985825" style="stroke-width:0.7;"/> + <path d="M 679.0 -390.4777482248451 L 689.0 -400.4777482248451" style="stroke-width:0.7;"/> + <path d="M 689.0 -390.4777482248451 L 679.0 -400.4777482248451" style="stroke-width:0.7;"/> + </g> + <g style="clip-path:url(#clip3);"> + <path d="M 376.8 -358.99285188439524 L 453.6 -370.0192357928234 L 530.4 -379.0749899071458 L 607.2 -378.7690279987651 L 684.0 -386.9343252036382" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip4);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 368.8 -350.99285188439524 L 368.8 -366.99285188439524 L 384.8 -366.99285188439524 L 384.8 -350.99285188439524 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -358.99285188439524 M 380.8 -358.99285188439524 L 380.8 -358.993 M 380.8 -358.993 A 4 4 0 1 0 372.8 -358.993 A 4 4 0 1 0 380.8 -358.993 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 445.6 -362.0192357928234 L 445.6 -378.0192357928234 L 461.6 -378.0192357928234 L 461.6 -362.0192357928234 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -370.0192357928234 M 457.6 -370.0192357928234 L 457.6 -370.019 M 457.6 -370.019 A 4 4 0 1 0 449.6 -370.019 A 4 4 0 1 0 457.6 -370.019 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 522.4 -371.0749899071458 L 522.4 -387.0749899071458 L 538.4 -387.0749899071458 L 538.4 -371.0749899071458 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -379.0749899071458 M 534.4 -379.0749899071458 L 534.4 -379.075 M 534.4 -379.075 A 4 4 0 1 0 526.4 -379.075 A 4 4 0 1 0 534.4 -379.075 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 599.2 -370.7690279987651 L 599.2 -386.7690279987651 L 615.2 -386.7690279987651 L 615.2 -370.7690279987651 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -378.7690279987651 M 611.2 -378.7690279987651 L 611.2 -378.769 M 611.2 -378.769 A 4 4 0 1 0 603.2 -378.769 A 4 4 0 1 0 611.2 -378.769 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 676.0 -378.9343252036382 L 676.0 -394.9343252036382 L 692.0 -394.9343252036382 L 692.0 -378.9343252036382 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -386.9343252036382 M 688.0 -386.9343252036382 L 688 -386.934 M 688 -386.934 A 4 4 0 1 0 680 -386.934 A 4 4 0 1 0 688 -386.934 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip10);"> + <path d="M 376.8 -369.3348215345888 L 453.6 -350.6528592462419 L 530.4 -343.34438599824267 L 607.2 -340.0725201263388 L 684.0 -338.2387078771759" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip11);"> + <path d="M 371.8 -364.3348215345888 L 381.8 -374.3348215345888" style="stroke-width:0.7;"/> + <path d="M 381.8 -364.3348215345888 L 371.8 -374.3348215345888" style="stroke-width:0.7;"/> + <path d="M 448.6 -345.6528592462419 L 458.6 -355.6528592462419" style="stroke-width:0.7;"/> + <path d="M 458.6 -345.6528592462419 L 448.6 -355.6528592462419" style="stroke-width:0.7;"/> + <path d="M 525.4 -338.34438599824267 L 535.4 -348.34438599824267" style="stroke-width:0.7;"/> + <path d="M 535.4 -338.34438599824267 L 525.4 -348.34438599824267" style="stroke-width:0.7;"/> + <path d="M 602.2 -335.0725201263388 L 612.2 -345.0725201263388" style="stroke-width:0.7;"/> + <path d="M 612.2 -335.0725201263388 L 602.2 -345.0725201263388" style="stroke-width:0.7;"/> + <path d="M 679.0 -333.2387078771759 L 689.0 -343.2387078771759" style="stroke-width:0.7;"/> + <path d="M 689.0 -333.2387078771759 L 679.0 -343.2387078771759" style="stroke-width:0.7;"/> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 290 -134 L 290 -246 L 324 -246 L 324 -134 Z" style="stroke:none;"/> + </g> + <path d="M 300 -236.66666666666666 L 314 -236.66666666666666" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <path d="M 302.0 -231.66666666666666 L 312.0 -241.66666666666666" style="stroke-width:0.7;"/> + <path d="M 312.0 -231.66666666666666 L 302.0 -241.66666666666666" style="stroke-width:0.7;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-232.0"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-218.0"> + mmap_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-204.0"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set + </text> + <path d="M 300 -190.66666666666669 L 314 -190.66666666666669" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip13);"> + <path d="M 299.0 -182.66666666666669 L 299.0 -198.66666666666669 L 315.0 -198.66666666666669 L 315.0 -182.66666666666669 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -190.66666666666669 M 311.0 -190.66666666666669 L 311 -190.667 M 311 -190.667 A 4 4 0 1 0 303 -190.667 A 4 4 0 1 0 311 -190.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-186.0"> + n_hash_mmap + </text> + <path d="M 300 -172.66666666666669 L 314 -172.66666666666669" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <path d="M 302.0 -167.66666666666669 L 312.0 -177.66666666666669" style="stroke-width:0.7;"/> + <path d="M 312.0 -167.66666666666669 L 302.0 -177.66666666666669" style="stroke-width:0.7;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-168.0"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-154.0"> + mmap_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-140.0"> + lu_mtf_set + </text> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_small_s2p_tree_local.pdf b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_small_s2p_tree_local.pdf Binary files differnew file mode 100644 index 00000000000..cd433bd577c --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_small_s2p_tree_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_small_s2p_tree_local.png b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_small_s2p_tree_local.png Binary files differnew file mode 100644 index 00000000000..a9872209b87 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_small_s2p_tree_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_small_s2p_tree_local.svg b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_small_s2p_tree_local.svg new file mode 100644 index 00000000000..9af96f35298 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_small_s2p_tree_local.svg @@ -0,0 +1,281 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 416.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 376.8 -444.64371384224637 M 380.8 -444.64371384224637 L 380.8 -444.644 M 380.8 -444.644 A 4 4 0 1 0 372.8 -444.644 A 4 4 0 1 0 380.8 -444.644 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 453.6 -461.59898405531254 M 457.6 -461.59898405531254 L 457.6 -461.599 M 457.6 -461.599 A 4 4 0 1 0 449.6 -461.599 A 4 4 0 1 0 457.6 -461.599 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 530.4 -472.0118526880203 M 534.4 -472.0118526880203 L 534.4 -472.012 M 534.4 -472.012 A 4 4 0 1 0 526.4 -472.012 A 4 4 0 1 0 534.4 -472.012 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 607.2 -485.8504303654579 M 611.2 -485.8504303654579 L 611.2 -485.85 M 611.2 -485.85 A 4 4 0 1 0 603.2 -485.85 A 4 4 0 1 0 611.2 -485.85 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 684.0 -494.8570622266121 M 688.0 -494.8570622266121 L 688 -494.857 M 688 -494.857 A 4 4 0 1 0 680 -494.857 A 4 4 0 1 0 688 -494.857 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 369.65714285714284 -393.37914491322135 L 376.8 -400.5220020560785 L 383.9428571428571 -393.37914491322135 L 376.8 -386.23628777036424 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 446.45714285714286 -387.7556088612953 L 453.6 -394.89846600415245 L 460.74285714285713 -387.7556088612953 L 453.6 -380.6127517184382 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 523.2571428571429 -386.8251728517003 L 530.4 -393.96802999455747 L 537.5428571428572 -386.8251728517003 L 530.4 -379.68231570884313 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 600.0571428571428 -388.1896430083251 L 607.2 -395.3325001511822 L 614.3428571428572 -388.1896430083251 L 607.2 -381.046785865468 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 676.8571428571429 -387.7976576830817 L 684.0 -394.94051482593886 L 691.1428571428571 -387.7976576830817 L 684.0 -380.6548005402245 Z"/> + </clipPath> + <clipPath id="clip17"> + <path d="M 290 -134 L 290 -246 L 324 -246 L 324 -134 Z"/> + </clipPath> + <clipPath id="clip18"> + <path d="M 307.0 -190.66666666666669 M 311.0 -190.66666666666669 L 311 -190.667 M 311 -190.667 A 4 4 0 1 0 303 -190.667 A 4 4 0 1 0 311 -190.667 Z"/> + </clipPath> + <clipPath id="clip19"> + <path d="M 299.85714285714283 -172.66666666666669 L 307.0 -179.8095238095238 L 314.14285714285717 -172.66666666666669 L 307.0 -165.52380952380952 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 1.56e-07 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.5004867321942"> + 3.12e-07 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.5004867321942"> + 4.68e-07 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.5004867321942"> + 6.24e-07 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321943"> + 7.80e-07 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 376.8 -520.0 L 453.6 -496.4732609002399 L 530.4 -485.28742768449274 L 607.2 -508.9510371102018 L 684.0 -501.5764075067024" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <path d="M 371.8 -515.0 L 381.8 -525.0" style="stroke-width:0.7;"/> + <path d="M 381.8 -515.0 L 371.8 -525.0" style="stroke-width:0.7;"/> + <path d="M 448.6 -491.4732609002399 L 458.6 -501.4732609002399" style="stroke-width:0.7;"/> + <path d="M 458.6 -491.4732609002399 L 448.6 -501.4732609002399" style="stroke-width:0.7;"/> + <path d="M 525.4 -480.28742768449274 L 535.4 -490.28742768449274" style="stroke-width:0.7;"/> + <path d="M 535.4 -480.28742768449274 L 525.4 -490.28742768449274" style="stroke-width:0.7;"/> + <path d="M 602.2 -503.9510371102018 L 612.2 -513.9510371102018" style="stroke-width:0.7;"/> + <path d="M 612.2 -503.9510371102018 L 602.2 -513.9510371102018" style="stroke-width:0.7;"/> + <path d="M 679.0 -496.5764075067024 L 689.0 -506.5764075067024" style="stroke-width:0.7;"/> + <path d="M 689.0 -496.5764075067024 L 679.0 -506.5764075067024" style="stroke-width:0.7;"/> + </g> + <g style="clip-path:url(#clip3);"> + <path d="M 376.8 -444.64371384224637 L 453.6 -461.59898405531254 L 530.4 -472.0118526880203 L 607.2 -485.8504303654579 L 684.0 -494.8570622266121" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip4);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 368.8 -436.64371384224637 L 368.8 -452.64371384224637 L 384.8 -452.64371384224637 L 384.8 -436.64371384224637 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -444.64371384224637 M 380.8 -444.64371384224637 L 380.8 -444.644 M 380.8 -444.644 A 4 4 0 1 0 372.8 -444.644 A 4 4 0 1 0 380.8 -444.644 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 445.6 -453.59898405531254 L 445.6 -469.59898405531254 L 461.6 -469.59898405531254 L 461.6 -453.59898405531254 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -461.59898405531254 M 457.6 -461.59898405531254 L 457.6 -461.599 M 457.6 -461.599 A 4 4 0 1 0 449.6 -461.599 A 4 4 0 1 0 457.6 -461.599 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 522.4 -464.0118526880203 L 522.4 -480.0118526880203 L 538.4 -480.0118526880203 L 538.4 -464.0118526880203 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -472.0118526880203 M 534.4 -472.0118526880203 L 534.4 -472.012 M 534.4 -472.012 A 4 4 0 1 0 526.4 -472.012 A 4 4 0 1 0 534.4 -472.012 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 599.2 -477.8504303654579 L 599.2 -493.8504303654579 L 615.2 -493.8504303654579 L 615.2 -477.8504303654579 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -485.8504303654579 M 611.2 -485.8504303654579 L 611.2 -485.85 M 611.2 -485.85 A 4 4 0 1 0 603.2 -485.85 A 4 4 0 1 0 611.2 -485.85 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 676.0 -486.8570622266121 L 676.0 -502.8570622266121 L 692.0 -502.8570622266121 L 692.0 -486.8570622266121 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -494.8570622266121 M 688.0 -494.8570622266121 L 688 -494.857 M 688 -494.857 A 4 4 0 1 0 680 -494.857 A 4 4 0 1 0 688 -494.857 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip10);"> + <path d="M 376.8 -393.37914491322135 L 453.6 -387.7556088612953 L 530.4 -386.8251728517003 L 607.2 -388.1896430083251 L 684.0 -387.7976576830817" style="stroke:rgb(126,126,126);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip11);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 369.65714285714284 -386.23628777036424 L 369.65714285714284 -400.5220020560785 L 383.9428571428571 -400.5220020560785 L 383.9428571428571 -386.23628777036424 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 369.65714285714284 -393.37914491322135 L 376.8 -400.5220020560785 L 383.9428571428571 -393.37914491322135 L 376.8 -386.23628777036424 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip13);"> + <path d="M 446.45714285714286 -380.6127517184382 L 446.45714285714286 -394.89846600415245 L 460.74285714285713 -394.89846600415245 L 460.74285714285713 -380.6127517184382 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 446.45714285714286 -387.7556088612953 L 453.6 -394.89846600415245 L 460.74285714285713 -387.7556088612953 L 453.6 -380.6127517184382 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip14);"> + <path d="M 523.2571428571429 -379.68231570884313 L 523.2571428571429 -393.96802999455747 L 537.5428571428572 -393.96802999455747 L 537.5428571428572 -379.68231570884313 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 523.2571428571429 -386.8251728517003 L 530.4 -393.96802999455747 L 537.5428571428572 -386.8251728517003 L 530.4 -379.68231570884313 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip15);"> + <path d="M 600.0571428571428 -381.046785865468 L 600.0571428571428 -395.3325001511822 L 614.3428571428572 -395.3325001511822 L 614.3428571428572 -381.046785865468 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.0571428571428 -388.1896430083251 L 607.2 -395.3325001511822 L 614.3428571428572 -388.1896430083251 L 607.2 -381.046785865468 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip16);"> + <path d="M 676.8571428571429 -380.6548005402245 L 676.8571428571429 -394.94051482593886 L 691.1428571428571 -394.94051482593886 L 691.1428571428571 -380.6548005402245 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 676.8571428571429 -387.7976576830817 L 684.0 -394.94051482593886 L 691.1428571428571 -387.7976576830817 L 684.0 -380.6548005402245 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip17);"> + <path d="M 290 -134 L 290 -246 L 324 -246 L 324 -134 Z" style="stroke:none;"/> + </g> + <path d="M 300 -236.66666666666666 L 314 -236.66666666666666" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <path d="M 302.0 -231.66666666666666 L 312.0 -241.66666666666666" style="stroke-width:0.7;"/> + <path d="M 312.0 -231.66666666666666 L 302.0 -241.66666666666666" style="stroke-width:0.7;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-232.0"> + rb_tree_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-218.0"> + mmap_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-204.0"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set + </text> + <path d="M 300 -190.66666666666669 L 314 -190.66666666666669" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip18);"> + <path d="M 299.0 -182.66666666666669 L 299.0 -198.66666666666669 L 315.0 -198.66666666666669 L 315.0 -182.66666666666669 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -190.66666666666669 M 311.0 -190.66666666666669 L 311 -190.667 M 311 -190.667 A 4 4 0 1 0 303 -190.667 A 4 4 0 1 0 311 -190.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-186.0"> + n_mmap + </text> + <path d="M 300 -172.66666666666669 L 314 -172.66666666666669" style="stroke:rgb(126,126,126);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip19);"> + <path d="M 299.85714285714283 -165.52380952380952 L 299.85714285714283 -179.8095238095238 L 314.14285714285717 -179.8095238095238 L 314.14285714285717 -165.52380952380952 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 299.85714285714283 -172.66666666666669 L 307.0 -179.8095238095238 L 314.14285714285717 -172.66666666666669 L 307.0 -165.52380952380952 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-168.0"> + rb_tree_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-154.0"> + mmap_ + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-140.0"> + lu_mtf_set + </text> + </g> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/node_invariants.png b/libstdc++-v3/doc/xml/images/pbds_node_invariants.png Binary files differindex b375f5168d7..b375f5168d7 100644 --- a/libstdc++-v3/doc/html/ext/pb_ds/node_invariants.png +++ b/libstdc++-v3/doc/xml/images/pbds_node_invariants.png diff --git a/libstdc++-v3/doc/xml/images/pbds_pairing_priority_queue_text_push_pop_timing_test_local.pdf b/libstdc++-v3/doc/xml/images/pbds_pairing_priority_queue_text_push_pop_timing_test_local.pdf Binary files differnew file mode 100644 index 00000000000..caaa7fd6ac0 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_pairing_priority_queue_text_push_pop_timing_test_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_pairing_priority_queue_text_push_pop_timing_test_local.png b/libstdc++-v3/doc/xml/images/pbds_pairing_priority_queue_text_push_pop_timing_test_local.png Binary files differnew file mode 100644 index 00000000000..6bee356d1e5 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_pairing_priority_queue_text_push_pop_timing_test_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_pairing_priority_queue_text_push_pop_timing_test_local.svg b/libstdc++-v3/doc/xml/images/pbds_pairing_priority_queue_text_push_pop_timing_test_local.svg new file mode 100644 index 00000000000..650a12bb38b --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_pairing_priority_queue_text_push_pop_timing_test_local.svg @@ -0,0 +1,369 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 416.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 338.4 -449.79559918396075 M 342.4 -449.79559918396075 L 342.4 -449.796 M 342.4 -449.796 A 4 4 0 1 0 334.4 -449.796 A 4 4 0 1 0 342.4 -449.796 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 376.8 -470.1165408951132 M 380.8 -470.1165408951132 L 380.8 -470.117 M 380.8 -470.117 A 4 4 0 1 0 372.8 -470.117 A 4 4 0 1 0 380.8 -470.117 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 415.2 -479.5751903823286 M 419.2 -479.5751903823286 L 419.2 -479.575 M 419.2 -479.575 A 4 4 0 1 0 411.2 -479.575 A 4 4 0 1 0 419.2 -479.575 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 453.6 -490.4298926130966 M 457.6 -490.4298926130966 L 457.6 -490.43 M 457.6 -490.43 A 4 4 0 1 0 449.6 -490.43 A 4 4 0 1 0 457.6 -490.43 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 492.0 -491.9504212446209 M 496.0 -491.9504212446209 L 496 -491.95 M 496 -491.95 A 4 4 0 1 0 488 -491.95 A 4 4 0 1 0 496 -491.95 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 530.4 -498.83454504890943 M 534.4 -498.83454504890943 L 534.4 -498.835 M 534.4 -498.835 A 4 4 0 1 0 526.4 -498.835 A 4 4 0 1 0 534.4 -498.835 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 568.8 -504.13995027404474 M 572.8 -504.13995027404474 L 572.8 -504.14 M 572.8 -504.14 A 4 4 0 1 0 564.8 -504.14 A 4 4 0 1 0 572.8 -504.14 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 607.2 -510.83331225001893 M 611.2 -510.83331225001893 L 611.2 -510.833 M 611.2 -510.833 A 4 4 0 1 0 603.2 -510.833 A 4 4 0 1 0 611.2 -510.833 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 645.6 -510.3551426803716 M 649.6 -510.3551426803716 L 649.6 -510.355 M 649.6 -510.355 A 4 4 0 1 0 641.6 -510.355 A 4 4 0 1 0 649.6 -510.355 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 684.0 -520.0 M 688.0 -520.0 L 688 -520 M 688 -520 A 4 4 0 1 0 680 -520 A 4 4 0 1 0 688 -520 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip17"> + <path d="M 334.4 -425.9624410338031 L 334.4 -433.9624410338031 L 342.4 -433.9624410338031 L 342.4 -425.9624410338031 Z"/> + </clipPath> + <clipPath id="clip18"> + <path d="M 372.8 -433.9749438225506 L 372.8 -441.9749438225506 L 380.8 -441.9749438225506 L 380.8 -433.9749438225506 Z"/> + </clipPath> + <clipPath id="clip19"> + <path d="M 411.2 -438.0669621397341 L 411.2 -446.0669621397341 L 419.2 -446.0669621397341 L 419.2 -438.0669621397341 Z"/> + </clipPath> + <clipPath id="clip20"> + <path d="M 449.6 -443.06218964402933 L 449.6 -451.06218964402933 L 457.6 -451.06218964402933 L 457.6 -443.06218964402933 Z"/> + </clipPath> + <clipPath id="clip21"> + <path d="M 488.0 -448.3438128905684 L 488.0 -456.3438128905684 L 496.0 -456.3438128905684 L 496.0 -448.3438128905684 Z"/> + </clipPath> + <clipPath id="clip22"> + <path d="M 526.4 -450.52365892870694 L 526.4 -458.52365892870694 L 534.4 -458.52365892870694 L 534.4 -450.52365892870694 Z"/> + </clipPath> + <clipPath id="clip23"> + <path d="M 564.8 -452.5061651444514 L 564.8 -460.5061651444514 L 572.8 -460.5061651444514 L 572.8 -452.5061651444514 Z"/> + </clipPath> + <clipPath id="clip24"> + <path d="M 603.2 -454.1248576876281 L 603.2 -462.1248576876281 L 611.2 -462.1248576876281 L 611.2 -454.1248576876281 Z"/> + </clipPath> + <clipPath id="clip25"> + <path d="M 641.6 -458.8291354537781 L 641.6 -466.8291354537781 L 649.6 -466.8291354537781 L 649.6 -458.8291354537781 Z"/> + </clipPath> + <clipPath id="clip26"> + <path d="M 680.0 -459.04418526023323 L 680.0 -467.04418526023323 L 688.0 -467.04418526023323 L 688.0 -459.04418526023323 Z"/> + </clipPath> + <clipPath id="clip27"> + <path d="M 290 -134 L 290 -190 L 324 -190 L 324 -134 Z"/> + </clipPath> + <clipPath id="clip28"> + <path d="M 307.0 -180.66666666666669 M 311.0 -180.66666666666669 L 311 -180.667 M 311 -180.667 A 4 4 0 1 0 303 -180.667 A 4 4 0 1 0 311 -180.667 Z"/> + </clipPath> + <clipPath id="clip29"> + <path d="M 303.0 -140.66666666666666 L 303.0 -148.66666666666666 L 311.0 -148.66666666666666 L 311.0 -140.66666666666666 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 8.70e-08 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.5004867321942"> + 1.74e-07 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.5004867321942"> + 2.61e-07 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.5004867321942"> + 3.48e-07 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321942"> + 4.35e-07 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 338.4 -449.79559918396075 L 376.8 -470.1165408951132 L 415.2 -479.5751903823286 L 453.6 -490.4298926130966 L 492.0 -491.9504212446209 L 530.4 -498.83454504890943 L 568.8 -504.13995027404474 L 607.2 -510.83331225001893 L 645.6 -510.3551426803716 L 684.0 -520.0" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip3);"> + <path d="M 330.4 -441.79559918396075 L 330.4 -457.79559918396075 L 346.4 -457.79559918396075 L 346.4 -441.79559918396075 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -449.79559918396075 M 342.4 -449.79559918396075 L 342.4 -449.796 M 342.4 -449.796 A 4 4 0 1 0 334.4 -449.796 A 4 4 0 1 0 342.4 -449.796 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip4);"> + <path d="M 368.8 -462.1165408951132 L 368.8 -478.1165408951132 L 384.8 -478.1165408951132 L 384.8 -462.1165408951132 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -470.1165408951132 M 380.8 -470.1165408951132 L 380.8 -470.117 M 380.8 -470.117 A 4 4 0 1 0 372.8 -470.117 A 4 4 0 1 0 380.8 -470.117 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 407.2 -471.5751903823286 L 407.2 -487.5751903823286 L 423.2 -487.5751903823286 L 423.2 -471.5751903823286 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -479.5751903823286 M 419.2 -479.5751903823286 L 419.2 -479.575 M 419.2 -479.575 A 4 4 0 1 0 411.2 -479.575 A 4 4 0 1 0 419.2 -479.575 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 445.6 -482.4298926130966 L 445.6 -498.4298926130966 L 461.6 -498.4298926130966 L 461.6 -482.4298926130966 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -490.4298926130966 M 457.6 -490.4298926130966 L 457.6 -490.43 M 457.6 -490.43 A 4 4 0 1 0 449.6 -490.43 A 4 4 0 1 0 457.6 -490.43 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 484.0 -483.9504212446209 L 484.0 -499.9504212446209 L 500.0 -499.9504212446209 L 500.0 -483.9504212446209 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -491.9504212446209 M 496.0 -491.9504212446209 L 496 -491.95 M 496 -491.95 A 4 4 0 1 0 488 -491.95 A 4 4 0 1 0 496 -491.95 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 522.4 -490.83454504890943 L 522.4 -506.83454504890943 L 538.4 -506.83454504890943 L 538.4 -490.83454504890943 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -498.83454504890943 M 534.4 -498.83454504890943 L 534.4 -498.835 M 534.4 -498.835 A 4 4 0 1 0 526.4 -498.835 A 4 4 0 1 0 534.4 -498.835 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 560.8 -496.13995027404474 L 560.8 -512.1399502740447 L 576.8 -512.1399502740447 L 576.8 -496.13995027404474 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -504.13995027404474 M 572.8 -504.13995027404474 L 572.8 -504.14 M 572.8 -504.14 A 4 4 0 1 0 564.8 -504.14 A 4 4 0 1 0 572.8 -504.14 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip10);"> + <path d="M 599.2 -502.83331225001893 L 599.2 -518.8333122500189 L 615.2 -518.8333122500189 L 615.2 -502.83331225001893 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -510.83331225001893 M 611.2 -510.83331225001893 L 611.2 -510.833 M 611.2 -510.833 A 4 4 0 1 0 603.2 -510.833 A 4 4 0 1 0 611.2 -510.833 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip11);"> + <path d="M 637.6 -502.3551426803716 L 637.6 -518.3551426803716 L 653.6 -518.3551426803716 L 653.6 -502.3551426803716 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -510.3551426803716 M 649.6 -510.3551426803716 L 649.6 -510.355 M 649.6 -510.355 A 4 4 0 1 0 641.6 -510.355 A 4 4 0 1 0 649.6 -510.355 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 676.0 -512.0 L 676.0 -528.0 L 692.0 -528.0 L 692.0 -512.0 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -520.0 M 688.0 -520.0 L 688 -520 M 688 -520 A 4 4 0 1 0 680 -520 A 4 4 0 1 0 688 -520 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip13);"> + <path d="M 338.4 -424.61351984783215 L 376.8 -447.20943551150805 L 415.2 -462.0028381974456 L 453.6 -471.81669936497053 L 492.0 -468.66634620028844 L 530.4 -480.18795583083977 L 568.8 -486.9455797489783 L 607.2 -488.8714140157274 L 645.6 -494.10041330962804 L 684.0 -497.95157584358174" style="stroke:rgb(137,42,226);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip14);"> + <path d="M 331.25714285714287 -424.61351984783215 L 345.54285714285714 -424.61351984783215" style="stroke-width:1;"/> + <path d="M 338.4 -417.470662704975 L 338.4 -431.7563769906893" style="stroke-width:1;"/> + <path d="M 369.65714285714284 -447.20943551150805 L 383.9428571428571 -447.20943551150805" style="stroke-width:1;"/> + <path d="M 376.8 -440.0665783686509 L 376.8 -454.3522926543652" style="stroke-width:1;"/> + <path d="M 408.0571428571429 -462.0028381974456 L 422.34285714285716 -462.0028381974456" style="stroke-width:1;"/> + <path d="M 415.2 -454.8599810545885 L 415.2 -469.1456953403027" style="stroke-width:1;"/> + <path d="M 446.45714285714286 -471.81669936497053 L 460.74285714285713 -471.81669936497053" style="stroke-width:1;"/> + <path d="M 453.6 -464.6738422221134 L 453.6 -478.9595565078277" style="stroke-width:1;"/> + <path d="M 484.8571428571429 -468.66634620028844 L 499.1428571428571 -468.66634620028844" style="stroke-width:1;"/> + <path d="M 492.0 -461.5234890574313 L 492.0 -475.80920334314555" style="stroke-width:1;"/> + <path d="M 523.2571428571429 -480.18795583083977 L 537.5428571428572 -480.18795583083977" style="stroke-width:1;"/> + <path d="M 530.4 -473.0450986879826 L 530.4 -487.3308129736969" style="stroke-width:1;"/> + <path d="M 561.6571428571428 -486.9455797489783 L 575.9428571428572 -486.9455797489783" style="stroke-width:1;"/> + <path d="M 568.8 -479.8027226061211 L 568.8 -494.0884368918354" style="stroke-width:1;"/> + <path d="M 600.0571428571428 -488.8714140157274 L 614.3428571428572 -488.8714140157274" style="stroke-width:1;"/> + <path d="M 607.2 -481.72855687287023 L 607.2 -496.0142711585845" style="stroke-width:1;"/> + <path d="M 638.4571428571428 -494.10041330962804 L 652.7428571428572 -494.10041330962804" style="stroke-width:1;"/> + <path d="M 645.6 -486.95755616677087 L 645.6 -501.24327045248515" style="stroke-width:1;"/> + <path d="M 676.8571428571429 -497.95157584358174 L 691.1428571428571 -497.95157584358174" style="stroke-width:1;"/> + <path d="M 684.0 -490.8087187007246 L 684.0 -505.09443298643885" style="stroke-width:1;"/> + </g> + <g style="clip-path:url(#clip15);"> + <path d="M 338.4 -429.9624410338031 L 376.8 -437.9749438225506 L 415.2 -442.0669621397341 L 453.6 -447.06218964402933 L 492.0 -452.3438128905684 L 530.4 -454.52365892870694 L 568.8 -456.5061651444514 L 607.2 -458.1248576876281 L 645.6 -462.8291354537781 L 684.0 -463.04418526023323" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip16);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip17);"> + <path d="M 334.4 -425.9624410338031 L 334.4 -433.9624410338031 L 342.4 -433.9624410338031 L 342.4 -425.9624410338031 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 334.4 -425.9624410338031 L 334.4 -433.9624410338031 L 342.4 -433.9624410338031 L 342.4 -425.9624410338031 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip18);"> + <path d="M 372.8 -433.9749438225506 L 372.8 -441.9749438225506 L 380.8 -441.9749438225506 L 380.8 -433.9749438225506 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 372.8 -433.9749438225506 L 372.8 -441.9749438225506 L 380.8 -441.9749438225506 L 380.8 -433.9749438225506 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip19);"> + <path d="M 411.2 -438.0669621397341 L 411.2 -446.0669621397341 L 419.2 -446.0669621397341 L 419.2 -438.0669621397341 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 411.2 -438.0669621397341 L 411.2 -446.0669621397341 L 419.2 -446.0669621397341 L 419.2 -438.0669621397341 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip20);"> + <path d="M 449.6 -443.06218964402933 L 449.6 -451.06218964402933 L 457.6 -451.06218964402933 L 457.6 -443.06218964402933 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 449.6 -443.06218964402933 L 449.6 -451.06218964402933 L 457.6 -451.06218964402933 L 457.6 -443.06218964402933 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip21);"> + <path d="M 488.0 -448.3438128905684 L 488.0 -456.3438128905684 L 496.0 -456.3438128905684 L 496.0 -448.3438128905684 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 488.0 -448.3438128905684 L 488.0 -456.3438128905684 L 496.0 -456.3438128905684 L 496.0 -448.3438128905684 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip22);"> + <path d="M 526.4 -450.52365892870694 L 526.4 -458.52365892870694 L 534.4 -458.52365892870694 L 534.4 -450.52365892870694 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 526.4 -450.52365892870694 L 526.4 -458.52365892870694 L 534.4 -458.52365892870694 L 534.4 -450.52365892870694 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip23);"> + <path d="M 564.8 -452.5061651444514 L 564.8 -460.5061651444514 L 572.8 -460.5061651444514 L 572.8 -452.5061651444514 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 564.8 -452.5061651444514 L 564.8 -460.5061651444514 L 572.8 -460.5061651444514 L 572.8 -452.5061651444514 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip24);"> + <path d="M 603.2 -454.1248576876281 L 603.2 -462.1248576876281 L 611.2 -462.1248576876281 L 611.2 -454.1248576876281 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 603.2 -454.1248576876281 L 603.2 -462.1248576876281 L 611.2 -462.1248576876281 L 611.2 -454.1248576876281 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip25);"> + <path d="M 641.6 -458.8291354537781 L 641.6 -466.8291354537781 L 649.6 -466.8291354537781 L 649.6 -458.8291354537781 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 641.6 -458.8291354537781 L 641.6 -466.8291354537781 L 649.6 -466.8291354537781 L 649.6 -458.8291354537781 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip26);"> + <path d="M 680.0 -459.04418526023323 L 680.0 -467.04418526023323 L 688.0 -467.04418526023323 L 688.0 -459.04418526023323 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 680.0 -459.04418526023323 L 680.0 -467.04418526023323 L 688.0 -467.04418526023323 L 688.0 -459.04418526023323 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip27);"> + <path d="M 290 -134 L 290 -190 L 324 -190 L 324 -134 Z" style="stroke:none;"/> + </g> + <path d="M 300 -180.66666666666669 L 314 -180.66666666666669" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip28);"> + <path d="M 299.0 -172.66666666666669 L 299.0 -188.66666666666669 L 315.0 -188.66666666666669 L 315.0 -172.66666666666669 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -180.66666666666669 M 311.0 -180.66666666666669 L 311 -180.667 M 311 -180.667 A 4 4 0 1 0 303 -180.667 A 4 4 0 1 0 311 -180.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-176.0"> + n_pq_deque + </text> + <path d="M 300 -162.66666666666666 L 314 -162.66666666666666" style="stroke:rgb(137,42,226);stroke-width:2;"/> + <path d="M 299.85714285714283 -162.66666666666666 L 314.14285714285717 -162.66666666666666" style="stroke-width:1;"/> + <path d="M 307.0 -155.52380952380952 L 307.0 -169.8095238095238" style="stroke-width:1;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-158.0"> + pairing_heap + </text> + <path d="M 300 -144.66666666666666 L 314 -144.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip29);"> + <path d="M 303.0 -140.66666666666666 L 303.0 -148.66666666666666 L 311.0 -148.66666666666666 L 311.0 -140.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 303.0 -140.66666666666666 L 303.0 -148.66666666666666 L 311.0 -148.66666666666666 L 311.0 -140.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-140.0"> + n_pq_vector + </text> + </g> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_pairing_priority_queue_text_push_timing_test_local.pdf b/libstdc++-v3/doc/xml/images/pbds_pairing_priority_queue_text_push_timing_test_local.pdf Binary files differnew file mode 100644 index 00000000000..86a2d4a015a --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_pairing_priority_queue_text_push_timing_test_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_pairing_priority_queue_text_push_timing_test_local.png b/libstdc++-v3/doc/xml/images/pbds_pairing_priority_queue_text_push_timing_test_local.png Binary files differnew file mode 100644 index 00000000000..5aa7e244843 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_pairing_priority_queue_text_push_timing_test_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_pairing_priority_queue_text_push_timing_test_local.svg b/libstdc++-v3/doc/xml/images/pbds_pairing_priority_queue_text_push_timing_test_local.svg new file mode 100644 index 00000000000..cc8d7c729d0 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_pairing_priority_queue_text_push_timing_test_local.svg @@ -0,0 +1,483 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 436.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 338.4 -520.0 M 342.4 -520.0 L 342.4 -520 M 342.4 -520 A 4 4 0 1 0 334.4 -520 A 4 4 0 1 0 342.4 -520 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 376.8 -516.9002608387358 M 380.8 -516.9002608387358 L 380.8 -516.9 M 380.8 -516.9 A 4 4 0 1 0 372.8 -516.9 A 4 4 0 1 0 380.8 -516.9 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 415.2 -518.7181337790383 M 419.2 -518.7181337790383 L 419.2 -518.718 M 419.2 -518.718 A 4 4 0 1 0 411.2 -518.718 A 4 4 0 1 0 419.2 -518.718 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 453.6 -515.8375329213939 M 457.6 -515.8375329213939 L 457.6 -515.838 M 457.6 -515.838 A 4 4 0 1 0 449.6 -515.838 A 4 4 0 1 0 457.6 -515.838 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 492.0 -512.189715863047 M 496.0 -512.189715863047 L 496 -512.19 M 496 -512.19 A 4 4 0 1 0 488 -512.19 A 4 4 0 1 0 496 -512.19 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 530.4 -510.9972227849811 M 534.4 -510.9972227849811 L 534.4 -510.997 M 534.4 -510.997 A 4 4 0 1 0 526.4 -510.997 A 4 4 0 1 0 534.4 -510.997 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 568.8 -512.5114591774716 M 572.8 -512.5114591774716 L 572.8 -512.511 M 572.8 -512.511 A 4 4 0 1 0 564.8 -512.511 A 4 4 0 1 0 572.8 -512.511 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 607.2 -513.0985362641815 M 611.2 -513.0985362641815 L 611.2 -513.099 M 611.2 -513.099 A 4 4 0 1 0 603.2 -513.099 A 4 4 0 1 0 611.2 -513.099 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 645.6 -512.4346214883847 M 649.6 -512.4346214883847 L 649.6 -512.435 M 649.6 -512.435 A 4 4 0 1 0 641.6 -512.435 A 4 4 0 1 0 649.6 -512.435 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 684.0 -513.9521078133441 M 688.0 -513.9521078133441 L 688 -513.952 M 688 -513.952 A 4 4 0 1 0 680 -513.952 A 4 4 0 1 0 688 -513.952 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 334.4 -501.592585089141 L 334.4 -509.592585089141 L 342.4 -509.592585089141 L 342.4 -501.592585089141 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 372.8 -495.63708383981634 L 372.8 -503.63708383981634 L 380.8 -503.63708383981634 L 380.8 -495.63708383981634 Z"/> + </clipPath> + <clipPath id="clip17"> + <path d="M 411.2 -489.61751249324686 L 411.2 -497.61751249324686 L 419.2 -497.61751249324686 L 419.2 -489.61751249324686 Z"/> + </clipPath> + <clipPath id="clip18"> + <path d="M 449.6 -484.1618044300378 L 449.6 -492.1618044300378 L 457.6 -492.1618044300378 L 457.6 -484.1618044300378 Z"/> + </clipPath> + <clipPath id="clip19"> + <path d="M 488.0 -478.3941028498109 L 488.0 -486.3941028498109 L 496.0 -486.3941028498109 L 496.0 -478.3941028498109 Z"/> + </clipPath> + <clipPath id="clip20"> + <path d="M 526.4 -479.7713778025392 L 526.4 -487.7713778025392 L 534.4 -487.7713778025392 L 534.4 -479.7713778025392 Z"/> + </clipPath> + <clipPath id="clip21"> + <path d="M 564.8 -479.26578116558613 L 564.8 -487.26578116558613 L 572.8 -487.26578116558613 L 572.8 -479.26578116558613 Z"/> + </clipPath> + <clipPath id="clip22"> + <path d="M 603.2 -477.16911044705563 L 603.2 -485.16911044705563 L 611.2 -485.16911044705563 L 611.2 -477.16911044705563 Z"/> + </clipPath> + <clipPath id="clip23"> + <path d="M 641.6 -477.08716572123177 L 641.6 -485.08716572123177 L 649.6 -485.08716572123177 L 649.6 -477.08716572123177 Z"/> + </clipPath> + <clipPath id="clip24"> + <path d="M 680.0 -475.29784575904915 L 680.0 -483.29784575904915 L 688.0 -483.29784575904915 L 688.0 -475.29784575904915 Z"/> + </clipPath> + <clipPath id="clip25"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip26"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip27"> + <path d="M 338.4 -449.58069540113456 M 342.4 -449.58069540113456 L 342.4 -449.581 M 342.4 -449.581 A 4 4 0 1 0 334.4 -449.581 A 4 4 0 1 0 342.4 -449.581 Z"/> + </clipPath> + <clipPath id="clip28"> + <path d="M 376.8 -450.22928906672064 M 380.8 -450.22928906672064 L 380.8 -450.229 M 380.8 -450.229 A 4 4 0 1 0 372.8 -450.229 A 4 4 0 1 0 380.8 -450.229 Z"/> + </clipPath> + <clipPath id="clip29"> + <path d="M 415.2 -446.89439407752565 M 419.2 -446.89439407752565 L 419.2 -446.894 M 419.2 -446.894 A 4 4 0 1 0 411.2 -446.894 A 4 4 0 1 0 419.2 -446.894 Z"/> + </clipPath> + <clipPath id="clip30"> + <path d="M 453.6 -445.21325043895195 M 457.6 -445.21325043895195 L 457.6 -445.213 M 457.6 -445.213 A 4 4 0 1 0 449.6 -445.213 A 4 4 0 1 0 457.6 -445.213 Z"/> + </clipPath> + <clipPath id="clip31"> + <path d="M 492.0 -446.6436850013506 M 496.0 -446.6436850013506 L 496 -446.644 M 496 -446.644 A 4 4 0 1 0 488 -446.644 A 4 4 0 1 0 496 -446.644 Z"/> + </clipPath> + <clipPath id="clip32"> + <path d="M 530.4 -447.24422609400324 M 534.4 -447.24422609400324 L 534.4 -447.244 M 534.4 -447.244 A 4 4 0 1 0 526.4 -447.244 A 4 4 0 1 0 534.4 -447.244 Z"/> + </clipPath> + <clipPath id="clip33"> + <path d="M 568.8 -445.75668557536466 M 572.8 -445.75668557536466 L 572.8 -445.757 M 572.8 -445.757 A 4 4 0 1 0 564.8 -445.757 A 4 4 0 1 0 572.8 -445.757 Z"/> + </clipPath> + <clipPath id="clip34"> + <path d="M 607.2 -446.09073220556456 M 611.2 -446.09073220556456 L 611.2 -446.091 M 611.2 -446.091 A 4 4 0 1 0 603.2 -446.091 A 4 4 0 1 0 611.2 -446.091 Z"/> + </clipPath> + <clipPath id="clip35"> + <path d="M 645.6 -446.40458282685034 M 649.6 -446.40458282685034 L 649.6 -446.405 M 649.6 -446.405 A 4 4 0 1 0 641.6 -446.405 A 4 4 0 1 0 649.6 -446.405 Z"/> + </clipPath> + <clipPath id="clip36"> + <path d="M 684.0 -447.38931236493784 M 688.0 -447.38931236493784 L 688 -447.389 M 688 -447.389 A 4 4 0 1 0 680 -447.389 A 4 4 0 1 0 688 -447.389 Z"/> + </clipPath> + <clipPath id="clip37"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip38"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip39"> + <path d="M 290 -114 L 290 -188 L 324 -188 L 324 -114 Z"/> + </clipPath> + <clipPath id="clip40"> + <path d="M 307.0 -178.66666666666669 M 311.0 -178.66666666666669 L 311 -178.667 M 311 -178.667 A 4 4 0 1 0 303 -178.667 A 4 4 0 1 0 311 -178.667 Z"/> + </clipPath> + <clipPath id="clip41"> + <path d="M 303.0 -156.66666666666666 L 303.0 -164.66666666666666 L 311.0 -164.66666666666666 L 311.0 -156.66666666666666 Z"/> + </clipPath> + <clipPath id="clip42"> + <path d="M 307.0 -142.66666666666666 M 311.0 -142.66666666666666 L 311 -142.667 M 311 -142.667 A 4 4 0 1 0 303 -142.667 A 4 4 0 1 0 311 -142.667 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 1.90e-08 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.50048673219425"> + 3.79e-08 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.5004867321942"> + 5.69e-08 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.50048673219425"> + 7.58e-08 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321943"> + 9.48e-08 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 338.4 -520.0 L 376.8 -516.9002608387358 L 415.2 -518.7181337790383 L 453.6 -515.8375329213939 L 492.0 -512.189715863047 L 530.4 -510.9972227849811 L 568.8 -512.5114591774716 L 607.2 -513.0985362641815 L 645.6 -512.4346214883847 L 684.0 -513.9521078133441" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip3);"> + <path d="M 330.4 -512.0 L 330.4 -528.0 L 346.4 -528.0 L 346.4 -512.0 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -520.0 M 342.4 -520.0 L 342.4 -520 M 342.4 -520 A 4 4 0 1 0 334.4 -520 A 4 4 0 1 0 342.4 -520 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip4);"> + <path d="M 368.8 -508.9002608387358 L 368.8 -524.9002608387358 L 384.8 -524.9002608387358 L 384.8 -508.9002608387358 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -516.9002608387358 M 380.8 -516.9002608387358 L 380.8 -516.9 M 380.8 -516.9 A 4 4 0 1 0 372.8 -516.9 A 4 4 0 1 0 380.8 -516.9 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 407.2 -510.71813377903834 L 407.2 -526.7181337790383 L 423.2 -526.7181337790383 L 423.2 -510.71813377903834 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -518.7181337790383 M 419.2 -518.7181337790383 L 419.2 -518.718 M 419.2 -518.718 A 4 4 0 1 0 411.2 -518.718 A 4 4 0 1 0 419.2 -518.718 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 445.6 -507.83753292139386 L 445.6 -523.8375329213939 L 461.6 -523.8375329213939 L 461.6 -507.83753292139386 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -515.8375329213939 M 457.6 -515.8375329213939 L 457.6 -515.838 M 457.6 -515.838 A 4 4 0 1 0 449.6 -515.838 A 4 4 0 1 0 457.6 -515.838 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 484.0 -504.189715863047 L 484.0 -520.189715863047 L 500.0 -520.189715863047 L 500.0 -504.189715863047 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -512.189715863047 M 496.0 -512.189715863047 L 496 -512.19 M 496 -512.19 A 4 4 0 1 0 488 -512.19 A 4 4 0 1 0 496 -512.19 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 522.4 -502.9972227849811 L 522.4 -518.9972227849811 L 538.4 -518.9972227849811 L 538.4 -502.9972227849811 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -510.9972227849811 M 534.4 -510.9972227849811 L 534.4 -510.997 M 534.4 -510.997 A 4 4 0 1 0 526.4 -510.997 A 4 4 0 1 0 534.4 -510.997 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 560.8 -504.51145917747164 L 560.8 -520.5114591774716 L 576.8 -520.5114591774716 L 576.8 -504.51145917747164 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -512.5114591774716 M 572.8 -512.5114591774716 L 572.8 -512.511 M 572.8 -512.511 A 4 4 0 1 0 564.8 -512.511 A 4 4 0 1 0 572.8 -512.511 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip10);"> + <path d="M 599.2 -505.09853626418146 L 599.2 -521.0985362641815 L 615.2 -521.0985362641815 L 615.2 -505.09853626418146 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -513.0985362641815 M 611.2 -513.0985362641815 L 611.2 -513.099 M 611.2 -513.099 A 4 4 0 1 0 603.2 -513.099 A 4 4 0 1 0 611.2 -513.099 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip11);"> + <path d="M 637.6 -504.43462148838466 L 637.6 -520.4346214883847 L 653.6 -520.4346214883847 L 653.6 -504.43462148838466 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -512.4346214883847 M 649.6 -512.4346214883847 L 649.6 -512.435 M 649.6 -512.435 A 4 4 0 1 0 641.6 -512.435 A 4 4 0 1 0 649.6 -512.435 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 676.0 -505.9521078133441 L 676.0 -521.9521078133441 L 692.0 -521.9521078133441 L 692.0 -505.9521078133441 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -513.9521078133441 M 688.0 -513.9521078133441 L 688 -513.952 M 688 -513.952 A 4 4 0 1 0 680 -513.952 A 4 4 0 1 0 688 -513.952 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip13);"> + <path d="M 338.4 -505.592585089141 L 376.8 -499.63708383981634 L 415.2 -493.61751249324686 L 453.6 -488.1618044300378 L 492.0 -482.3941028498109 L 530.4 -483.7713778025392 L 568.8 -483.26578116558613 L 607.2 -481.16911044705563 L 645.6 -481.08716572123177 L 684.0 -479.29784575904915" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip14);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip15);"> + <path d="M 334.4 -501.592585089141 L 334.4 -509.592585089141 L 342.4 -509.592585089141 L 342.4 -501.592585089141 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 334.4 -501.592585089141 L 334.4 -509.592585089141 L 342.4 -509.592585089141 L 342.4 -501.592585089141 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip16);"> + <path d="M 372.8 -495.63708383981634 L 372.8 -503.63708383981634 L 380.8 -503.63708383981634 L 380.8 -495.63708383981634 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 372.8 -495.63708383981634 L 372.8 -503.63708383981634 L 380.8 -503.63708383981634 L 380.8 -495.63708383981634 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip17);"> + <path d="M 411.2 -489.61751249324686 L 411.2 -497.61751249324686 L 419.2 -497.61751249324686 L 419.2 -489.61751249324686 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 411.2 -489.61751249324686 L 411.2 -497.61751249324686 L 419.2 -497.61751249324686 L 419.2 -489.61751249324686 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip18);"> + <path d="M 449.6 -484.1618044300378 L 449.6 -492.1618044300378 L 457.6 -492.1618044300378 L 457.6 -484.1618044300378 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 449.6 -484.1618044300378 L 449.6 -492.1618044300378 L 457.6 -492.1618044300378 L 457.6 -484.1618044300378 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip19);"> + <path d="M 488.0 -478.3941028498109 L 488.0 -486.3941028498109 L 496.0 -486.3941028498109 L 496.0 -478.3941028498109 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 488.0 -478.3941028498109 L 488.0 -486.3941028498109 L 496.0 -486.3941028498109 L 496.0 -478.3941028498109 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip20);"> + <path d="M 526.4 -479.7713778025392 L 526.4 -487.7713778025392 L 534.4 -487.7713778025392 L 534.4 -479.7713778025392 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 526.4 -479.7713778025392 L 526.4 -487.7713778025392 L 534.4 -487.7713778025392 L 534.4 -479.7713778025392 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip21);"> + <path d="M 564.8 -479.26578116558613 L 564.8 -487.26578116558613 L 572.8 -487.26578116558613 L 572.8 -479.26578116558613 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 564.8 -479.26578116558613 L 564.8 -487.26578116558613 L 572.8 -487.26578116558613 L 572.8 -479.26578116558613 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip22);"> + <path d="M 603.2 -477.16911044705563 L 603.2 -485.16911044705563 L 611.2 -485.16911044705563 L 611.2 -477.16911044705563 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 603.2 -477.16911044705563 L 603.2 -485.16911044705563 L 611.2 -485.16911044705563 L 611.2 -477.16911044705563 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip23);"> + <path d="M 641.6 -477.08716572123177 L 641.6 -485.08716572123177 L 649.6 -485.08716572123177 L 649.6 -477.08716572123177 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 641.6 -477.08716572123177 L 641.6 -485.08716572123177 L 649.6 -485.08716572123177 L 649.6 -477.08716572123177 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip24);"> + <path d="M 680.0 -475.29784575904915 L 680.0 -483.29784575904915 L 688.0 -483.29784575904915 L 688.0 -475.29784575904915 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 680.0 -475.29784575904915 L 680.0 -483.29784575904915 L 688.0 -483.29784575904915 L 688.0 -475.29784575904915 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip25);"> + <path d="M 338.4 -449.58069540113456 L 376.8 -450.22928906672064 L 415.2 -446.89439407752565 L 453.6 -445.21325043895195 L 492.0 -446.6436850013506 L 530.4 -447.24422609400324 L 568.8 -445.75668557536466 L 607.2 -446.09073220556456 L 645.6 -446.40458282685034 L 684.0 -447.38931236493784" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip26);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip27);"> + <path d="M 330.4 -441.58069540113456 L 330.4 -457.58069540113456 L 346.4 -457.58069540113456 L 346.4 -441.58069540113456 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -449.58069540113456 M 342.4 -449.58069540113456 L 342.4 -449.581 M 342.4 -449.581 A 4 4 0 1 0 334.4 -449.581 A 4 4 0 1 0 342.4 -449.581 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip28);"> + <path d="M 368.8 -442.22928906672064 L 368.8 -458.22928906672064 L 384.8 -458.22928906672064 L 384.8 -442.22928906672064 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -450.22928906672064 M 380.8 -450.22928906672064 L 380.8 -450.229 M 380.8 -450.229 A 4 4 0 1 0 372.8 -450.229 A 4 4 0 1 0 380.8 -450.229 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip29);"> + <path d="M 407.2 -438.89439407752565 L 407.2 -454.89439407752565 L 423.2 -454.89439407752565 L 423.2 -438.89439407752565 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -446.89439407752565 M 419.2 -446.89439407752565 L 419.2 -446.894 M 419.2 -446.894 A 4 4 0 1 0 411.2 -446.894 A 4 4 0 1 0 419.2 -446.894 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip30);"> + <path d="M 445.6 -437.21325043895195 L 445.6 -453.21325043895195 L 461.6 -453.21325043895195 L 461.6 -437.21325043895195 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -445.21325043895195 M 457.6 -445.21325043895195 L 457.6 -445.213 M 457.6 -445.213 A 4 4 0 1 0 449.6 -445.213 A 4 4 0 1 0 457.6 -445.213 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip31);"> + <path d="M 484.0 -438.6436850013506 L 484.0 -454.6436850013506 L 500.0 -454.6436850013506 L 500.0 -438.6436850013506 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -446.6436850013506 M 496.0 -446.6436850013506 L 496 -446.644 M 496 -446.644 A 4 4 0 1 0 488 -446.644 A 4 4 0 1 0 496 -446.644 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip32);"> + <path d="M 522.4 -439.24422609400324 L 522.4 -455.24422609400324 L 538.4 -455.24422609400324 L 538.4 -439.24422609400324 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -447.24422609400324 M 534.4 -447.24422609400324 L 534.4 -447.244 M 534.4 -447.244 A 4 4 0 1 0 526.4 -447.244 A 4 4 0 1 0 534.4 -447.244 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip33);"> + <path d="M 560.8 -437.75668557536466 L 560.8 -453.75668557536466 L 576.8 -453.75668557536466 L 576.8 -437.75668557536466 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -445.75668557536466 M 572.8 -445.75668557536466 L 572.8 -445.757 M 572.8 -445.757 A 4 4 0 1 0 564.8 -445.757 A 4 4 0 1 0 572.8 -445.757 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip34);"> + <path d="M 599.2 -438.09073220556456 L 599.2 -454.09073220556456 L 615.2 -454.09073220556456 L 615.2 -438.09073220556456 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -446.09073220556456 M 611.2 -446.09073220556456 L 611.2 -446.091 M 611.2 -446.091 A 4 4 0 1 0 603.2 -446.091 A 4 4 0 1 0 611.2 -446.091 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip35);"> + <path d="M 637.6 -438.40458282685034 L 637.6 -454.40458282685034 L 653.6 -454.40458282685034 L 653.6 -438.40458282685034 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -446.40458282685034 M 649.6 -446.40458282685034 L 649.6 -446.405 M 649.6 -446.405 A 4 4 0 1 0 641.6 -446.405 A 4 4 0 1 0 649.6 -446.405 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip36);"> + <path d="M 676.0 -439.38931236493784 L 676.0 -455.38931236493784 L 692.0 -455.38931236493784 L 692.0 -439.38931236493784 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -447.38931236493784 M 688.0 -447.38931236493784 L 688 -447.389 M 688 -447.389 A 4 4 0 1 0 680 -447.389 A 4 4 0 1 0 688 -447.389 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip37);"> + <path d="M 338.4 -441.01665906942196 L 376.8 -441.36695536196646 L 415.2 -440.65568442733655 L 453.6 -440.8198060170178 L 492.0 -440.96187449351703 L 530.4 -442.1666708873582 L 568.8 -441.3024209886548 L 607.2 -441.1489777485143 L 645.6 -441.4024724810913 L 684.0 -441.24810068881686" style="stroke:rgb(137,42,226);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip38);"> + <path d="M 331.25714285714287 -441.01665906942196 L 345.54285714285714 -441.01665906942196" style="stroke-width:1;"/> + <path d="M 338.4 -433.8738019265648 L 338.4 -448.1595162122791" style="stroke-width:1;"/> + <path d="M 369.65714285714284 -441.36695536196646 L 383.9428571428571 -441.36695536196646" style="stroke-width:1;"/> + <path d="M 376.8 -434.22409821910935 L 376.8 -448.5098125048236" style="stroke-width:1;"/> + <path d="M 408.0571428571429 -440.65568442733655 L 422.34285714285716 -440.65568442733655" style="stroke-width:1;"/> + <path d="M 415.2 -433.5128272844794 L 415.2 -447.7985415701937" style="stroke-width:1;"/> + <path d="M 446.45714285714286 -440.8198060170178 L 460.74285714285713 -440.8198060170178" style="stroke-width:1;"/> + <path d="M 453.6 -433.67694887416064 L 453.6 -447.962663159875" style="stroke-width:1;"/> + <path d="M 484.8571428571429 -440.96187449351703 L 499.1428571428571 -440.96187449351703" style="stroke-width:1;"/> + <path d="M 492.0 -433.81901735065986 L 492.0 -448.10473163637414" style="stroke-width:1;"/> + <path d="M 523.2571428571429 -442.1666708873582 L 537.5428571428572 -442.1666708873582" style="stroke-width:1;"/> + <path d="M 530.4 -435.023813744501 L 530.4 -449.30952803021535" style="stroke-width:1;"/> + <path d="M 561.6571428571428 -441.3024209886548 L 575.9428571428572 -441.3024209886548" style="stroke-width:1;"/> + <path d="M 568.8 -434.1595638457976 L 568.8 -448.44527813151194" style="stroke-width:1;"/> + <path d="M 600.0571428571428 -441.1489777485143 L 614.3428571428572 -441.1489777485143" style="stroke-width:1;"/> + <path d="M 607.2 -434.0061206056572 L 607.2 -448.2918348913714" style="stroke-width:1;"/> + <path d="M 638.4571428571428 -441.4024724810913 L 652.7428571428572 -441.4024724810913" style="stroke-width:1;"/> + <path d="M 645.6 -434.25961533823414 L 645.6 -448.5453296239484" style="stroke-width:1;"/> + <path d="M 676.8571428571429 -441.24810068881686 L 691.1428571428571 -441.24810068881686" style="stroke-width:1;"/> + <path d="M 684.0 -434.1052435459597 L 684.0 -448.390957831674" style="stroke-width:1;"/> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip39);"> + <path d="M 290 -114 L 290 -188 L 324 -188 L 324 -114 Z" style="stroke:none;"/> + </g> + <path d="M 300 -178.66666666666669 L 314 -178.66666666666669" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip40);"> + <path d="M 299.0 -170.66666666666669 L 299.0 -186.66666666666669 L 315.0 -186.66666666666669 L 315.0 -170.66666666666669 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -178.66666666666669 M 311.0 -178.66666666666669 L 311 -178.667 M 311 -178.667 A 4 4 0 1 0 303 -178.667 A 4 4 0 1 0 311 -178.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-174.0"> + n_pq_deque + </text> + <path d="M 300 -160.66666666666666 L 314 -160.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip41);"> + <path d="M 303.0 -156.66666666666666 L 303.0 -164.66666666666666 L 311.0 -164.66666666666666 L 311.0 -156.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 303.0 -156.66666666666666 L 303.0 -164.66666666666666 L 311.0 -164.66666666666666 L 311.0 -156.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-156.0"> + n_pq_vector + </text> + <path d="M 300 -142.66666666666666 L 314 -142.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip42);"> + <path d="M 299.0 -134.66666666666666 L 299.0 -150.66666666666666 L 315.0 -150.66666666666666 L 315.0 -134.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -142.66666666666666 M 311.0 -142.66666666666666 L 311 -142.667 M 311 -142.667 A 4 4 0 1 0 303 -142.667 A 4 4 0 1 0 311 -142.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-138.0"> + thin_heap + </text> + <path d="M 300 -124.66666666666666 L 314 -124.66666666666666" style="stroke:rgb(137,42,226);stroke-width:2;"/> + <path d="M 299.85714285714283 -124.66666666666666 L 314.14285714285717 -124.66666666666666" style="stroke-width:1;"/> + <path d="M 307.0 -117.52380952380952 L 307.0 -131.8095238095238" style="stroke-width:1;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-120.0"> + pairing_heap + </text> + </g> + </g> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/pat_trie.png b/libstdc++-v3/doc/xml/images/pbds_pat_trie.png Binary files differindex e7129a1a67b..e7129a1a67b 100644 --- a/libstdc++-v3/doc/html/ext/pb_ds/pat_trie.png +++ b/libstdc++-v3/doc/xml/images/pbds_pat_trie.png diff --git a/libstdc++-v3/doc/html/ext/pb_ds/point_iterators_cd.png b/libstdc++-v3/doc/xml/images/pbds_point_iterator_hierarchy.png Binary files differindex 25a69fc6e8b..25a69fc6e8b 100644 --- a/libstdc++-v3/doc/html/ext/pb_ds/point_iterators_cd.png +++ b/libstdc++-v3/doc/xml/images/pbds_point_iterator_hierarchy.png diff --git a/libstdc++-v3/doc/html/ext/pb_ds/point_iterators_range_ops_1.png b/libstdc++-v3/doc/xml/images/pbds_point_iterators_range_ops_1.png Binary files differindex c5bc8e5d6c0..c5bc8e5d6c0 100644 --- a/libstdc++-v3/doc/html/ext/pb_ds/point_iterators_range_ops_1.png +++ b/libstdc++-v3/doc/xml/images/pbds_point_iterators_range_ops_1.png diff --git a/libstdc++-v3/doc/html/ext/pb_ds/point_iterators_range_ops_2.png b/libstdc++-v3/doc/xml/images/pbds_point_iterators_range_ops_2.png Binary files differindex c3f94ee93bc..c3f94ee93bc 100644 --- a/libstdc++-v3/doc/html/ext/pb_ds/point_iterators_range_ops_2.png +++ b/libstdc++-v3/doc/xml/images/pbds_point_iterators_range_ops_2.png diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_different_underlying_dss.png b/libstdc++-v3/doc/xml/images/pbds_priority_queue_different_underlying_dss.png Binary files differnew file mode 100644 index 00000000000..9d84791fc0d --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_different_underlying_dss.png diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_random_int_push_pop_timing_test_local.pdf b/libstdc++-v3/doc/xml/images/pbds_priority_queue_random_int_push_pop_timing_test_local.pdf Binary files differnew file mode 100644 index 00000000000..e7f1987665f --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_random_int_push_pop_timing_test_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_random_int_push_pop_timing_test_local.png b/libstdc++-v3/doc/xml/images/pbds_priority_queue_random_int_push_pop_timing_test_local.png Binary files differnew file mode 100644 index 00000000000..fee52420eb8 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_random_int_push_pop_timing_test_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_random_int_push_pop_timing_test_local.svg b/libstdc++-v3/doc/xml/images/pbds_priority_queue_random_int_push_pop_timing_test_local.svg new file mode 100644 index 00000000000..dbe8258059a --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_random_int_push_pop_timing_test_local.svg @@ -0,0 +1,825 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 496.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 338.4 -321.02504776119406 L 332.15 -331.02504776119406 L 344.65 -331.02504776119406 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 376.8 -343.4118208955224 L 370.55 -353.4118208955224 L 383.05 -353.4118208955224 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 415.2 -364.1597910447761 L 408.95 -374.1597910447761 L 421.45 -374.1597910447761 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 453.6 -387.35074626865674 L 447.35 -397.35074626865674 L 459.85 -397.35074626865674 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 492.0 -411.7497313432836 L 485.75 -421.7497313432836 L 498.25 -421.7497313432836 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 530.4 -433.88895522388054 L 524.15 -443.88895522388054 L 536.65 -443.88895522388054 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 568.8 -456.57292537313435 L 562.55 -466.57292537313435 L 575.05 -466.57292537313435 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 607.2 -475.0210746268657 L 600.95 -485.0210746268657 L 613.45 -485.0210746268657 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 645.6 -489.582776119403 L 639.35 -499.582776119403 L 651.85 -499.582776119403 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 684.0 -515.0 L 677.75 -525.0 L 690.25 -525.0 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 338.4 -306.26225074626865 M 342.4 -306.26225074626865 L 342.4 -306.262 M 342.4 -306.262 A 4 4 0 1 0 334.4 -306.262 A 4 4 0 1 0 342.4 -306.262 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 376.8 -306.9955074626866 M 380.8 -306.9955074626866 L 380.8 -306.996 M 380.8 -306.996 A 4 4 0 1 0 372.8 -306.996 A 4 4 0 1 0 380.8 -306.996 Z"/> + </clipPath> + <clipPath id="clip17"> + <path d="M 415.2 -307.3151313432836 M 419.2 -307.3151313432836 L 419.2 -307.315 M 419.2 -307.315 A 4 4 0 1 0 411.2 -307.315 A 4 4 0 1 0 419.2 -307.315 Z"/> + </clipPath> + <clipPath id="clip18"> + <path d="M 453.6 -307.47221791044774 M 457.6 -307.47221791044774 L 457.6 -307.472 M 457.6 -307.472 A 4 4 0 1 0 449.6 -307.472 A 4 4 0 1 0 457.6 -307.472 Z"/> + </clipPath> + <clipPath id="clip19"> + <path d="M 492.0 -307.7432776119403 M 496.0 -307.7432776119403 L 496 -307.743 M 496 -307.743 A 4 4 0 1 0 488 -307.743 A 4 4 0 1 0 496 -307.743 Z"/> + </clipPath> + <clipPath id="clip20"> + <path d="M 530.4 -307.7981462686567 M 534.4 -307.7981462686567 L 534.4 -307.798 M 534.4 -307.798 A 4 4 0 1 0 526.4 -307.798 A 4 4 0 1 0 534.4 -307.798 Z"/> + </clipPath> + <clipPath id="clip21"> + <path d="M 568.8 -308.05111343283585 M 572.8 -308.05111343283585 L 572.8 -308.051 M 572.8 -308.051 A 4 4 0 1 0 564.8 -308.051 A 4 4 0 1 0 572.8 -308.051 Z"/> + </clipPath> + <clipPath id="clip22"> + <path d="M 607.2 -308.14745373134326 M 611.2 -308.14745373134326 L 611.2 -308.147 M 611.2 -308.147 A 4 4 0 1 0 603.2 -308.147 A 4 4 0 1 0 611.2 -308.147 Z"/> + </clipPath> + <clipPath id="clip23"> + <path d="M 645.6 -308.2637253731343 M 649.6 -308.2637253731343 L 649.6 -308.264 M 649.6 -308.264 A 4 4 0 1 0 641.6 -308.264 A 4 4 0 1 0 649.6 -308.264 Z"/> + </clipPath> + <clipPath id="clip24"> + <path d="M 684.0 -308.52375223880597 M 688.0 -308.52375223880597 L 688 -308.524 M 688 -308.524 A 4 4 0 1 0 680 -308.524 A 4 4 0 1 0 688 -308.524 Z"/> + </clipPath> + <clipPath id="clip25"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip26"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip27"> + <path d="M 331.25714285714287 -305.86119402985076 L 338.4 -313.0040511727079 L 345.54285714285714 -305.86119402985076 L 338.4 -298.7183368869936 Z"/> + </clipPath> + <clipPath id="clip28"> + <path d="M 369.65714285714284 -306.49853731343285 L 376.8 -313.64139445628996 L 383.9428571428571 -306.49853731343285 L 376.8 -299.3556801705757 Z"/> + </clipPath> + <clipPath id="clip29"> + <path d="M 408.0571428571429 -306.9167671641791 L 415.2 -314.05962430703624 L 422.34285714285716 -306.9167671641791 L 415.2 -299.77391002132197 Z"/> + </clipPath> + <clipPath id="clip30"> + <path d="M 446.45714285714286 -307.2293313432836 L 453.6 -314.3721884861407 L 460.74285714285713 -307.2293313432836 L 453.6 -300.08647420042644 Z"/> + </clipPath> + <clipPath id="clip31"> + <path d="M 484.8571428571429 -307.4307462686567 L 492.0 -314.5736034115139 L 499.1428571428571 -307.4307462686567 L 492.0 -300.28788912579955 Z"/> + </clipPath> + <clipPath id="clip32"> + <path d="M 523.2571428571429 -307.74285074626863 L 530.4 -314.8857078891258 L 537.5428571428572 -307.74285074626863 L 530.4 -300.5999936034115 Z"/> + </clipPath> + <clipPath id="clip33"> + <path d="M 561.6571428571428 -307.778576119403 L 568.8 -314.9214332622601 L 575.9428571428572 -307.778576119403 L 568.8 -300.63571897654583 Z"/> + </clipPath> + <clipPath id="clip34"> + <path d="M 600.0571428571428 -307.9134 L 607.2 -315.05625714285713 L 614.3428571428572 -307.9134 L 607.2 -300.77054285714286 Z"/> + </clipPath> + <clipPath id="clip35"> + <path d="M 638.4571428571428 -308.0873313432836 L 645.6 -315.2301884861407 L 652.7428571428572 -308.0873313432836 L 645.6 -300.94447420042644 Z"/> + </clipPath> + <clipPath id="clip36"> + <path d="M 676.8571428571429 -308.1681074626866 L 684.0 -315.3109646055437 L 691.1428571428571 -308.1681074626866 L 684.0 -301.0252503198294 Z"/> + </clipPath> + <clipPath id="clip37"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip38"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip39"> + <path d="M 332.15 -300.20549552238805 L 344.65 -300.20549552238805 L 338.4 -310.20549552238805 Z"/> + </clipPath> + <clipPath id="clip40"> + <path d="M 370.55 -301.03282686567167 L 383.05 -301.03282686567167 L 376.8 -311.03282686567167 Z"/> + </clipPath> + <clipPath id="clip41"> + <path d="M 408.95 -301.3192208955224 L 421.45 -301.3192208955224 L 415.2 -311.3192208955224 Z"/> + </clipPath> + <clipPath id="clip42"> + <path d="M 447.35 -301.5062537313433 L 459.85 -301.5062537313433 L 453.6 -311.5062537313433 Z"/> + </clipPath> + <clipPath id="clip43"> + <path d="M 485.75 -301.6776895522388 L 498.25 -301.6776895522388 L 492.0 -311.6776895522388 Z"/> + </clipPath> + <clipPath id="clip44"> + <path d="M 524.15 -301.90097313432835 L 536.65 -301.90097313432835 L 530.4 -311.90097313432835 Z"/> + </clipPath> + <clipPath id="clip45"> + <path d="M 562.55 -302.04771641791046 L 575.05 -302.04771641791046 L 568.8 -312.04771641791046 Z"/> + </clipPath> + <clipPath id="clip46"> + <path d="M 600.95 -301.84078507462687 L 613.45 -301.84078507462687 L 607.2 -311.84078507462687 Z"/> + </clipPath> + <clipPath id="clip47"> + <path d="M 639.35 -302.10731343283584 L 651.85 -302.10731343283584 L 645.6 -312.10731343283584 Z"/> + </clipPath> + <clipPath id="clip48"> + <path d="M 677.75 -302.334471641791 L 690.25 -302.334471641791 L 684.0 -312.334471641791 Z"/> + </clipPath> + <clipPath id="clip49"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip50"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip51"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip52"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip53"> + <path d="M 338.4 -303.04280358208956 M 342.4 -303.04280358208956 L 342.4 -303.043 M 342.4 -303.043 A 4 4 0 1 0 334.4 -303.043 A 4 4 0 1 0 342.4 -303.043 Z"/> + </clipPath> + <clipPath id="clip54"> + <path d="M 376.8 -303.54012835820896 M 380.8 -303.54012835820896 L 380.8 -303.54 M 380.8 -303.54 A 4 4 0 1 0 372.8 -303.54 A 4 4 0 1 0 380.8 -303.54 Z"/> + </clipPath> + <clipPath id="clip55"> + <path d="M 415.2 -303.8069194029851 M 419.2 -303.8069194029851 L 419.2 -303.807 M 419.2 -303.807 A 4 4 0 1 0 411.2 -303.807 A 4 4 0 1 0 419.2 -303.807 Z"/> + </clipPath> + <clipPath id="clip56"> + <path d="M 453.6 -304.06169253731343 M 457.6 -304.06169253731343 L 457.6 -304.062 M 457.6 -304.062 A 4 4 0 1 0 449.6 -304.062 A 4 4 0 1 0 457.6 -304.062 Z"/> + </clipPath> + <clipPath id="clip57"> + <path d="M 492.0 -304.2643880597015 M 496.0 -304.2643880597015 L 496 -304.264 M 496 -304.264 A 4 4 0 1 0 488 -304.264 A 4 4 0 1 0 496 -304.264 Z"/> + </clipPath> + <clipPath id="clip58"> + <path d="M 530.4 -304.34335820895524 M 534.4 -304.34335820895524 L 534.4 -304.343 M 534.4 -304.343 A 4 4 0 1 0 526.4 -304.343 A 4 4 0 1 0 534.4 -304.343 Z"/> + </clipPath> + <clipPath id="clip59"> + <path d="M 568.8 -304.491447761194 M 572.8 -304.491447761194 L 572.8 -304.491 M 572.8 -304.491 A 4 4 0 1 0 564.8 -304.491 A 4 4 0 1 0 572.8 -304.491 Z"/> + </clipPath> + <clipPath id="clip60"> + <path d="M 607.2 -304.52195223880597 M 611.2 -304.52195223880597 L 611.2 -304.522 M 611.2 -304.522 A 4 4 0 1 0 603.2 -304.522 A 4 4 0 1 0 611.2 -304.522 Z"/> + </clipPath> + <clipPath id="clip61"> + <path d="M 645.6 -304.63136119402986 M 649.6 -304.63136119402986 L 649.6 -304.631 M 649.6 -304.631 A 4 4 0 1 0 641.6 -304.631 A 4 4 0 1 0 649.6 -304.631 Z"/> + </clipPath> + <clipPath id="clip62"> + <path d="M 684.0 -304.7444149253731 M 688.0 -304.7444149253731 L 688 -304.744 M 688 -304.744 A 4 4 0 1 0 680 -304.744 A 4 4 0 1 0 688 -304.744 Z"/> + </clipPath> + <clipPath id="clip63"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip64"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip65"> + <path d="M 334.4 -298.0063671641791 L 334.4 -306.0063671641791 L 342.4 -306.0063671641791 L 342.4 -298.0063671641791 Z"/> + </clipPath> + <clipPath id="clip66"> + <path d="M 372.8 -298.26110417910445 L 372.8 -306.26110417910445 L 380.8 -306.26110417910445 L 380.8 -298.26110417910445 Z"/> + </clipPath> + <clipPath id="clip67"> + <path d="M 411.2 -298.29905910447764 L 411.2 -306.29905910447764 L 419.2 -306.29905910447764 L 419.2 -298.29905910447764 Z"/> + </clipPath> + <clipPath id="clip68"> + <path d="M 449.6 -298.39367552238804 L 449.6 -306.39367552238804 L 457.6 -306.39367552238804 L 457.6 -298.39367552238804 Z"/> + </clipPath> + <clipPath id="clip69"> + <path d="M 488.0 -298.4131307462687 L 488.0 -306.4131307462687 L 496.0 -306.4131307462687 L 496.0 -298.4131307462687 Z"/> + </clipPath> + <clipPath id="clip70"> + <path d="M 526.4 -298.47982686567167 L 526.4 -306.47982686567167 L 534.4 -306.47982686567167 L 534.4 -298.47982686567167 Z"/> + </clipPath> + <clipPath id="clip71"> + <path d="M 564.8 -298.5213182089552 L 564.8 -306.5213182089552 L 572.8 -306.5213182089552 L 572.8 -298.5213182089552 Z"/> + </clipPath> + <clipPath id="clip72"> + <path d="M 603.2 -298.5637913432836 L 603.2 -306.5637913432836 L 611.2 -306.5637913432836 L 611.2 -298.5637913432836 Z"/> + </clipPath> + <clipPath id="clip73"> + <path d="M 641.6 -298.5892029850746 L 641.6 -306.5892029850746 L 649.6 -306.5892029850746 L 649.6 -298.5892029850746 Z"/> + </clipPath> + <clipPath id="clip74"> + <path d="M 680.0 -298.62813970149256 L 680.0 -306.62813970149256 L 688.0 -306.62813970149256 L 688.0 -298.62813970149256 Z"/> + </clipPath> + <clipPath id="clip75"> + <path d="M 290 -54 L 290 -182 L 324 -182 L 324 -54 Z"/> + </clipPath> + <clipPath id="clip76"> + <path d="M 307.0 -167.66666666666669 L 300.75 -177.66666666666669 L 313.25 -177.66666666666669 Z"/> + </clipPath> + <clipPath id="clip77"> + <path d="M 307.0 -154.66666666666666 M 311.0 -154.66666666666666 L 311 -154.667 M 311 -154.667 A 4 4 0 1 0 303 -154.667 A 4 4 0 1 0 311 -154.667 Z"/> + </clipPath> + <clipPath id="clip78"> + <path d="M 299.85714285714283 -136.66666666666666 L 307.0 -143.8095238095238 L 314.14285714285717 -136.66666666666666 L 307.0 -129.52380952380952 Z"/> + </clipPath> + <clipPath id="clip79"> + <path d="M 300.75 -113.66666666666666 L 313.25 -113.66666666666666 L 307.0 -123.66666666666666 Z"/> + </clipPath> + <clipPath id="clip80"> + <path d="M 307.0 -82.66666666666666 M 311.0 -82.66666666666666 L 311 -82.6667 M 311 -82.6667 A 4 4 0 1 0 303 -82.6667 A 4 4 0 1 0 311 -82.6667 Z"/> + </clipPath> + <clipPath id="clip81"> + <path d="M 303.0 -60.66666666666666 L 303.0 -68.66666666666666 L 311.0 -68.66666666666666 L 311.0 -60.66666666666666 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 1.34e-06 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.5004867321942"> + 2.68e-06 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.50048673219425"> + 4.02e-06 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.5004867321942"> + 5.36e-06 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321942"> + 6.70e-06 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 338.4 -326.02504776119406 L 376.8 -348.4118208955224 L 415.2 -369.1597910447761 L 453.6 -392.35074626865674 L 492.0 -416.7497313432836 L 530.4 -438.88895522388054 L 568.8 -461.57292537313435 L 607.2 -480.0210746268657 L 645.6 -494.582776119403 L 684.0 -520.0" style="stroke:rgb(205,0,0);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip3);"> + <path d="M 332.15 -321.02504776119406 L 332.15 -331.02504776119406 L 344.65 -331.02504776119406 L 344.65 -321.02504776119406 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -321.02504776119406 L 332.15 -331.02504776119406 L 344.65 -331.02504776119406 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip4);"> + <path d="M 370.55 -343.4118208955224 L 370.55 -353.4118208955224 L 383.05 -353.4118208955224 L 383.05 -343.4118208955224 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -343.4118208955224 L 370.55 -353.4118208955224 L 383.05 -353.4118208955224 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 408.95 -364.1597910447761 L 408.95 -374.1597910447761 L 421.45 -374.1597910447761 L 421.45 -364.1597910447761 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -364.1597910447761 L 408.95 -374.1597910447761 L 421.45 -374.1597910447761 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 447.35 -387.35074626865674 L 447.35 -397.35074626865674 L 459.85 -397.35074626865674 L 459.85 -387.35074626865674 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -387.35074626865674 L 447.35 -397.35074626865674 L 459.85 -397.35074626865674 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 485.75 -411.7497313432836 L 485.75 -421.7497313432836 L 498.25 -421.7497313432836 L 498.25 -411.7497313432836 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -411.7497313432836 L 485.75 -421.7497313432836 L 498.25 -421.7497313432836 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 524.15 -433.88895522388054 L 524.15 -443.88895522388054 L 536.65 -443.88895522388054 L 536.65 -433.88895522388054 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -433.88895522388054 L 524.15 -443.88895522388054 L 536.65 -443.88895522388054 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 562.55 -456.57292537313435 L 562.55 -466.57292537313435 L 575.05 -466.57292537313435 L 575.05 -456.57292537313435 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -456.57292537313435 L 562.55 -466.57292537313435 L 575.05 -466.57292537313435 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip10);"> + <path d="M 600.95 -475.0210746268657 L 600.95 -485.0210746268657 L 613.45 -485.0210746268657 L 613.45 -475.0210746268657 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -475.0210746268657 L 600.95 -485.0210746268657 L 613.45 -485.0210746268657 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip11);"> + <path d="M 639.35 -489.582776119403 L 639.35 -499.582776119403 L 651.85 -499.582776119403 L 651.85 -489.582776119403 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -489.582776119403 L 639.35 -499.582776119403 L 651.85 -499.582776119403 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 677.75 -515.0 L 677.75 -525.0 L 690.25 -525.0 L 690.25 -515.0 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -515.0 L 677.75 -525.0 L 690.25 -525.0 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip13);"> + <path d="M 338.4 -306.26225074626865 L 376.8 -306.9955074626866 L 415.2 -307.3151313432836 L 453.6 -307.47221791044774 L 492.0 -307.7432776119403 L 530.4 -307.7981462686567 L 568.8 -308.05111343283585 L 607.2 -308.14745373134326 L 645.6 -308.2637253731343 L 684.0 -308.52375223880597" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip14);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip15);"> + <path d="M 330.4 -298.26225074626865 L 330.4 -314.26225074626865 L 346.4 -314.26225074626865 L 346.4 -298.26225074626865 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -306.26225074626865 M 342.4 -306.26225074626865 L 342.4 -306.262 M 342.4 -306.262 A 4 4 0 1 0 334.4 -306.262 A 4 4 0 1 0 342.4 -306.262 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip16);"> + <path d="M 368.8 -298.9955074626866 L 368.8 -314.9955074626866 L 384.8 -314.9955074626866 L 384.8 -298.9955074626866 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -306.9955074626866 M 380.8 -306.9955074626866 L 380.8 -306.996 M 380.8 -306.996 A 4 4 0 1 0 372.8 -306.996 A 4 4 0 1 0 380.8 -306.996 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip17);"> + <path d="M 407.2 -299.3151313432836 L 407.2 -315.3151313432836 L 423.2 -315.3151313432836 L 423.2 -299.3151313432836 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -307.3151313432836 M 419.2 -307.3151313432836 L 419.2 -307.315 M 419.2 -307.315 A 4 4 0 1 0 411.2 -307.315 A 4 4 0 1 0 419.2 -307.315 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip18);"> + <path d="M 445.6 -299.47221791044774 L 445.6 -315.47221791044774 L 461.6 -315.47221791044774 L 461.6 -299.47221791044774 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -307.47221791044774 M 457.6 -307.47221791044774 L 457.6 -307.472 M 457.6 -307.472 A 4 4 0 1 0 449.6 -307.472 A 4 4 0 1 0 457.6 -307.472 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip19);"> + <path d="M 484.0 -299.7432776119403 L 484.0 -315.7432776119403 L 500.0 -315.7432776119403 L 500.0 -299.7432776119403 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -307.7432776119403 M 496.0 -307.7432776119403 L 496 -307.743 M 496 -307.743 A 4 4 0 1 0 488 -307.743 A 4 4 0 1 0 496 -307.743 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip20);"> + <path d="M 522.4 -299.7981462686567 L 522.4 -315.7981462686567 L 538.4 -315.7981462686567 L 538.4 -299.7981462686567 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -307.7981462686567 M 534.4 -307.7981462686567 L 534.4 -307.798 M 534.4 -307.798 A 4 4 0 1 0 526.4 -307.798 A 4 4 0 1 0 534.4 -307.798 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip21);"> + <path d="M 560.8 -300.05111343283585 L 560.8 -316.0511134328358 L 576.8 -316.0511134328358 L 576.8 -300.05111343283585 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -308.05111343283585 M 572.8 -308.05111343283585 L 572.8 -308.051 M 572.8 -308.051 A 4 4 0 1 0 564.8 -308.051 A 4 4 0 1 0 572.8 -308.051 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip22);"> + <path d="M 599.2 -300.14745373134326 L 599.2 -316.14745373134326 L 615.2 -316.14745373134326 L 615.2 -300.14745373134326 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -308.14745373134326 M 611.2 -308.14745373134326 L 611.2 -308.147 M 611.2 -308.147 A 4 4 0 1 0 603.2 -308.147 A 4 4 0 1 0 611.2 -308.147 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip23);"> + <path d="M 637.6 -300.2637253731343 L 637.6 -316.2637253731343 L 653.6 -316.2637253731343 L 653.6 -300.2637253731343 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -308.2637253731343 M 649.6 -308.2637253731343 L 649.6 -308.264 M 649.6 -308.264 A 4 4 0 1 0 641.6 -308.264 A 4 4 0 1 0 649.6 -308.264 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip24);"> + <path d="M 676.0 -300.52375223880597 L 676.0 -316.52375223880597 L 692.0 -316.52375223880597 L 692.0 -300.52375223880597 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -308.52375223880597 M 688.0 -308.52375223880597 L 688 -308.524 M 688 -308.524 A 4 4 0 1 0 680 -308.524 A 4 4 0 1 0 688 -308.524 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip25);"> + <path d="M 338.4 -305.86119402985076 L 376.8 -306.49853731343285 L 415.2 -306.9167671641791 L 453.6 -307.2293313432836 L 492.0 -307.4307462686567 L 530.4 -307.74285074626863 L 568.8 -307.778576119403 L 607.2 -307.9134 L 645.6 -308.0873313432836 L 684.0 -308.1681074626866" style="stroke:rgb(126,126,126);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip26);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip27);"> + <path d="M 331.25714285714287 -298.7183368869936 L 331.25714285714287 -313.0040511727079 L 345.54285714285714 -313.0040511727079 L 345.54285714285714 -298.7183368869936 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 331.25714285714287 -305.86119402985076 L 338.4 -313.0040511727079 L 345.54285714285714 -305.86119402985076 L 338.4 -298.7183368869936 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip28);"> + <path d="M 369.65714285714284 -299.3556801705757 L 369.65714285714284 -313.64139445628996 L 383.9428571428571 -313.64139445628996 L 383.9428571428571 -299.3556801705757 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 369.65714285714284 -306.49853731343285 L 376.8 -313.64139445628996 L 383.9428571428571 -306.49853731343285 L 376.8 -299.3556801705757 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip29);"> + <path d="M 408.0571428571429 -299.77391002132197 L 408.0571428571429 -314.05962430703624 L 422.34285714285716 -314.05962430703624 L 422.34285714285716 -299.77391002132197 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 408.0571428571429 -306.9167671641791 L 415.2 -314.05962430703624 L 422.34285714285716 -306.9167671641791 L 415.2 -299.77391002132197 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip30);"> + <path d="M 446.45714285714286 -300.08647420042644 L 446.45714285714286 -314.3721884861407 L 460.74285714285713 -314.3721884861407 L 460.74285714285713 -300.08647420042644 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 446.45714285714286 -307.2293313432836 L 453.6 -314.3721884861407 L 460.74285714285713 -307.2293313432836 L 453.6 -300.08647420042644 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip31);"> + <path d="M 484.8571428571429 -300.28788912579955 L 484.8571428571429 -314.5736034115139 L 499.1428571428571 -314.5736034115139 L 499.1428571428571 -300.28788912579955 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 484.8571428571429 -307.4307462686567 L 492.0 -314.5736034115139 L 499.1428571428571 -307.4307462686567 L 492.0 -300.28788912579955 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip32);"> + <path d="M 523.2571428571429 -300.5999936034115 L 523.2571428571429 -314.8857078891258 L 537.5428571428572 -314.8857078891258 L 537.5428571428572 -300.5999936034115 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 523.2571428571429 -307.74285074626863 L 530.4 -314.8857078891258 L 537.5428571428572 -307.74285074626863 L 530.4 -300.5999936034115 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip33);"> + <path d="M 561.6571428571428 -300.63571897654583 L 561.6571428571428 -314.9214332622601 L 575.9428571428572 -314.9214332622601 L 575.9428571428572 -300.63571897654583 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 561.6571428571428 -307.778576119403 L 568.8 -314.9214332622601 L 575.9428571428572 -307.778576119403 L 568.8 -300.63571897654583 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip34);"> + <path d="M 600.0571428571428 -300.77054285714286 L 600.0571428571428 -315.05625714285713 L 614.3428571428572 -315.05625714285713 L 614.3428571428572 -300.77054285714286 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.0571428571428 -307.9134 L 607.2 -315.05625714285713 L 614.3428571428572 -307.9134 L 607.2 -300.77054285714286 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip35);"> + <path d="M 638.4571428571428 -300.94447420042644 L 638.4571428571428 -315.2301884861407 L 652.7428571428572 -315.2301884861407 L 652.7428571428572 -300.94447420042644 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 638.4571428571428 -308.0873313432836 L 645.6 -315.2301884861407 L 652.7428571428572 -308.0873313432836 L 645.6 -300.94447420042644 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip36);"> + <path d="M 676.8571428571429 -301.0252503198294 L 676.8571428571429 -315.3109646055437 L 691.1428571428571 -315.3109646055437 L 691.1428571428571 -301.0252503198294 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 676.8571428571429 -308.1681074626866 L 684.0 -315.3109646055437 L 691.1428571428571 -308.1681074626866 L 684.0 -301.0252503198294 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip37);"> + <path d="M 338.4 -305.20549552238805 L 376.8 -306.03282686567167 L 415.2 -306.3192208955224 L 453.6 -306.5062537313433 L 492.0 -306.6776895522388 L 530.4 -306.90097313432835 L 568.8 -307.04771641791046 L 607.2 -306.84078507462687 L 645.6 -307.10731343283584 L 684.0 -307.334471641791" style="stroke:rgb(147,147,147);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip38);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip39);"> + <path d="M 332.15 -300.20549552238805 L 332.15 -310.20549552238805 L 344.65 -310.20549552238805 L 344.65 -300.20549552238805 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 332.15 -300.20549552238805 L 344.65 -300.20549552238805 L 338.4 -310.20549552238805 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip40);"> + <path d="M 370.55 -301.03282686567167 L 370.55 -311.03282686567167 L 383.05 -311.03282686567167 L 383.05 -301.03282686567167 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 370.55 -301.03282686567167 L 383.05 -301.03282686567167 L 376.8 -311.03282686567167 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip41);"> + <path d="M 408.95 -301.3192208955224 L 408.95 -311.3192208955224 L 421.45 -311.3192208955224 L 421.45 -301.3192208955224 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 408.95 -301.3192208955224 L 421.45 -301.3192208955224 L 415.2 -311.3192208955224 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip42);"> + <path d="M 447.35 -301.5062537313433 L 447.35 -311.5062537313433 L 459.85 -311.5062537313433 L 459.85 -301.5062537313433 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 447.35 -301.5062537313433 L 459.85 -301.5062537313433 L 453.6 -311.5062537313433 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip43);"> + <path d="M 485.75 -301.6776895522388 L 485.75 -311.6776895522388 L 498.25 -311.6776895522388 L 498.25 -301.6776895522388 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 485.75 -301.6776895522388 L 498.25 -301.6776895522388 L 492.0 -311.6776895522388 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip44);"> + <path d="M 524.15 -301.90097313432835 L 524.15 -311.90097313432835 L 536.65 -311.90097313432835 L 536.65 -301.90097313432835 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 524.15 -301.90097313432835 L 536.65 -301.90097313432835 L 530.4 -311.90097313432835 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip45);"> + <path d="M 562.55 -302.04771641791046 L 562.55 -312.04771641791046 L 575.05 -312.04771641791046 L 575.05 -302.04771641791046 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 562.55 -302.04771641791046 L 575.05 -302.04771641791046 L 568.8 -312.04771641791046 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip46);"> + <path d="M 600.95 -301.84078507462687 L 600.95 -311.84078507462687 L 613.45 -311.84078507462687 L 613.45 -301.84078507462687 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.95 -301.84078507462687 L 613.45 -301.84078507462687 L 607.2 -311.84078507462687 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip47);"> + <path d="M 639.35 -302.10731343283584 L 639.35 -312.10731343283584 L 651.85 -312.10731343283584 L 651.85 -302.10731343283584 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 639.35 -302.10731343283584 L 651.85 -302.10731343283584 L 645.6 -312.10731343283584 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip48);"> + <path d="M 677.75 -302.334471641791 L 677.75 -312.334471641791 L 690.25 -312.334471641791 L 690.25 -302.334471641791 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 677.75 -302.334471641791 L 690.25 -302.334471641791 L 684.0 -312.334471641791 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip49);"> + <path d="M 338.4 -303.57917014925374 L 376.8 -304.0677014925373 L 415.2 -304.2686567164179 L 453.6 -304.5019552238806 L 492.0 -304.62623880597016 L 530.4 -304.7388985074627 L 568.8 -304.84902985074626 L 607.2 -304.90557313432834 L 645.6 -304.96733731343284 L 684.0 -305.0739552238806" style="stroke:rgb(137,42,226);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip50);"> + <path d="M 331.25714285714287 -303.57917014925374 L 345.54285714285714 -303.57917014925374" style="stroke-width:1;"/> + <path d="M 338.4 -296.4363130063966 L 338.4 -310.72202729211085" style="stroke-width:1;"/> + <path d="M 369.65714285714284 -304.0677014925373 L 383.9428571428571 -304.0677014925373" style="stroke-width:1;"/> + <path d="M 376.8 -296.92484434968014 L 376.8 -311.2105586353945" style="stroke-width:1;"/> + <path d="M 408.0571428571429 -304.2686567164179 L 422.34285714285716 -304.2686567164179" style="stroke-width:1;"/> + <path d="M 415.2 -297.12579957356076 L 415.2 -311.41151385927503" style="stroke-width:1;"/> + <path d="M 446.45714285714286 -304.5019552238806 L 460.74285714285713 -304.5019552238806" style="stroke-width:1;"/> + <path d="M 453.6 -297.35909808102343 L 453.6 -311.64481236673777" style="stroke-width:1;"/> + <path d="M 484.8571428571429 -304.62623880597016 L 499.1428571428571 -304.62623880597016" style="stroke-width:1;"/> + <path d="M 492.0 -297.483381663113 L 492.0 -311.76909594882727" style="stroke-width:1;"/> + <path d="M 523.2571428571429 -304.7388985074627 L 537.5428571428572 -304.7388985074627" style="stroke-width:1;"/> + <path d="M 530.4 -297.5960413646055 L 530.4 -311.8817556503198" style="stroke-width:1;"/> + <path d="M 561.6571428571428 -304.84902985074626 L 575.9428571428572 -304.84902985074626" style="stroke-width:1;"/> + <path d="M 568.8 -297.70617270788915 L 568.8 -311.99188699360343" style="stroke-width:1;"/> + <path d="M 600.0571428571428 -304.90557313432834 L 614.3428571428572 -304.90557313432834" style="stroke-width:1;"/> + <path d="M 607.2 -297.7627159914712 L 607.2 -312.0484302771855" style="stroke-width:1;"/> + <path d="M 638.4571428571428 -304.96733731343284 L 652.7428571428572 -304.96733731343284" style="stroke-width:1;"/> + <path d="M 645.6 -297.82448017057567 L 645.6 -312.11019445629" style="stroke-width:1;"/> + <path d="M 676.8571428571429 -305.0739552238806 L 691.1428571428571 -305.0739552238806" style="stroke-width:1;"/> + <path d="M 684.0 -297.93109808102344 L 684.0 -312.2168123667377" style="stroke-width:1;"/> + </g> + <g style="clip-path:url(#clip51);"> + <path d="M 338.4 -303.04280358208956 L 376.8 -303.54012835820896 L 415.2 -303.8069194029851 L 453.6 -304.06169253731343 L 492.0 -304.2643880597015 L 530.4 -304.34335820895524 L 568.8 -304.491447761194 L 607.2 -304.52195223880597 L 645.6 -304.63136119402986 L 684.0 -304.7444149253731" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip52);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip53);"> + <path d="M 330.4 -295.04280358208956 L 330.4 -311.04280358208956 L 346.4 -311.04280358208956 L 346.4 -295.04280358208956 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -303.04280358208956 M 342.4 -303.04280358208956 L 342.4 -303.043 M 342.4 -303.043 A 4 4 0 1 0 334.4 -303.043 A 4 4 0 1 0 342.4 -303.043 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip54);"> + <path d="M 368.8 -295.54012835820896 L 368.8 -311.54012835820896 L 384.8 -311.54012835820896 L 384.8 -295.54012835820896 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -303.54012835820896 M 380.8 -303.54012835820896 L 380.8 -303.54 M 380.8 -303.54 A 4 4 0 1 0 372.8 -303.54 A 4 4 0 1 0 380.8 -303.54 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip55);"> + <path d="M 407.2 -295.8069194029851 L 407.2 -311.8069194029851 L 423.2 -311.8069194029851 L 423.2 -295.8069194029851 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -303.8069194029851 M 419.2 -303.8069194029851 L 419.2 -303.807 M 419.2 -303.807 A 4 4 0 1 0 411.2 -303.807 A 4 4 0 1 0 419.2 -303.807 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip56);"> + <path d="M 445.6 -296.06169253731343 L 445.6 -312.06169253731343 L 461.6 -312.06169253731343 L 461.6 -296.06169253731343 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -304.06169253731343 M 457.6 -304.06169253731343 L 457.6 -304.062 M 457.6 -304.062 A 4 4 0 1 0 449.6 -304.062 A 4 4 0 1 0 457.6 -304.062 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip57);"> + <path d="M 484.0 -296.2643880597015 L 484.0 -312.2643880597015 L 500.0 -312.2643880597015 L 500.0 -296.2643880597015 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -304.2643880597015 M 496.0 -304.2643880597015 L 496 -304.264 M 496 -304.264 A 4 4 0 1 0 488 -304.264 A 4 4 0 1 0 496 -304.264 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip58);"> + <path d="M 522.4 -296.34335820895524 L 522.4 -312.34335820895524 L 538.4 -312.34335820895524 L 538.4 -296.34335820895524 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -304.34335820895524 M 534.4 -304.34335820895524 L 534.4 -304.343 M 534.4 -304.343 A 4 4 0 1 0 526.4 -304.343 A 4 4 0 1 0 534.4 -304.343 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip59);"> + <path d="M 560.8 -296.491447761194 L 560.8 -312.491447761194 L 576.8 -312.491447761194 L 576.8 -296.491447761194 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -304.491447761194 M 572.8 -304.491447761194 L 572.8 -304.491 M 572.8 -304.491 A 4 4 0 1 0 564.8 -304.491 A 4 4 0 1 0 572.8 -304.491 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip60);"> + <path d="M 599.2 -296.52195223880597 L 599.2 -312.52195223880597 L 615.2 -312.52195223880597 L 615.2 -296.52195223880597 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -304.52195223880597 M 611.2 -304.52195223880597 L 611.2 -304.522 M 611.2 -304.522 A 4 4 0 1 0 603.2 -304.522 A 4 4 0 1 0 611.2 -304.522 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip61);"> + <path d="M 637.6 -296.63136119402986 L 637.6 -312.63136119402986 L 653.6 -312.63136119402986 L 653.6 -296.63136119402986 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -304.63136119402986 M 649.6 -304.63136119402986 L 649.6 -304.631 M 649.6 -304.631 A 4 4 0 1 0 641.6 -304.631 A 4 4 0 1 0 649.6 -304.631 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip62);"> + <path d="M 676.0 -296.7444149253731 L 676.0 -312.7444149253731 L 692.0 -312.7444149253731 L 692.0 -296.7444149253731 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -304.7444149253731 M 688.0 -304.7444149253731 L 688 -304.744 M 688 -304.744 A 4 4 0 1 0 680 -304.744 A 4 4 0 1 0 688 -304.744 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip63);"> + <path d="M 338.4 -302.0063671641791 L 376.8 -302.26110417910445 L 415.2 -302.29905910447764 L 453.6 -302.39367552238804 L 492.0 -302.4131307462687 L 530.4 -302.47982686567167 L 568.8 -302.5213182089552 L 607.2 -302.5637913432836 L 645.6 -302.5892029850746 L 684.0 -302.62813970149256" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip64);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip65);"> + <path d="M 334.4 -298.0063671641791 L 334.4 -306.0063671641791 L 342.4 -306.0063671641791 L 342.4 -298.0063671641791 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 334.4 -298.0063671641791 L 334.4 -306.0063671641791 L 342.4 -306.0063671641791 L 342.4 -298.0063671641791 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip66);"> + <path d="M 372.8 -298.26110417910445 L 372.8 -306.26110417910445 L 380.8 -306.26110417910445 L 380.8 -298.26110417910445 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 372.8 -298.26110417910445 L 372.8 -306.26110417910445 L 380.8 -306.26110417910445 L 380.8 -298.26110417910445 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip67);"> + <path d="M 411.2 -298.29905910447764 L 411.2 -306.29905910447764 L 419.2 -306.29905910447764 L 419.2 -298.29905910447764 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 411.2 -298.29905910447764 L 411.2 -306.29905910447764 L 419.2 -306.29905910447764 L 419.2 -298.29905910447764 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip68);"> + <path d="M 449.6 -298.39367552238804 L 449.6 -306.39367552238804 L 457.6 -306.39367552238804 L 457.6 -298.39367552238804 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 449.6 -298.39367552238804 L 449.6 -306.39367552238804 L 457.6 -306.39367552238804 L 457.6 -298.39367552238804 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip69);"> + <path d="M 488.0 -298.4131307462687 L 488.0 -306.4131307462687 L 496.0 -306.4131307462687 L 496.0 -298.4131307462687 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 488.0 -298.4131307462687 L 488.0 -306.4131307462687 L 496.0 -306.4131307462687 L 496.0 -298.4131307462687 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip70);"> + <path d="M 526.4 -298.47982686567167 L 526.4 -306.47982686567167 L 534.4 -306.47982686567167 L 534.4 -298.47982686567167 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 526.4 -298.47982686567167 L 526.4 -306.47982686567167 L 534.4 -306.47982686567167 L 534.4 -298.47982686567167 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip71);"> + <path d="M 564.8 -298.5213182089552 L 564.8 -306.5213182089552 L 572.8 -306.5213182089552 L 572.8 -298.5213182089552 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 564.8 -298.5213182089552 L 564.8 -306.5213182089552 L 572.8 -306.5213182089552 L 572.8 -298.5213182089552 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip72);"> + <path d="M 603.2 -298.5637913432836 L 603.2 -306.5637913432836 L 611.2 -306.5637913432836 L 611.2 -298.5637913432836 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 603.2 -298.5637913432836 L 603.2 -306.5637913432836 L 611.2 -306.5637913432836 L 611.2 -298.5637913432836 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip73);"> + <path d="M 641.6 -298.5892029850746 L 641.6 -306.5892029850746 L 649.6 -306.5892029850746 L 649.6 -298.5892029850746 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 641.6 -298.5892029850746 L 641.6 -306.5892029850746 L 649.6 -306.5892029850746 L 649.6 -298.5892029850746 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip74);"> + <path d="M 680.0 -298.62813970149256 L 680.0 -306.62813970149256 L 688.0 -306.62813970149256 L 688.0 -298.62813970149256 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 680.0 -298.62813970149256 L 680.0 -306.62813970149256 L 688.0 -306.62813970149256 L 688.0 -298.62813970149256 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip75);"> + <path d="M 290 -54 L 290 -182 L 324 -182 L 324 -54 Z" style="stroke:none;"/> + </g> + <path d="M 300 -172.66666666666669 L 314 -172.66666666666669" style="stroke:rgb(205,0,0);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip76);"> + <path d="M 300.75 -167.66666666666669 L 300.75 -177.66666666666669 L 313.25 -177.66666666666669 L 313.25 -167.66666666666669 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -167.66666666666669 L 300.75 -177.66666666666669 L 313.25 -177.66666666666669 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-168.0"> + binary_heap + </text> + <path d="M 300 -154.66666666666666 L 314 -154.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip77);"> + <path d="M 299.0 -146.66666666666666 L 299.0 -162.66666666666666 L 315.0 -162.66666666666666 L 315.0 -146.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -154.66666666666666 M 311.0 -154.66666666666666 L 311 -154.667 M 311 -154.667 A 4 4 0 1 0 303 -154.667 A 4 4 0 1 0 311 -154.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-150.0"> + thin_heap + </text> + <path d="M 300 -136.66666666666666 L 314 -136.66666666666666" style="stroke:rgb(126,126,126);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip78);"> + <path d="M 299.85714285714283 -129.52380952380952 L 299.85714285714283 -143.8095238095238 L 314.14285714285717 -143.8095238095238 L 314.14285714285717 -129.52380952380952 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 299.85714285714283 -136.66666666666666 L 307.0 -143.8095238095238 L 314.14285714285717 -136.66666666666666 L 307.0 -129.52380952380952 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-132.0"> + rc_binomial_heap + </text> + <path d="M 300 -118.66666666666666 L 314 -118.66666666666666" style="stroke:rgb(147,147,147);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip79);"> + <path d="M 300.75 -113.66666666666666 L 300.75 -123.66666666666666 L 313.25 -123.66666666666666 L 313.25 -113.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 300.75 -113.66666666666666 L 313.25 -113.66666666666666 L 307.0 -123.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-114.0"> + binomial_heap + </text> + <path d="M 300 -100.66666666666666 L 314 -100.66666666666666" style="stroke:rgb(137,42,226);stroke-width:2;"/> + <path d="M 299.85714285714283 -100.66666666666666 L 314.14285714285717 -100.66666666666666" style="stroke-width:1;"/> + <path d="M 307.0 -93.52380952380952 L 307.0 -107.8095238095238" style="stroke-width:1;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-96.0"> + pairing_heap + </text> + <path d="M 300 -82.66666666666666 L 314 -82.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip80);"> + <path d="M 299.0 -74.66666666666666 L 299.0 -90.66666666666666 L 315.0 -90.66666666666666 L 315.0 -74.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -82.66666666666666 M 311.0 -82.66666666666666 L 311 -82.6667 M 311 -82.6667 A 4 4 0 1 0 303 -82.6667 A 4 4 0 1 0 311 -82.6667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-78.0"> + n_pq_deque + </text> + <path d="M 300 -64.66666666666666 L 314 -64.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip81);"> + <path d="M 303.0 -60.66666666666666 L 303.0 -68.66666666666666 L 311.0 -68.66666666666666 L 311.0 -60.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 303.0 -60.66666666666666 L 303.0 -68.66666666666666 L 311.0 -68.66666666666666 L 311.0 -60.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-60.0"> + n_pq_vector + </text> + </g> + </g> + </g> + </g> + </g> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_random_int_push_timing_test_local.pdf b/libstdc++-v3/doc/xml/images/pbds_priority_queue_random_int_push_timing_test_local.pdf Binary files differnew file mode 100644 index 00000000000..3807a726d8d --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_random_int_push_timing_test_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_random_int_push_timing_test_local.png b/libstdc++-v3/doc/xml/images/pbds_priority_queue_random_int_push_timing_test_local.png Binary files differnew file mode 100644 index 00000000000..337ff0b7583 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_random_int_push_timing_test_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_random_int_push_timing_test_local.svg b/libstdc++-v3/doc/xml/images/pbds_priority_queue_random_int_push_timing_test_local.svg new file mode 100644 index 00000000000..bc5456de84b --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_random_int_push_timing_test_local.svg @@ -0,0 +1,825 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 496.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 338.4 -318.3455791044776 L 332.15 -328.3455791044776 L 344.65 -328.3455791044776 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 376.8 -342.1489552238806 L 370.55 -352.1489552238806 L 383.05 -352.1489552238806 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 415.2 -363.5792537313433 L 408.95 -373.5792537313433 L 421.45 -373.5792537313433 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 453.6 -382.68641791044774 L 447.35 -392.68641791044774 L 459.85 -392.68641791044774 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 492.0 -407.67185074626866 L 485.75 -417.67185074626866 L 498.25 -417.67185074626866 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 530.4 -430.44776119402985 L 524.15 -440.44776119402985 L 536.65 -440.44776119402985 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 568.8 -453.8429552238806 L 562.55 -463.8429552238806 L 575.05 -463.8429552238806 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 607.2 -475.14092537313434 L 600.95 -485.14092537313434 L 613.45 -485.14092537313434 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 645.6 -495.07489552238803 L 639.35 -505.07489552238803 L 651.85 -505.07489552238803 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 684.0 -515.0 L 677.75 -525.0 L 690.25 -525.0 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 331.25714285714287 -301.96629432835823 L 338.4 -309.10915147121534 L 345.54285714285714 -301.96629432835823 L 338.4 -294.82343718550106 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 369.65714285714284 -302.04598029850746 L 376.8 -309.1888374413646 L 383.9428571428571 -302.04598029850746 L 376.8 -294.9031231556503 Z"/> + </clipPath> + <clipPath id="clip17"> + <path d="M 408.0571428571429 -302.0232644776119 L 415.2 -309.1661216204691 L 422.34285714285716 -302.0232644776119 L 415.2 -294.8804073347548 Z"/> + </clipPath> + <clipPath id="clip18"> + <path d="M 446.45714285714286 -302.071336119403 L 453.6 -309.21419326226015 L 460.74285714285713 -302.071336119403 L 453.6 -294.9284789765458 Z"/> + </clipPath> + <clipPath id="clip19"> + <path d="M 484.8571428571429 -302.05835611940296 L 492.0 -309.2012132622601 L 499.1428571428571 -302.05835611940296 L 492.0 -294.91549897654585 Z"/> + </clipPath> + <clipPath id="clip20"> + <path d="M 523.2571428571429 -302.03932119402987 L 530.4 -309.182178336887 L 537.5428571428572 -302.03932119402987 L 530.4 -294.8964640511727 Z"/> + </clipPath> + <clipPath id="clip21"> + <path d="M 561.6571428571428 -302.0327408955224 L 568.8 -309.1755980383795 L 575.9428571428572 -302.0327408955224 L 568.8 -294.88988375266524 Z"/> + </clipPath> + <clipPath id="clip22"> + <path d="M 600.0571428571428 -302.07033462686564 L 607.2 -309.2131917697228 L 614.3428571428572 -302.07033462686564 L 607.2 -294.92747748400853 Z"/> + </clipPath> + <clipPath id="clip23"> + <path d="M 638.4571428571428 -302.04808835820893 L 645.6 -309.1909455010661 L 652.7428571428572 -302.04808835820893 L 645.6 -294.9052312153518 Z"/> + </clipPath> + <clipPath id="clip24"> + <path d="M 676.8571428571429 -302.0746919402985 L 684.0 -309.21754908315563 L 691.1428571428571 -302.0746919402985 L 684.0 -294.93183479744135 Z"/> + </clipPath> + <clipPath id="clip25"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip26"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip27"> + <path d="M 332.15 -296.71984507462685 L 344.65 -296.71984507462685 L 338.4 -306.71984507462685 Z"/> + </clipPath> + <clipPath id="clip28"> + <path d="M 370.55 -296.76312925373134 L 383.05 -296.76312925373134 L 376.8 -306.76312925373134 Z"/> + </clipPath> + <clipPath id="clip29"> + <path d="M 408.95 -296.79417880597015 L 421.45 -296.79417880597015 L 415.2 -306.79417880597015 Z"/> + </clipPath> + <clipPath id="clip30"> + <path d="M 447.35 -296.79663164179107 L 459.85 -296.79663164179107 L 453.6 -306.79663164179107 Z"/> + </clipPath> + <clipPath id="clip31"> + <path d="M 485.75 -296.81042268656716 L 498.25 -296.81042268656716 L 492.0 -306.81042268656716 Z"/> + </clipPath> + <clipPath id="clip32"> + <path d="M 524.15 -296.80513611940296 L 536.65 -296.80513611940296 L 530.4 -306.80513611940296 Z"/> + </clipPath> + <clipPath id="clip33"> + <path d="M 562.55 -296.76347074626864 L 575.05 -296.76347074626864 L 568.8 -306.76347074626864 Z"/> + </clipPath> + <clipPath id="clip34"> + <path d="M 600.95 -296.7608241791045 L 613.45 -296.7608241791045 L 607.2 -306.7608241791045 Z"/> + </clipPath> + <clipPath id="clip35"> + <path d="M 639.35 -296.76252507462686 L 651.85 -296.76252507462686 L 645.6 -306.76252507462686 Z"/> + </clipPath> + <clipPath id="clip36"> + <path d="M 677.75 -296.76536537313433 L 690.25 -296.76536537313433 L 684.0 -306.76536537313433 Z"/> + </clipPath> + <clipPath id="clip37"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip38"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip39"> + <path d="M 338.4 -301.2547223880597 M 342.4 -301.2547223880597 L 342.4 -301.255 M 342.4 -301.255 A 4 4 0 1 0 334.4 -301.255 A 4 4 0 1 0 342.4 -301.255 Z"/> + </clipPath> + <clipPath id="clip40"> + <path d="M 376.8 -301.2413220895522 M 380.8 -301.2413220895522 L 380.8 -301.241 M 380.8 -301.241 A 4 4 0 1 0 372.8 -301.241 A 4 4 0 1 0 380.8 -301.241 Z"/> + </clipPath> + <clipPath id="clip41"> + <path d="M 415.2 -301.23162895522387 M 419.2 -301.23162895522387 L 419.2 -301.232 M 419.2 -301.232 A 4 4 0 1 0 411.2 -301.232 A 4 4 0 1 0 419.2 -301.232 Z"/> + </clipPath> + <clipPath id="clip42"> + <path d="M 453.6 -301.2340259701493 M 457.6 -301.2340259701493 L 457.6 -301.234 M 457.6 -301.234 A 4 4 0 1 0 449.6 -301.234 A 4 4 0 1 0 457.6 -301.234 Z"/> + </clipPath> + <clipPath id="clip43"> + <path d="M 492.0 -301.2247104477612 M 496.0 -301.2247104477612 L 496 -301.225 M 496 -301.225 A 4 4 0 1 0 488 -301.225 A 4 4 0 1 0 496 -301.225 Z"/> + </clipPath> + <clipPath id="clip44"> + <path d="M 530.4 -301.22501253731343 M 534.4 -301.22501253731343 L 534.4 -301.225 M 534.4 -301.225 A 4 4 0 1 0 526.4 -301.225 A 4 4 0 1 0 534.4 -301.225 Z"/> + </clipPath> + <clipPath id="clip45"> + <path d="M 568.8 -301.27027343283584 M 572.8 -301.27027343283584 L 572.8 -301.27 M 572.8 -301.27 A 4 4 0 1 0 564.8 -301.27 A 4 4 0 1 0 572.8 -301.27 Z"/> + </clipPath> + <clipPath id="clip46"> + <path d="M 607.2 -301.23494208955225 M 611.2 -301.23494208955225 L 611.2 -301.235 M 611.2 -301.235 A 4 4 0 1 0 603.2 -301.235 A 4 4 0 1 0 611.2 -301.235 Z"/> + </clipPath> + <clipPath id="clip47"> + <path d="M 645.6 -301.22821402985073 M 649.6 -301.22821402985073 L 649.6 -301.228 M 649.6 -301.228 A 4 4 0 1 0 641.6 -301.228 A 4 4 0 1 0 649.6 -301.228 Z"/> + </clipPath> + <clipPath id="clip48"> + <path d="M 684.0 -301.22880507462685 M 688.0 -301.22880507462685 L 688 -301.229 M 688 -301.229 A 4 4 0 1 0 680 -301.229 A 4 4 0 1 0 688 -301.229 Z"/> + </clipPath> + <clipPath id="clip49"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip50"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip51"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip52"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip53"> + <path d="M 338.4 -300.8645343283582 M 342.4 -300.8645343283582 L 342.4 -300.865 M 342.4 -300.865 A 4 4 0 1 0 334.4 -300.865 A 4 4 0 1 0 342.4 -300.865 Z"/> + </clipPath> + <clipPath id="clip54"> + <path d="M 376.8 -300.8930423880597 M 380.8 -300.8930423880597 L 380.8 -300.893 M 380.8 -300.893 A 4 4 0 1 0 372.8 -300.893 A 4 4 0 1 0 380.8 -300.893 Z"/> + </clipPath> + <clipPath id="clip55"> + <path d="M 415.2 -300.9157549253731 M 419.2 -300.9157549253731 L 419.2 -300.916 M 419.2 -300.916 A 4 4 0 1 0 411.2 -300.916 A 4 4 0 1 0 419.2 -300.916 Z"/> + </clipPath> + <clipPath id="clip56"> + <path d="M 453.6 -300.9447653731343 M 457.6 -300.9447653731343 L 457.6 -300.945 M 457.6 -300.945 A 4 4 0 1 0 449.6 -300.945 A 4 4 0 1 0 457.6 -300.945 Z"/> + </clipPath> + <clipPath id="clip57"> + <path d="M 492.0 -300.95871074626865 M 496.0 -300.95871074626865 L 496 -300.959 M 496 -300.959 A 4 4 0 1 0 488 -300.959 A 4 4 0 1 0 496 -300.959 Z"/> + </clipPath> + <clipPath id="clip58"> + <path d="M 530.4 -300.96553731343283 M 534.4 -300.96553731343283 L 534.4 -300.966 M 534.4 -300.966 A 4 4 0 1 0 526.4 -300.966 A 4 4 0 1 0 534.4 -300.966 Z"/> + </clipPath> + <clipPath id="clip59"> + <path d="M 568.8 -300.97034447761195 M 572.8 -300.97034447761195 L 572.8 -300.97 M 572.8 -300.97 A 4 4 0 1 0 564.8 -300.97 A 4 4 0 1 0 572.8 -300.97 Z"/> + </clipPath> + <clipPath id="clip60"> + <path d="M 607.2 -300.9836134328358 M 611.2 -300.9836134328358 L 611.2 -300.984 M 611.2 -300.984 A 4 4 0 1 0 603.2 -300.984 A 4 4 0 1 0 611.2 -300.984 Z"/> + </clipPath> + <clipPath id="clip61"> + <path d="M 645.6 -300.97012447761193 M 649.6 -300.97012447761193 L 649.6 -300.97 M 649.6 -300.97 A 4 4 0 1 0 641.6 -300.97 A 4 4 0 1 0 649.6 -300.97 Z"/> + </clipPath> + <clipPath id="clip62"> + <path d="M 684.0 -300.9824904477612 M 688.0 -300.9824904477612 L 688 -300.982 M 688 -300.982 A 4 4 0 1 0 680 -300.982 A 4 4 0 1 0 688 -300.982 Z"/> + </clipPath> + <clipPath id="clip63"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip64"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip65"> + <path d="M 334.4 -296.6776689552239 L 334.4 -304.6776689552239 L 342.4 -304.6776689552239 L 342.4 -296.6776689552239 Z"/> + </clipPath> + <clipPath id="clip66"> + <path d="M 372.8 -296.63155104477613 L 372.8 -304.63155104477613 L 380.8 -304.63155104477613 L 380.8 -296.63155104477613 Z"/> + </clipPath> + <clipPath id="clip67"> + <path d="M 411.2 -296.62003223880595 L 411.2 -304.62003223880595 L 419.2 -304.62003223880595 L 419.2 -296.62003223880595 Z"/> + </clipPath> + <clipPath id="clip68"> + <path d="M 449.6 -296.60298388059704 L 449.6 -304.60298388059704 L 457.6 -304.60298388059704 L 457.6 -296.60298388059704 Z"/> + </clipPath> + <clipPath id="clip69"> + <path d="M 488.0 -296.5816208955224 L 488.0 -304.5816208955224 L 496.0 -304.5816208955224 L 496.0 -296.5816208955224 Z"/> + </clipPath> + <clipPath id="clip70"> + <path d="M 526.4 -296.58382746268654 L 526.4 -304.58382746268654 L 534.4 -304.58382746268654 L 534.4 -296.58382746268654 Z"/> + </clipPath> + <clipPath id="clip71"> + <path d="M 564.8 -296.57985432835824 L 564.8 -304.57985432835824 L 572.8 -304.57985432835824 L 572.8 -296.57985432835824 Z"/> + </clipPath> + <clipPath id="clip72"> + <path d="M 603.2 -296.57130716417913 L 603.2 -304.57130716417913 L 611.2 -304.57130716417913 L 611.2 -296.57130716417913 Z"/> + </clipPath> + <clipPath id="clip73"> + <path d="M 641.6 -296.5609408955224 L 641.6 -304.5609408955224 L 649.6 -304.5609408955224 L 649.6 -296.5609408955224 Z"/> + </clipPath> + <clipPath id="clip74"> + <path d="M 680.0 -296.55760805970147 L 680.0 -304.55760805970147 L 688.0 -304.55760805970147 L 688.0 -296.55760805970147 Z"/> + </clipPath> + <clipPath id="clip75"> + <path d="M 290 -54 L 290 -182 L 324 -182 L 324 -54 Z"/> + </clipPath> + <clipPath id="clip76"> + <path d="M 307.0 -167.66666666666669 L 300.75 -177.66666666666669 L 313.25 -177.66666666666669 Z"/> + </clipPath> + <clipPath id="clip77"> + <path d="M 299.85714285714283 -154.66666666666666 L 307.0 -161.8095238095238 L 314.14285714285717 -154.66666666666666 L 307.0 -147.52380952380952 Z"/> + </clipPath> + <clipPath id="clip78"> + <path d="M 300.75 -131.66666666666666 L 313.25 -131.66666666666666 L 307.0 -141.66666666666666 Z"/> + </clipPath> + <clipPath id="clip79"> + <path d="M 307.0 -118.66666666666666 M 311.0 -118.66666666666666 L 311 -118.667 M 311 -118.667 A 4 4 0 1 0 303 -118.667 A 4 4 0 1 0 311 -118.667 Z"/> + </clipPath> + <clipPath id="clip80"> + <path d="M 307.0 -82.66666666666666 M 311.0 -82.66666666666666 L 311 -82.6667 M 311 -82.6667 A 4 4 0 1 0 303 -82.6667 A 4 4 0 1 0 311 -82.6667 Z"/> + </clipPath> + <clipPath id="clip81"> + <path d="M 303.0 -60.66666666666666 L 303.0 -68.66666666666666 L 311.0 -68.66666666666666 L 311.0 -60.66666666666666 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 1.34e-06 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.5004867321942"> + 2.68e-06 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.50048673219425"> + 4.02e-06 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.5004867321942"> + 5.36e-06 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321942"> + 6.70e-06 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 338.4 -323.3455791044776 L 376.8 -347.1489552238806 L 415.2 -368.5792537313433 L 453.6 -387.68641791044774 L 492.0 -412.67185074626866 L 530.4 -435.44776119402985 L 568.8 -458.8429552238806 L 607.2 -480.14092537313434 L 645.6 -500.07489552238803 L 684.0 -520.0" style="stroke:rgb(205,0,0);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip3);"> + <path d="M 332.15 -318.3455791044776 L 332.15 -328.3455791044776 L 344.65 -328.3455791044776 L 344.65 -318.3455791044776 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -318.3455791044776 L 332.15 -328.3455791044776 L 344.65 -328.3455791044776 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip4);"> + <path d="M 370.55 -342.1489552238806 L 370.55 -352.1489552238806 L 383.05 -352.1489552238806 L 383.05 -342.1489552238806 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -342.1489552238806 L 370.55 -352.1489552238806 L 383.05 -352.1489552238806 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 408.95 -363.5792537313433 L 408.95 -373.5792537313433 L 421.45 -373.5792537313433 L 421.45 -363.5792537313433 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -363.5792537313433 L 408.95 -373.5792537313433 L 421.45 -373.5792537313433 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 447.35 -382.68641791044774 L 447.35 -392.68641791044774 L 459.85 -392.68641791044774 L 459.85 -382.68641791044774 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -382.68641791044774 L 447.35 -392.68641791044774 L 459.85 -392.68641791044774 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 485.75 -407.67185074626866 L 485.75 -417.67185074626866 L 498.25 -417.67185074626866 L 498.25 -407.67185074626866 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -407.67185074626866 L 485.75 -417.67185074626866 L 498.25 -417.67185074626866 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 524.15 -430.44776119402985 L 524.15 -440.44776119402985 L 536.65 -440.44776119402985 L 536.65 -430.44776119402985 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -430.44776119402985 L 524.15 -440.44776119402985 L 536.65 -440.44776119402985 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 562.55 -453.8429552238806 L 562.55 -463.8429552238806 L 575.05 -463.8429552238806 L 575.05 -453.8429552238806 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -453.8429552238806 L 562.55 -463.8429552238806 L 575.05 -463.8429552238806 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip10);"> + <path d="M 600.95 -475.14092537313434 L 600.95 -485.14092537313434 L 613.45 -485.14092537313434 L 613.45 -475.14092537313434 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -475.14092537313434 L 600.95 -485.14092537313434 L 613.45 -485.14092537313434 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip11);"> + <path d="M 639.35 -495.07489552238803 L 639.35 -505.07489552238803 L 651.85 -505.07489552238803 L 651.85 -495.07489552238803 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -495.07489552238803 L 639.35 -505.07489552238803 L 651.85 -505.07489552238803 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 677.75 -515.0 L 677.75 -525.0 L 690.25 -525.0 L 690.25 -515.0 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -515.0 L 677.75 -525.0 L 690.25 -525.0 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip13);"> + <path d="M 338.4 -301.96629432835823 L 376.8 -302.04598029850746 L 415.2 -302.0232644776119 L 453.6 -302.071336119403 L 492.0 -302.05835611940296 L 530.4 -302.03932119402987 L 568.8 -302.0327408955224 L 607.2 -302.07033462686564 L 645.6 -302.04808835820893 L 684.0 -302.0746919402985" style="stroke:rgb(126,126,126);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip14);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip15);"> + <path d="M 331.25714285714287 -294.82343718550106 L 331.25714285714287 -309.10915147121534 L 345.54285714285714 -309.10915147121534 L 345.54285714285714 -294.82343718550106 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 331.25714285714287 -301.96629432835823 L 338.4 -309.10915147121534 L 345.54285714285714 -301.96629432835823 L 338.4 -294.82343718550106 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip16);"> + <path d="M 369.65714285714284 -294.9031231556503 L 369.65714285714284 -309.1888374413646 L 383.9428571428571 -309.1888374413646 L 383.9428571428571 -294.9031231556503 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 369.65714285714284 -302.04598029850746 L 376.8 -309.1888374413646 L 383.9428571428571 -302.04598029850746 L 376.8 -294.9031231556503 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip17);"> + <path d="M 408.0571428571429 -294.8804073347548 L 408.0571428571429 -309.1661216204691 L 422.34285714285716 -309.1661216204691 L 422.34285714285716 -294.8804073347548 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 408.0571428571429 -302.0232644776119 L 415.2 -309.1661216204691 L 422.34285714285716 -302.0232644776119 L 415.2 -294.8804073347548 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip18);"> + <path d="M 446.45714285714286 -294.9284789765458 L 446.45714285714286 -309.21419326226015 L 460.74285714285713 -309.21419326226015 L 460.74285714285713 -294.9284789765458 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 446.45714285714286 -302.071336119403 L 453.6 -309.21419326226015 L 460.74285714285713 -302.071336119403 L 453.6 -294.9284789765458 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip19);"> + <path d="M 484.8571428571429 -294.91549897654585 L 484.8571428571429 -309.2012132622601 L 499.1428571428571 -309.2012132622601 L 499.1428571428571 -294.91549897654585 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 484.8571428571429 -302.05835611940296 L 492.0 -309.2012132622601 L 499.1428571428571 -302.05835611940296 L 492.0 -294.91549897654585 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip20);"> + <path d="M 523.2571428571429 -294.8964640511727 L 523.2571428571429 -309.182178336887 L 537.5428571428572 -309.182178336887 L 537.5428571428572 -294.8964640511727 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 523.2571428571429 -302.03932119402987 L 530.4 -309.182178336887 L 537.5428571428572 -302.03932119402987 L 530.4 -294.8964640511727 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip21);"> + <path d="M 561.6571428571428 -294.88988375266524 L 561.6571428571428 -309.1755980383795 L 575.9428571428572 -309.1755980383795 L 575.9428571428572 -294.88988375266524 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 561.6571428571428 -302.0327408955224 L 568.8 -309.1755980383795 L 575.9428571428572 -302.0327408955224 L 568.8 -294.88988375266524 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip22);"> + <path d="M 600.0571428571428 -294.92747748400853 L 600.0571428571428 -309.2131917697228 L 614.3428571428572 -309.2131917697228 L 614.3428571428572 -294.92747748400853 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.0571428571428 -302.07033462686564 L 607.2 -309.2131917697228 L 614.3428571428572 -302.07033462686564 L 607.2 -294.92747748400853 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip23);"> + <path d="M 638.4571428571428 -294.9052312153518 L 638.4571428571428 -309.1909455010661 L 652.7428571428572 -309.1909455010661 L 652.7428571428572 -294.9052312153518 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 638.4571428571428 -302.04808835820893 L 645.6 -309.1909455010661 L 652.7428571428572 -302.04808835820893 L 645.6 -294.9052312153518 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip24);"> + <path d="M 676.8571428571429 -294.93183479744135 L 676.8571428571429 -309.21754908315563 L 691.1428571428571 -309.21754908315563 L 691.1428571428571 -294.93183479744135 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 676.8571428571429 -302.0746919402985 L 684.0 -309.21754908315563 L 691.1428571428571 -302.0746919402985 L 684.0 -294.93183479744135 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip25);"> + <path d="M 338.4 -301.71984507462685 L 376.8 -301.76312925373134 L 415.2 -301.79417880597015 L 453.6 -301.79663164179107 L 492.0 -301.81042268656716 L 530.4 -301.80513611940296 L 568.8 -301.76347074626864 L 607.2 -301.7608241791045 L 645.6 -301.76252507462686 L 684.0 -301.76536537313433" style="stroke:rgb(147,147,147);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip26);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip27);"> + <path d="M 332.15 -296.71984507462685 L 332.15 -306.71984507462685 L 344.65 -306.71984507462685 L 344.65 -296.71984507462685 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 332.15 -296.71984507462685 L 344.65 -296.71984507462685 L 338.4 -306.71984507462685 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip28);"> + <path d="M 370.55 -296.76312925373134 L 370.55 -306.76312925373134 L 383.05 -306.76312925373134 L 383.05 -296.76312925373134 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 370.55 -296.76312925373134 L 383.05 -296.76312925373134 L 376.8 -306.76312925373134 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip29);"> + <path d="M 408.95 -296.79417880597015 L 408.95 -306.79417880597015 L 421.45 -306.79417880597015 L 421.45 -296.79417880597015 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 408.95 -296.79417880597015 L 421.45 -296.79417880597015 L 415.2 -306.79417880597015 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip30);"> + <path d="M 447.35 -296.79663164179107 L 447.35 -306.79663164179107 L 459.85 -306.79663164179107 L 459.85 -296.79663164179107 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 447.35 -296.79663164179107 L 459.85 -296.79663164179107 L 453.6 -306.79663164179107 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip31);"> + <path d="M 485.75 -296.81042268656716 L 485.75 -306.81042268656716 L 498.25 -306.81042268656716 L 498.25 -296.81042268656716 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 485.75 -296.81042268656716 L 498.25 -296.81042268656716 L 492.0 -306.81042268656716 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip32);"> + <path d="M 524.15 -296.80513611940296 L 524.15 -306.80513611940296 L 536.65 -306.80513611940296 L 536.65 -296.80513611940296 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 524.15 -296.80513611940296 L 536.65 -296.80513611940296 L 530.4 -306.80513611940296 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip33);"> + <path d="M 562.55 -296.76347074626864 L 562.55 -306.76347074626864 L 575.05 -306.76347074626864 L 575.05 -296.76347074626864 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 562.55 -296.76347074626864 L 575.05 -296.76347074626864 L 568.8 -306.76347074626864 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip34);"> + <path d="M 600.95 -296.7608241791045 L 600.95 -306.7608241791045 L 613.45 -306.7608241791045 L 613.45 -296.7608241791045 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.95 -296.7608241791045 L 613.45 -296.7608241791045 L 607.2 -306.7608241791045 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip35);"> + <path d="M 639.35 -296.76252507462686 L 639.35 -306.76252507462686 L 651.85 -306.76252507462686 L 651.85 -296.76252507462686 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 639.35 -296.76252507462686 L 651.85 -296.76252507462686 L 645.6 -306.76252507462686 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip36);"> + <path d="M 677.75 -296.76536537313433 L 677.75 -306.76536537313433 L 690.25 -306.76536537313433 L 690.25 -296.76536537313433 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 677.75 -296.76536537313433 L 690.25 -296.76536537313433 L 684.0 -306.76536537313433 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip37);"> + <path d="M 338.4 -301.2547223880597 L 376.8 -301.2413220895522 L 415.2 -301.23162895522387 L 453.6 -301.2340259701493 L 492.0 -301.2247104477612 L 530.4 -301.22501253731343 L 568.8 -301.27027343283584 L 607.2 -301.23494208955225 L 645.6 -301.22821402985073 L 684.0 -301.22880507462685" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip38);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip39);"> + <path d="M 330.4 -293.2547223880597 L 330.4 -309.2547223880597 L 346.4 -309.2547223880597 L 346.4 -293.2547223880597 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -301.2547223880597 M 342.4 -301.2547223880597 L 342.4 -301.255 M 342.4 -301.255 A 4 4 0 1 0 334.4 -301.255 A 4 4 0 1 0 342.4 -301.255 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip40);"> + <path d="M 368.8 -293.2413220895522 L 368.8 -309.2413220895522 L 384.8 -309.2413220895522 L 384.8 -293.2413220895522 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -301.2413220895522 M 380.8 -301.2413220895522 L 380.8 -301.241 M 380.8 -301.241 A 4 4 0 1 0 372.8 -301.241 A 4 4 0 1 0 380.8 -301.241 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip41);"> + <path d="M 407.2 -293.23162895522387 L 407.2 -309.23162895522387 L 423.2 -309.23162895522387 L 423.2 -293.23162895522387 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -301.23162895522387 M 419.2 -301.23162895522387 L 419.2 -301.232 M 419.2 -301.232 A 4 4 0 1 0 411.2 -301.232 A 4 4 0 1 0 419.2 -301.232 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip42);"> + <path d="M 445.6 -293.2340259701493 L 445.6 -309.2340259701493 L 461.6 -309.2340259701493 L 461.6 -293.2340259701493 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -301.2340259701493 M 457.6 -301.2340259701493 L 457.6 -301.234 M 457.6 -301.234 A 4 4 0 1 0 449.6 -301.234 A 4 4 0 1 0 457.6 -301.234 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip43);"> + <path d="M 484.0 -293.2247104477612 L 484.0 -309.2247104477612 L 500.0 -309.2247104477612 L 500.0 -293.2247104477612 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -301.2247104477612 M 496.0 -301.2247104477612 L 496 -301.225 M 496 -301.225 A 4 4 0 1 0 488 -301.225 A 4 4 0 1 0 496 -301.225 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip44);"> + <path d="M 522.4 -293.22501253731343 L 522.4 -309.22501253731343 L 538.4 -309.22501253731343 L 538.4 -293.22501253731343 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -301.22501253731343 M 534.4 -301.22501253731343 L 534.4 -301.225 M 534.4 -301.225 A 4 4 0 1 0 526.4 -301.225 A 4 4 0 1 0 534.4 -301.225 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip45);"> + <path d="M 560.8 -293.27027343283584 L 560.8 -309.27027343283584 L 576.8 -309.27027343283584 L 576.8 -293.27027343283584 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -301.27027343283584 M 572.8 -301.27027343283584 L 572.8 -301.27 M 572.8 -301.27 A 4 4 0 1 0 564.8 -301.27 A 4 4 0 1 0 572.8 -301.27 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip46);"> + <path d="M 599.2 -293.23494208955225 L 599.2 -309.23494208955225 L 615.2 -309.23494208955225 L 615.2 -293.23494208955225 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -301.23494208955225 M 611.2 -301.23494208955225 L 611.2 -301.235 M 611.2 -301.235 A 4 4 0 1 0 603.2 -301.235 A 4 4 0 1 0 611.2 -301.235 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip47);"> + <path d="M 637.6 -293.22821402985073 L 637.6 -309.22821402985073 L 653.6 -309.22821402985073 L 653.6 -293.22821402985073 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -301.22821402985073 M 649.6 -301.22821402985073 L 649.6 -301.228 M 649.6 -301.228 A 4 4 0 1 0 641.6 -301.228 A 4 4 0 1 0 649.6 -301.228 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip48);"> + <path d="M 676.0 -293.22880507462685 L 676.0 -309.22880507462685 L 692.0 -309.22880507462685 L 692.0 -293.22880507462685 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -301.22880507462685 M 688.0 -301.22880507462685 L 688 -301.229 M 688 -301.229 A 4 4 0 1 0 680 -301.229 A 4 4 0 1 0 688 -301.229 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip49);"> + <path d="M 338.4 -301.21542119402983 L 376.8 -301.1998832835821 L 415.2 -301.22636208955225 L 453.6 -301.2011934328358 L 492.0 -301.2018337313433 L 530.4 -301.1941107462687 L 568.8 -301.1914740298507 L 607.2 -301.1974205970149 L 645.6 -301.21693820895524 L 684.0 -301.18861074626864" style="stroke:rgb(137,42,226);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip50);"> + <path d="M 331.25714285714287 -301.21542119402983 L 345.54285714285714 -301.21542119402983" style="stroke-width:1;"/> + <path d="M 338.4 -294.0725640511727 L 338.4 -308.358278336887" style="stroke-width:1;"/> + <path d="M 369.65714285714284 -301.1998832835821 L 383.9428571428571 -301.1998832835821" style="stroke-width:1;"/> + <path d="M 376.8 -294.05702614072493 L 376.8 -308.3427404264392" style="stroke-width:1;"/> + <path d="M 408.0571428571429 -301.22636208955225 L 422.34285714285716 -301.22636208955225" style="stroke-width:1;"/> + <path d="M 415.2 -294.0835049466951 L 415.2 -308.36921923240936" style="stroke-width:1;"/> + <path d="M 446.45714285714286 -301.2011934328358 L 460.74285714285713 -301.2011934328358" style="stroke-width:1;"/> + <path d="M 453.6 -294.0583362899787 L 453.6 -308.34405057569296" style="stroke-width:1;"/> + <path d="M 484.8571428571429 -301.2018337313433 L 499.1428571428571 -301.2018337313433" style="stroke-width:1;"/> + <path d="M 492.0 -294.05897658848613 L 492.0 -308.3446908742004" style="stroke-width:1;"/> + <path d="M 523.2571428571429 -301.1941107462687 L 537.5428571428572 -301.1941107462687" style="stroke-width:1;"/> + <path d="M 530.4 -294.0512536034115 L 530.4 -308.3369678891258" style="stroke-width:1;"/> + <path d="M 561.6571428571428 -301.1914740298507 L 575.9428571428572 -301.1914740298507" style="stroke-width:1;"/> + <path d="M 568.8 -294.0486168869936 L 568.8 -308.3343311727079" style="stroke-width:1;"/> + <path d="M 600.0571428571428 -301.1974205970149 L 614.3428571428572 -301.1974205970149" style="stroke-width:1;"/> + <path d="M 607.2 -294.0545634541578 L 607.2 -308.3402777398721" style="stroke-width:1;"/> + <path d="M 638.4571428571428 -301.21693820895524 L 652.7428571428572 -301.21693820895524" style="stroke-width:1;"/> + <path d="M 645.6 -294.0740810660981 L 645.6 -308.35979535181235" style="stroke-width:1;"/> + <path d="M 676.8571428571429 -301.18861074626864 L 691.1428571428571 -301.18861074626864" style="stroke-width:1;"/> + <path d="M 684.0 -294.0457536034115 L 684.0 -308.3314678891258" style="stroke-width:1;"/> + </g> + <g style="clip-path:url(#clip51);"> + <path d="M 338.4 -300.8645343283582 L 376.8 -300.8930423880597 L 415.2 -300.9157549253731 L 453.6 -300.9447653731343 L 492.0 -300.95871074626865 L 530.4 -300.96553731343283 L 568.8 -300.97034447761195 L 607.2 -300.9836134328358 L 645.6 -300.97012447761193 L 684.0 -300.9824904477612" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip52);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip53);"> + <path d="M 330.4 -292.8645343283582 L 330.4 -308.8645343283582 L 346.4 -308.8645343283582 L 346.4 -292.8645343283582 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -300.8645343283582 M 342.4 -300.8645343283582 L 342.4 -300.865 M 342.4 -300.865 A 4 4 0 1 0 334.4 -300.865 A 4 4 0 1 0 342.4 -300.865 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip54);"> + <path d="M 368.8 -292.8930423880597 L 368.8 -308.8930423880597 L 384.8 -308.8930423880597 L 384.8 -292.8930423880597 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -300.8930423880597 M 380.8 -300.8930423880597 L 380.8 -300.893 M 380.8 -300.893 A 4 4 0 1 0 372.8 -300.893 A 4 4 0 1 0 380.8 -300.893 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip55);"> + <path d="M 407.2 -292.9157549253731 L 407.2 -308.9157549253731 L 423.2 -308.9157549253731 L 423.2 -292.9157549253731 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -300.9157549253731 M 419.2 -300.9157549253731 L 419.2 -300.916 M 419.2 -300.916 A 4 4 0 1 0 411.2 -300.916 A 4 4 0 1 0 419.2 -300.916 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip56);"> + <path d="M 445.6 -292.9447653731343 L 445.6 -308.9447653731343 L 461.6 -308.9447653731343 L 461.6 -292.9447653731343 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -300.9447653731343 M 457.6 -300.9447653731343 L 457.6 -300.945 M 457.6 -300.945 A 4 4 0 1 0 449.6 -300.945 A 4 4 0 1 0 457.6 -300.945 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip57);"> + <path d="M 484.0 -292.95871074626865 L 484.0 -308.95871074626865 L 500.0 -308.95871074626865 L 500.0 -292.95871074626865 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -300.95871074626865 M 496.0 -300.95871074626865 L 496 -300.959 M 496 -300.959 A 4 4 0 1 0 488 -300.959 A 4 4 0 1 0 496 -300.959 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip58);"> + <path d="M 522.4 -292.96553731343283 L 522.4 -308.96553731343283 L 538.4 -308.96553731343283 L 538.4 -292.96553731343283 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -300.96553731343283 M 534.4 -300.96553731343283 L 534.4 -300.966 M 534.4 -300.966 A 4 4 0 1 0 526.4 -300.966 A 4 4 0 1 0 534.4 -300.966 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip59);"> + <path d="M 560.8 -292.97034447761195 L 560.8 -308.97034447761195 L 576.8 -308.97034447761195 L 576.8 -292.97034447761195 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -300.97034447761195 M 572.8 -300.97034447761195 L 572.8 -300.97 M 572.8 -300.97 A 4 4 0 1 0 564.8 -300.97 A 4 4 0 1 0 572.8 -300.97 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip60);"> + <path d="M 599.2 -292.9836134328358 L 599.2 -308.9836134328358 L 615.2 -308.9836134328358 L 615.2 -292.9836134328358 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -300.9836134328358 M 611.2 -300.9836134328358 L 611.2 -300.984 M 611.2 -300.984 A 4 4 0 1 0 603.2 -300.984 A 4 4 0 1 0 611.2 -300.984 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip61);"> + <path d="M 637.6 -292.97012447761193 L 637.6 -308.97012447761193 L 653.6 -308.97012447761193 L 653.6 -292.97012447761193 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -300.97012447761193 M 649.6 -300.97012447761193 L 649.6 -300.97 M 649.6 -300.97 A 4 4 0 1 0 641.6 -300.97 A 4 4 0 1 0 649.6 -300.97 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip62);"> + <path d="M 676.0 -292.98249044776117 L 676.0 -308.98249044776117 L 692.0 -308.98249044776117 L 692.0 -292.98249044776117 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -300.9824904477612 M 688.0 -300.9824904477612 L 688 -300.982 M 688 -300.982 A 4 4 0 1 0 680 -300.982 A 4 4 0 1 0 688 -300.982 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip63);"> + <path d="M 338.4 -300.6776689552239 L 376.8 -300.63155104477613 L 415.2 -300.62003223880595 L 453.6 -300.60298388059704 L 492.0 -300.5816208955224 L 530.4 -300.58382746268654 L 568.8 -300.5798543283582 L 607.2 -300.57130716417913 L 645.6 -300.5609408955224 L 684.0 -300.55760805970147" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip64);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip65);"> + <path d="M 334.4 -296.6776689552239 L 334.4 -304.6776689552239 L 342.4 -304.6776689552239 L 342.4 -296.6776689552239 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 334.4 -296.6776689552239 L 334.4 -304.6776689552239 L 342.4 -304.6776689552239 L 342.4 -296.6776689552239 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip66);"> + <path d="M 372.8 -296.63155104477613 L 372.8 -304.63155104477613 L 380.8 -304.63155104477613 L 380.8 -296.63155104477613 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 372.8 -296.63155104477613 L 372.8 -304.63155104477613 L 380.8 -304.63155104477613 L 380.8 -296.63155104477613 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip67);"> + <path d="M 411.2 -296.62003223880595 L 411.2 -304.62003223880595 L 419.2 -304.62003223880595 L 419.2 -296.62003223880595 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 411.2 -296.62003223880595 L 411.2 -304.62003223880595 L 419.2 -304.62003223880595 L 419.2 -296.62003223880595 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip68);"> + <path d="M 449.6 -296.60298388059704 L 449.6 -304.60298388059704 L 457.6 -304.60298388059704 L 457.6 -296.60298388059704 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 449.6 -296.60298388059704 L 449.6 -304.60298388059704 L 457.6 -304.60298388059704 L 457.6 -296.60298388059704 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip69);"> + <path d="M 488.0 -296.5816208955224 L 488.0 -304.5816208955224 L 496.0 -304.5816208955224 L 496.0 -296.5816208955224 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 488.0 -296.5816208955224 L 488.0 -304.5816208955224 L 496.0 -304.5816208955224 L 496.0 -296.5816208955224 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip70);"> + <path d="M 526.4 -296.58382746268654 L 526.4 -304.58382746268654 L 534.4 -304.58382746268654 L 534.4 -296.58382746268654 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 526.4 -296.58382746268654 L 526.4 -304.58382746268654 L 534.4 -304.58382746268654 L 534.4 -296.58382746268654 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip71);"> + <path d="M 564.8 -296.57985432835824 L 564.8 -304.57985432835824 L 572.8 -304.57985432835824 L 572.8 -296.57985432835824 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 564.8 -296.57985432835824 L 564.8 -304.57985432835824 L 572.8 -304.57985432835824 L 572.8 -296.57985432835824 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip72);"> + <path d="M 603.2 -296.57130716417913 L 603.2 -304.57130716417913 L 611.2 -304.57130716417913 L 611.2 -296.57130716417913 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 603.2 -296.57130716417913 L 603.2 -304.57130716417913 L 611.2 -304.57130716417913 L 611.2 -296.57130716417913 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip73);"> + <path d="M 641.6 -296.5609408955224 L 641.6 -304.5609408955224 L 649.6 -304.5609408955224 L 649.6 -296.5609408955224 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 641.6 -296.5609408955224 L 641.6 -304.5609408955224 L 649.6 -304.5609408955224 L 649.6 -296.5609408955224 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip74);"> + <path d="M 680.0 -296.55760805970147 L 680.0 -304.55760805970147 L 688.0 -304.55760805970147 L 688.0 -296.55760805970147 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 680.0 -296.55760805970147 L 680.0 -304.55760805970147 L 688.0 -304.55760805970147 L 688.0 -296.55760805970147 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip75);"> + <path d="M 290 -54 L 290 -182 L 324 -182 L 324 -54 Z" style="stroke:none;"/> + </g> + <path d="M 300 -172.66666666666669 L 314 -172.66666666666669" style="stroke:rgb(205,0,0);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip76);"> + <path d="M 300.75 -167.66666666666669 L 300.75 -177.66666666666669 L 313.25 -177.66666666666669 L 313.25 -167.66666666666669 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -167.66666666666669 L 300.75 -177.66666666666669 L 313.25 -177.66666666666669 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-168.0"> + binary_heap + </text> + <path d="M 300 -154.66666666666666 L 314 -154.66666666666666" style="stroke:rgb(126,126,126);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip77);"> + <path d="M 299.85714285714283 -147.52380952380952 L 299.85714285714283 -161.8095238095238 L 314.14285714285717 -161.8095238095238 L 314.14285714285717 -147.52380952380952 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 299.85714285714283 -154.66666666666666 L 307.0 -161.8095238095238 L 314.14285714285717 -154.66666666666666 L 307.0 -147.52380952380952 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-150.0"> + rc_binomial_heap + </text> + <path d="M 300 -136.66666666666666 L 314 -136.66666666666666" style="stroke:rgb(147,147,147);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip78);"> + <path d="M 300.75 -131.66666666666666 L 300.75 -141.66666666666666 L 313.25 -141.66666666666666 L 313.25 -131.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 300.75 -131.66666666666666 L 313.25 -131.66666666666666 L 307.0 -141.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-132.0"> + binomial_heap + </text> + <path d="M 300 -118.66666666666666 L 314 -118.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip79);"> + <path d="M 299.0 -110.66666666666666 L 299.0 -126.66666666666666 L 315.0 -126.66666666666666 L 315.0 -110.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -118.66666666666666 M 311.0 -118.66666666666666 L 311 -118.667 M 311 -118.667 A 4 4 0 1 0 303 -118.667 A 4 4 0 1 0 311 -118.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-114.0"> + thin_heap + </text> + <path d="M 300 -100.66666666666666 L 314 -100.66666666666666" style="stroke:rgb(137,42,226);stroke-width:2;"/> + <path d="M 299.85714285714283 -100.66666666666666 L 314.14285714285717 -100.66666666666666" style="stroke-width:1;"/> + <path d="M 307.0 -93.52380952380952 L 307.0 -107.8095238095238" style="stroke-width:1;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-96.0"> + pairing_heap + </text> + <path d="M 300 -82.66666666666666 L 314 -82.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip80);"> + <path d="M 299.0 -74.66666666666666 L 299.0 -90.66666666666666 L 315.0 -90.66666666666666 L 315.0 -74.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -82.66666666666666 M 311.0 -82.66666666666666 L 311 -82.6667 M 311 -82.6667 A 4 4 0 1 0 303 -82.6667 A 4 4 0 1 0 311 -82.6667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-78.0"> + n_pq_deque + </text> + <path d="M 300 -64.66666666666666 L 314 -64.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip81);"> + <path d="M 303.0 -60.66666666666666 L 303.0 -68.66666666666666 L 311.0 -68.66666666666666 L 311.0 -60.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 303.0 -60.66666666666666 L 303.0 -68.66666666666666 L 311.0 -68.66666666666666 L 311.0 -60.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-60.0"> + n_pq_vector + </text> + </g> + </g> + </g> + </g> + </g> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_tag_hierarchy.pdf b/libstdc++-v3/doc/xml/images/pbds_priority_queue_tag_hierarchy.pdf Binary files differnew file mode 100644 index 00000000000..c7ee458b2ca --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_tag_hierarchy.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_tag_hierarchy.png b/libstdc++-v3/doc/xml/images/pbds_priority_queue_tag_hierarchy.png Binary files differnew file mode 100644 index 00000000000..3a849d2d741 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_tag_hierarchy.png diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_tag_hierarchy.svg b/libstdc++-v3/doc/xml/images/pbds_priority_queue_tag_hierarchy.svg new file mode 100644 index 00000000000..678bf93b4c5 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_tag_hierarchy.svg @@ -0,0 +1,88 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Generated by graphviz version 2.26.3 (20100126.1600) + --> +<!-- Title: G Pages: 1 --> +<svg width="568pt" height="180pt" viewBox="0.00 0.00 568.00 180.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph1" class="graph" transform="scale(1) rotate(0) translate(4, 176)"> +<title>G</title> +<polygon fill="white" stroke="white" points="-4,5 -4,-176 565,-176 565,5 -4,5"/> +<!-- Node1 --> +<g id="node1" class="node"><title>Node1</title> +<polygon fill="#bfbfbf" stroke="black" points="180,-76 180,-96 344,-96 344,-76 180,-76"/> +<text text-anchor="middle" x="262" y="-83.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::priority_queue_tag</text> +</g> +<!-- Node3 --> +<g id="node5" class="node"><title>Node3</title> +<a xlink:href="a00187.html" target="_top" xlink:title="Binary-heap (array-based)."> +<polygon fill="white" stroke="black" points="392.5,-152 392.5,-172 547.5,-172 547.5,-152 392.5,-152"/> +<text text-anchor="middle" x="470" y="-159.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::binary_heap_tag</text> +</a> +</g> +<!-- Node1->Node3 --> +<g id="edge4" class="edge"><title>Node1->Node3</title> +<path fill="none" stroke="midnightblue" d="M288.374,-101.033C311.786,-113.814 347.263,-131.822 380,-143 390.277,-146.509 401.444,-149.494 412.304,-151.987"/> +<polygon fill="midnightblue" stroke="midnightblue" points="289.867,-97.859 279.422,-96.0793 286.477,-103.984 289.867,-97.859"/> +</g> +<!-- Node4 --> +<g id="node7" class="node"><title>Node4</title> +<a xlink:href="a00188.html" target="_top" xlink:title="Binomial-heap."> +<polygon fill="white" stroke="black" points="387.5,-114 387.5,-134 552.5,-134 552.5,-114 387.5,-114"/> +<text text-anchor="middle" x="470" y="-121.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::binomial_heap_tag</text> +</a> +</g> +<!-- Node1->Node4 --> +<g id="edge6" class="edge"><title>Node1->Node4</title> +<path fill="none" stroke="midnightblue" d="M327.114,-97.8959C355.381,-103.06 388.126,-109.042 415.132,-113.976"/> +<polygon fill="midnightblue" stroke="midnightblue" points="327.388,-94.388 316.922,-96.0338 326.13,-101.274 327.388,-94.388"/> +</g> +<!-- Node5 --> +<g id="node9" class="node"><title>Node5</title> +<a xlink:href="a00349.html" target="_top" xlink:title="Pairing-heap."> +<polygon fill="white" stroke="black" points="391,-76 391,-96 549,-96 549,-76 391,-76"/> +<text text-anchor="middle" x="470" y="-83.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::pairing_heap_tag</text> +</a> +</g> +<!-- Node1->Node5 --> +<g id="edge8" class="edge"><title>Node1->Node5</title> +<path fill="none" stroke="midnightblue" d="M354.347,-86C366.497,-86 378.861,-86 390.766,-86"/> +<polygon fill="midnightblue" stroke="midnightblue" points="354.207,-82.5001 344.207,-86 354.207,-89.5001 354.207,-82.5001"/> +</g> +<!-- Node6 --> +<g id="node11" class="node"><title>Node6</title> +<a xlink:href="a00357.html" target="_top" xlink:title="Redundant-counter binomial-heap."> +<polygon fill="white" stroke="black" points="380.5,-38 380.5,-58 559.5,-58 559.5,-38 380.5,-38"/> +<text text-anchor="middle" x="470" y="-45.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::rc_binomial_heap_tag</text> +</a> +</g> +<!-- Node1->Node6 --> +<g id="edge10" class="edge"><title>Node1->Node6</title> +<path fill="none" stroke="midnightblue" d="M327.114,-74.1041C355.381,-68.9399 388.126,-62.9578 415.132,-58.024"/> +<polygon fill="midnightblue" stroke="midnightblue" points="326.13,-70.726 316.922,-75.9662 327.388,-77.612 326.13,-70.726"/> +</g> +<!-- Node7 --> +<g id="node13" class="node"><title>Node7</title> +<a xlink:href="a00373.html" target="_top" xlink:title="Thin heap."> +<polygon fill="white" stroke="black" points="398,-0 398,-20 542,-20 542,-0 398,-0"/> +<text text-anchor="middle" x="470" y="-7.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::thin_heap_tag</text> +</a> +</g> +<!-- Node1->Node7 --> +<g id="edge12" class="edge"><title>Node1->Node7</title> +<path fill="none" stroke="midnightblue" d="M288.374,-70.967C311.786,-58.1857 347.263,-40.1778 380,-29 390.277,-25.4912 401.444,-22.5058 412.304,-20.0134"/> +<polygon fill="midnightblue" stroke="midnightblue" points="286.477,-68.0163 279.422,-75.9207 289.867,-74.141 286.477,-68.0163"/> +</g> +<!-- Node2 --> +<g id="node2" class="node"><title>Node2</title> +<a xlink:href="a00193.html" target="_top" xlink:title="Base data structure tag."> +<polygon fill="white" stroke="black" points="0.5,-76 0.5,-96 143.5,-96 143.5,-76 0.5,-76"/> +<text text-anchor="middle" x="72" y="-83.9" font-family="FreeSans" font-size="9.00">__gnu_pbds::container_tag</text> +</a> +</g> +<!-- Node2->Node1 --> +<g id="edge2" class="edge"><title>Node2->Node1</title> +<path fill="none" stroke="midnightblue" d="M153.696,-86C162.404,-86 171.265,-86 179.978,-86"/> +<polygon fill="midnightblue" stroke="midnightblue" points="153.56,-82.5001 143.56,-86 153.56,-89.5001 153.56,-82.5001"/> +</g> +</g> +</svg>
\ No newline at end of file diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_join_timing_test_local.pdf b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_join_timing_test_local.pdf Binary files differnew file mode 100644 index 00000000000..e5ac57b21d5 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_join_timing_test_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_join_timing_test_local.png b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_join_timing_test_local.png Binary files differnew file mode 100644 index 00000000000..7cdeb8ce191 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_join_timing_test_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_join_timing_test_local.svg b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_join_timing_test_local.svg new file mode 100644 index 00000000000..9564567b8de --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_join_timing_test_local.svg @@ -0,0 +1,825 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 496.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 338.4 -382.6171827656345 M 342.4 -382.6171827656345 L 342.4 -382.617 M 342.4 -382.617 A 4 4 0 1 0 334.4 -382.617 A 4 4 0 1 0 342.4 -382.617 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 376.8 -395.255629488741 M 380.8 -395.255629488741 L 380.8 -395.256 M 380.8 -395.256 A 4 4 0 1 0 372.8 -395.256 A 4 4 0 1 0 380.8 -395.256 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 415.2 -402.75559048881905 M 419.2 -402.75559048881905 L 419.2 -402.756 M 419.2 -402.756 A 4 4 0 1 0 411.2 -402.756 A 4 4 0 1 0 419.2 -402.756 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 453.6 -405.1805576388847 M 457.6 -405.1805576388847 L 457.6 -405.181 M 457.6 -405.181 A 4 4 0 1 0 449.6 -405.181 A 4 4 0 1 0 457.6 -405.181 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 492.0 -408.3180593638813 M 496.0 -408.3180593638813 L 496 -408.318 M 496 -408.318 A 4 4 0 1 0 488 -408.318 A 4 4 0 1 0 496 -408.318 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 530.4 -412.5303029393941 M 534.4 -412.5303029393941 L 534.4 -412.53 M 534.4 -412.53 A 4 4 0 1 0 526.4 -412.53 A 4 4 0 1 0 534.4 -412.53 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 568.8 -417.0708298583403 M 572.8 -417.0708298583403 L 572.8 -417.071 M 572.8 -417.071 A 4 4 0 1 0 564.8 -417.071 A 4 4 0 1 0 572.8 -417.071 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 607.2 -416.9470141059718 M 611.2 -416.9470141059718 L 611.2 -416.947 M 611.2 -416.947 A 4 4 0 1 0 603.2 -416.947 A 4 4 0 1 0 611.2 -416.947 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 645.6 -420.87493025013947 M 649.6 -420.87493025013947 L 649.6 -420.875 M 649.6 -420.875 A 4 4 0 1 0 641.6 -420.875 A 4 4 0 1 0 649.6 -420.875 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 684.0 -422.1055637888724 M 688.0 -422.1055637888724 L 688 -422.106 M 688 -422.106 A 4 4 0 1 0 680 -422.106 A 4 4 0 1 0 688 -422.106 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 334.4 -362.49671500656996 L 334.4 -370.49671500656996 L 342.4 -370.49671500656996 L 342.4 -362.49671500656996 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 372.8 -368.4158471683057 L 372.8 -376.4158471683057 L 380.8 -376.4158471683057 L 380.8 -368.4158471683057 Z"/> + </clipPath> + <clipPath id="clip17"> + <path d="M 411.2 -372.05837988324026 L 411.2 -380.05837988324026 L 419.2 -380.05837988324026 L 419.2 -372.05837988324026 Z"/> + </clipPath> + <clipPath id="clip18"> + <path d="M 449.6 -377.13588172823654 L 449.6 -385.13588172823654 L 457.6 -385.13588172823654 L 457.6 -377.13588172823654 Z"/> + </clipPath> + <clipPath id="clip19"> + <path d="M 488.0 -376.4262511474977 L 488.0 -384.4262511474977 L 496.0 -384.4262511474977 L 496.0 -376.4262511474977 Z"/> + </clipPath> + <clipPath id="clip20"> + <path d="M 526.4 -380.32195935608127 L 526.4 -388.32195935608127 L 534.4 -388.32195935608127 L 534.4 -380.32195935608127 Z"/> + </clipPath> + <clipPath id="clip21"> + <path d="M 564.8 -382.01221597556804 L 564.8 -390.01221597556804 L 572.8 -390.01221597556804 L 572.8 -382.01221597556804 Z"/> + </clipPath> + <clipPath id="clip22"> + <path d="M 603.2 -385.05454589090823 L 603.2 -393.05454589090823 L 611.2 -393.05454589090823 L 611.2 -385.05454589090823 Z"/> + </clipPath> + <clipPath id="clip23"> + <path d="M 641.6 -385.747544504911 L 641.6 -393.747544504911 L 649.6 -393.747544504911 L 649.6 -385.747544504911 Z"/> + </clipPath> + <clipPath id="clip24"> + <path d="M 680.0 -388.61589876820244 L 680.0 -396.61589876820244 L 688.0 -396.61589876820244 L 688.0 -388.61589876820244 Z"/> + </clipPath> + <clipPath id="clip25"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip26"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip27"> + <path d="M 338.4 -300.36429767140464 L 332.15 -310.36429767140464 L 344.65 -310.36429767140464 Z"/> + </clipPath> + <clipPath id="clip28"> + <path d="M 376.8 -309.1025877948244 L 370.55 -319.1025877948244 L 383.05 -319.1025877948244 Z"/> + </clipPath> + <clipPath id="clip29"> + <path d="M 415.2 -295.022 L 408.95 -305.022 L 421.45 -305.022 Z"/> + </clipPath> + <clipPath id="clip30"> + <path d="M 453.6 -295.0164999670001 L 447.35 -305.0164999670001 L 459.85 -305.0164999670001 Z"/> + </clipPath> + <clipPath id="clip31"> + <path d="M 492.0 -295.0131999736001 L 485.75 -305.0131999736001 L 498.25 -305.0131999736001 Z"/> + </clipPath> + <clipPath id="clip32"> + <path d="M 530.4 -295.01099997360006 L 524.15 -305.01099997360006 L 536.65 -305.01099997360006 Z"/> + </clipPath> + <clipPath id="clip33"> + <path d="M 568.8 -515.0 L 562.55 -525.0 L 575.05 -525.0 Z"/> + </clipPath> + <clipPath id="clip34"> + <path d="M 607.2 -404.999736000528 L 600.95 -414.999736000528 L 613.45 -414.999736000528 Z"/> + </clipPath> + <clipPath id="clip35"> + <path d="M 645.6 -368.33324533350935 L 639.35 -378.33324533350935 L 651.85 -378.33324533350935 Z"/> + </clipPath> + <clipPath id="clip36"> + <path d="M 684.0 -295.00659998680004 L 677.75 -305.00659998680004 L 690.25 -305.00659998680004 Z"/> + </clipPath> + <clipPath id="clip37"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip38"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip39"> + <path d="M 338.4 -302.65646828706343 M 342.4 -302.65646828706343 L 342.4 -302.656 M 342.4 -302.656 A 4 4 0 1 0 334.4 -302.656 A 4 4 0 1 0 342.4 -302.656 Z"/> + </clipPath> + <clipPath id="clip40"> + <path d="M 376.8 -302.8030671938656 M 380.8 -302.8030671938656 L 380.8 -302.803 M 380.8 -302.803 A 4 4 0 1 0 372.8 -302.803 A 4 4 0 1 0 380.8 -302.803 Z"/> + </clipPath> + <clipPath id="clip41"> + <path d="M 415.2 -302.6080111839776 M 419.2 -302.6080111839776 L 419.2 -302.608 M 419.2 -302.608 A 4 4 0 1 0 411.2 -302.608 A 4 4 0 1 0 419.2 -302.608 Z"/> + </clipPath> + <clipPath id="clip42"> + <path d="M 453.6 -303.04239591520815 M 457.6 -303.04239591520815 L 457.6 -303.042 M 457.6 -303.042 A 4 4 0 1 0 449.6 -303.042 A 4 4 0 1 0 457.6 -303.042 Z"/> + </clipPath> + <clipPath id="clip43"> + <path d="M 492.0 -302.87882184235633 M 496.0 -302.87882184235633 L 496 -302.879 M 496 -302.879 A 4 4 0 1 0 488 -302.879 A 4 4 0 1 0 496 -302.879 Z"/> + </clipPath> + <clipPath id="clip44"> + <path d="M 530.4 -303.0942058115884 M 534.4 -303.0942058115884 L 534.4 -303.094 M 534.4 -303.094 A 4 4 0 1 0 526.4 -303.094 A 4 4 0 1 0 534.4 -303.094 Z"/> + </clipPath> + <clipPath id="clip45"> + <path d="M 568.8 -303.08834502330996 M 572.8 -303.08834502330996 L 572.8 -303.088 M 572.8 -303.088 A 4 4 0 1 0 564.8 -303.088 A 4 4 0 1 0 572.8 -303.088 Z"/> + </clipPath> + <clipPath id="clip46"> + <path d="M 607.2 -303.4056987886024 M 611.2 -303.4056987886024 L 611.2 -303.406 M 611.2 -303.406 A 4 4 0 1 0 603.2 -303.406 A 4 4 0 1 0 611.2 -303.406 Z"/> + </clipPath> + <clipPath id="clip47"> + <path d="M 645.6 -303.3236741526517 M 649.6 -303.3236741526517 L 649.6 -303.324 M 649.6 -303.324 A 4 4 0 1 0 641.6 -303.324 A 4 4 0 1 0 649.6 -303.324 Z"/> + </clipPath> + <clipPath id="clip48"> + <path d="M 684.0 -303.5650884698231 M 688.0 -303.5650884698231 L 688 -303.565 M 688 -303.565 A 4 4 0 1 0 680 -303.565 A 4 4 0 1 0 688 -303.565 Z"/> + </clipPath> + <clipPath id="clip49"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip50"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip51"> + <path d="M 332.15 -295.57604288791424 L 344.65 -295.57604288791424 L 338.4 -305.57604288791424 Z"/> + </clipPath> + <clipPath id="clip52"> + <path d="M 370.55 -295.64005351989294 L 383.05 -295.64005351989294 L 376.8 -305.64005351989294 Z"/> + </clipPath> + <clipPath id="clip53"> + <path d="M 408.95 -295.022 L 421.45 -295.022 L 415.2 -305.022 Z"/> + </clipPath> + <clipPath id="clip54"> + <path d="M 447.35 -295.1926074147852 L 459.85 -295.1926074147852 L 453.6 -305.1926074147852 Z"/> + </clipPath> + <clipPath id="clip55"> + <path d="M 485.75 -295.0131999736001 L 498.25 -295.0131999736001 L 492.0 -305.0131999736001 Z"/> + </clipPath> + <clipPath id="clip56"> + <path d="M 524.15 -295.01099997360006 L 536.65 -295.01099997360006 L 530.4 -305.01099997360006 Z"/> + </clipPath> + <clipPath id="clip57"> + <path d="M 562.55 -295.00942855634287 L 575.05 -295.00942855634287 L 568.8 -305.00942855634287 Z"/> + </clipPath> + <clipPath id="clip58"> + <path d="M 600.95 -295.00824998350004 L 613.45 -295.00824998350004 L 607.2 -305.00824998350004 Z"/> + </clipPath> + <clipPath id="clip59"> + <path d="M 639.35 -295.00733332453336 L 651.85 -295.00733332453336 L 645.6 -305.00733332453336 Z"/> + </clipPath> + <clipPath id="clip60"> + <path d="M 677.75 -295.00659998680004 L 690.25 -295.00659998680004 L 684.0 -305.00659998680004 Z"/> + </clipPath> + <clipPath id="clip61"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip62"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip63"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip64"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip65"> + <path d="M 331.25714285714287 -300.2474691450617 L 338.4 -307.39032628791887 L 345.54285714285714 -300.2474691450617 L 338.4 -293.1046120022046 Z"/> + </clipPath> + <clipPath id="clip66"> + <path d="M 369.65714285714284 -300.03299993400015 L 376.8 -307.17585707685726 L 383.9428571428571 -300.03299993400015 L 376.8 -292.890142791143 Z"/> + </clipPath> + <clipPath id="clip67"> + <path d="M 408.0571428571429 -300.022 L 415.2 -307.16485714285716 L 422.34285714285716 -300.022 L 415.2 -292.8791428571429 Z"/> + </clipPath> + <clipPath id="clip68"> + <path d="M 446.45714285714286 -300.0164999670001 L 453.6 -307.1593571098572 L 460.74285714285713 -300.0164999670001 L 453.6 -292.8736428241429 Z"/> + </clipPath> + <clipPath id="clip69"> + <path d="M 484.8571428571429 -300.0131999736001 L 492.0 -307.1560571164572 L 499.1428571428571 -300.0131999736001 L 492.0 -292.8703428307429 Z"/> + </clipPath> + <clipPath id="clip70"> + <path d="M 523.2571428571429 -300.01099997360006 L 530.4 -307.1538571164572 L 537.5428571428572 -300.01099997360006 L 530.4 -292.8681428307429 Z"/> + </clipPath> + <clipPath id="clip71"> + <path d="M 561.6571428571428 -300.00942855634287 L 568.8 -307.15228569920004 L 575.9428571428572 -300.00942855634287 L 568.8 -292.86657141348576 Z"/> + </clipPath> + <clipPath id="clip72"> + <path d="M 600.0571428571428 -300.00824998350004 L 607.2 -307.1511071263572 L 614.3428571428572 -300.00824998350004 L 607.2 -292.86539284064287 Z"/> + </clipPath> + <clipPath id="clip73"> + <path d="M 638.4571428571428 -300.00733332453336 L 645.6 -307.1501904673905 L 652.7428571428572 -300.00733332453336 L 645.6 -292.8644761816762 Z"/> + </clipPath> + <clipPath id="clip74"> + <path d="M 676.8571428571429 -300.00659998680004 L 684.0 -307.14945712965715 L 691.1428571428571 -300.00659998680004 L 684.0 -292.8637428439429 Z"/> + </clipPath> + <clipPath id="clip75"> + <path d="M 290 -54 L 290 -182 L 324 -182 L 324 -54 Z"/> + </clipPath> + <clipPath id="clip76"> + <path d="M 307.0 -172.66666666666669 M 311.0 -172.66666666666669 L 311 -172.667 M 311 -172.667 A 4 4 0 1 0 303 -172.667 A 4 4 0 1 0 311 -172.667 Z"/> + </clipPath> + <clipPath id="clip77"> + <path d="M 303.0 -150.66666666666666 L 303.0 -158.66666666666666 L 311.0 -158.66666666666666 L 311.0 -150.66666666666666 Z"/> + </clipPath> + <clipPath id="clip78"> + <path d="M 307.0 -131.66666666666666 L 300.75 -141.66666666666666 L 313.25 -141.66666666666666 Z"/> + </clipPath> + <clipPath id="clip79"> + <path d="M 307.0 -118.66666666666666 M 311.0 -118.66666666666666 L 311 -118.667 M 311 -118.667 A 4 4 0 1 0 303 -118.667 A 4 4 0 1 0 311 -118.667 Z"/> + </clipPath> + <clipPath id="clip80"> + <path d="M 300.75 -95.66666666666666 L 313.25 -95.66666666666666 L 307.0 -105.66666666666666 Z"/> + </clipPath> + <clipPath id="clip81"> + <path d="M 299.85714285714283 -64.66666666666666 L 307.0 -71.8095238095238 L 314.14285714285717 -64.66666666666666 L 307.0 -57.52380952380952 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 3.33e-07 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.5004867321942"> + 6.67e-07 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.50048673219425"> + 1.00e-06 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.5004867321942"> + 1.33e-06 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321942"> + 1.67e-06 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 338.4 -382.6171827656345 L 376.8 -395.255629488741 L 415.2 -402.75559048881905 L 453.6 -405.1805576388847 L 492.0 -408.3180593638813 L 530.4 -412.5303029393941 L 568.8 -417.0708298583403 L 607.2 -416.9470141059718 L 645.6 -420.87493025013947 L 684.0 -422.1055637888724" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip3);"> + <path d="M 330.4 -374.6171827656345 L 330.4 -390.6171827656345 L 346.4 -390.6171827656345 L 346.4 -374.6171827656345 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -382.6171827656345 M 342.4 -382.6171827656345 L 342.4 -382.617 M 342.4 -382.617 A 4 4 0 1 0 334.4 -382.617 A 4 4 0 1 0 342.4 -382.617 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip4);"> + <path d="M 368.8 -387.255629488741 L 368.8 -403.255629488741 L 384.8 -403.255629488741 L 384.8 -387.255629488741 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -395.255629488741 M 380.8 -395.255629488741 L 380.8 -395.256 M 380.8 -395.256 A 4 4 0 1 0 372.8 -395.256 A 4 4 0 1 0 380.8 -395.256 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 407.2 -394.75559048881905 L 407.2 -410.75559048881905 L 423.2 -410.75559048881905 L 423.2 -394.75559048881905 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -402.75559048881905 M 419.2 -402.75559048881905 L 419.2 -402.756 M 419.2 -402.756 A 4 4 0 1 0 411.2 -402.756 A 4 4 0 1 0 419.2 -402.756 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 445.6 -397.1805576388847 L 445.6 -413.1805576388847 L 461.6 -413.1805576388847 L 461.6 -397.1805576388847 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -405.1805576388847 M 457.6 -405.1805576388847 L 457.6 -405.181 M 457.6 -405.181 A 4 4 0 1 0 449.6 -405.181 A 4 4 0 1 0 457.6 -405.181 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 484.0 -400.3180593638813 L 484.0 -416.3180593638813 L 500.0 -416.3180593638813 L 500.0 -400.3180593638813 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -408.3180593638813 M 496.0 -408.3180593638813 L 496 -408.318 M 496 -408.318 A 4 4 0 1 0 488 -408.318 A 4 4 0 1 0 496 -408.318 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 522.4 -404.5303029393941 L 522.4 -420.5303029393941 L 538.4 -420.5303029393941 L 538.4 -404.5303029393941 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -412.5303029393941 M 534.4 -412.5303029393941 L 534.4 -412.53 M 534.4 -412.53 A 4 4 0 1 0 526.4 -412.53 A 4 4 0 1 0 534.4 -412.53 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 560.8 -409.0708298583403 L 560.8 -425.0708298583403 L 576.8 -425.0708298583403 L 576.8 -409.0708298583403 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -417.0708298583403 M 572.8 -417.0708298583403 L 572.8 -417.071 M 572.8 -417.071 A 4 4 0 1 0 564.8 -417.071 A 4 4 0 1 0 572.8 -417.071 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip10);"> + <path d="M 599.2 -408.9470141059718 L 599.2 -424.9470141059718 L 615.2 -424.9470141059718 L 615.2 -408.9470141059718 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -416.9470141059718 M 611.2 -416.9470141059718 L 611.2 -416.947 M 611.2 -416.947 A 4 4 0 1 0 603.2 -416.947 A 4 4 0 1 0 611.2 -416.947 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip11);"> + <path d="M 637.6 -412.87493025013947 L 637.6 -428.87493025013947 L 653.6 -428.87493025013947 L 653.6 -412.87493025013947 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -420.87493025013947 M 649.6 -420.87493025013947 L 649.6 -420.875 M 649.6 -420.875 A 4 4 0 1 0 641.6 -420.875 A 4 4 0 1 0 649.6 -420.875 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 676.0 -414.1055637888724 L 676.0 -430.1055637888724 L 692.0 -430.1055637888724 L 692.0 -414.1055637888724 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -422.1055637888724 M 688.0 -422.1055637888724 L 688 -422.106 M 688 -422.106 A 4 4 0 1 0 680 -422.106 A 4 4 0 1 0 688 -422.106 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip13);"> + <path d="M 338.4 -366.49671500656996 L 376.8 -372.4158471683057 L 415.2 -376.05837988324026 L 453.6 -381.13588172823654 L 492.0 -380.4262511474977 L 530.4 -384.32195935608127 L 568.8 -386.01221597556804 L 607.2 -389.05454589090823 L 645.6 -389.747544504911 L 684.0 -392.61589876820244" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip14);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip15);"> + <path d="M 334.4 -362.49671500656996 L 334.4 -370.49671500656996 L 342.4 -370.49671500656996 L 342.4 -362.49671500656996 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 334.4 -362.49671500656996 L 334.4 -370.49671500656996 L 342.4 -370.49671500656996 L 342.4 -362.49671500656996 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip16);"> + <path d="M 372.8 -368.4158471683057 L 372.8 -376.4158471683057 L 380.8 -376.4158471683057 L 380.8 -368.4158471683057 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 372.8 -368.4158471683057 L 372.8 -376.4158471683057 L 380.8 -376.4158471683057 L 380.8 -368.4158471683057 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip17);"> + <path d="M 411.2 -372.05837988324026 L 411.2 -380.05837988324026 L 419.2 -380.05837988324026 L 419.2 -372.05837988324026 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 411.2 -372.05837988324026 L 411.2 -380.05837988324026 L 419.2 -380.05837988324026 L 419.2 -372.05837988324026 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip18);"> + <path d="M 449.6 -377.13588172823654 L 449.6 -385.13588172823654 L 457.6 -385.13588172823654 L 457.6 -377.13588172823654 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 449.6 -377.13588172823654 L 449.6 -385.13588172823654 L 457.6 -385.13588172823654 L 457.6 -377.13588172823654 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip19);"> + <path d="M 488.0 -376.4262511474977 L 488.0 -384.4262511474977 L 496.0 -384.4262511474977 L 496.0 -376.4262511474977 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 488.0 -376.4262511474977 L 488.0 -384.4262511474977 L 496.0 -384.4262511474977 L 496.0 -376.4262511474977 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip20);"> + <path d="M 526.4 -380.32195935608127 L 526.4 -388.32195935608127 L 534.4 -388.32195935608127 L 534.4 -380.32195935608127 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 526.4 -380.32195935608127 L 526.4 -388.32195935608127 L 534.4 -388.32195935608127 L 534.4 -380.32195935608127 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip21);"> + <path d="M 564.8 -382.01221597556804 L 564.8 -390.01221597556804 L 572.8 -390.01221597556804 L 572.8 -382.01221597556804 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 564.8 -382.01221597556804 L 564.8 -390.01221597556804 L 572.8 -390.01221597556804 L 572.8 -382.01221597556804 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip22);"> + <path d="M 603.2 -385.05454589090823 L 603.2 -393.05454589090823 L 611.2 -393.05454589090823 L 611.2 -385.05454589090823 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 603.2 -385.05454589090823 L 603.2 -393.05454589090823 L 611.2 -393.05454589090823 L 611.2 -385.05454589090823 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip23);"> + <path d="M 641.6 -385.747544504911 L 641.6 -393.747544504911 L 649.6 -393.747544504911 L 649.6 -385.747544504911 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 641.6 -385.747544504911 L 641.6 -393.747544504911 L 649.6 -393.747544504911 L 649.6 -385.747544504911 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip24);"> + <path d="M 680.0 -388.61589876820244 L 680.0 -396.61589876820244 L 688.0 -396.61589876820244 L 688.0 -388.61589876820244 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 680.0 -388.61589876820244 L 680.0 -396.61589876820244 L 688.0 -396.61589876820244 L 688.0 -388.61589876820244 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip25);"> + <path d="M 338.4 -305.36429767140464 L 376.8 -314.1025877948244 L 415.2 -300.022 L 453.6 -300.0164999670001 L 492.0 -300.0131999736001 L 530.4 -300.01099997360006 L 568.8 -520.0 L 607.2 -409.999736000528 L 645.6 -373.33324533350935 L 684.0 -300.00659998680004" style="stroke:rgb(205,0,0);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip26);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip27);"> + <path d="M 332.15 -300.36429767140464 L 332.15 -310.36429767140464 L 344.65 -310.36429767140464 L 344.65 -300.36429767140464 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -300.36429767140464 L 332.15 -310.36429767140464 L 344.65 -310.36429767140464 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip28);"> + <path d="M 370.55 -309.1025877948244 L 370.55 -319.1025877948244 L 383.05 -319.1025877948244 L 383.05 -309.1025877948244 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -309.1025877948244 L 370.55 -319.1025877948244 L 383.05 -319.1025877948244 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip29);"> + <path d="M 408.95 -295.022 L 408.95 -305.022 L 421.45 -305.022 L 421.45 -295.022 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -295.022 L 408.95 -305.022 L 421.45 -305.022 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip30);"> + <path d="M 447.35 -295.0164999670001 L 447.35 -305.0164999670001 L 459.85 -305.0164999670001 L 459.85 -295.0164999670001 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -295.0164999670001 L 447.35 -305.0164999670001 L 459.85 -305.0164999670001 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip31);"> + <path d="M 485.75 -295.0131999736001 L 485.75 -305.0131999736001 L 498.25 -305.0131999736001 L 498.25 -295.0131999736001 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -295.0131999736001 L 485.75 -305.0131999736001 L 498.25 -305.0131999736001 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip32);"> + <path d="M 524.15 -295.01099997360006 L 524.15 -305.01099997360006 L 536.65 -305.01099997360006 L 536.65 -295.01099997360006 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -295.01099997360006 L 524.15 -305.01099997360006 L 536.65 -305.01099997360006 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip33);"> + <path d="M 562.55 -515.0 L 562.55 -525.0 L 575.05 -525.0 L 575.05 -515.0 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -515.0 L 562.55 -525.0 L 575.05 -525.0 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip34);"> + <path d="M 600.95 -404.999736000528 L 600.95 -414.999736000528 L 613.45 -414.999736000528 L 613.45 -404.999736000528 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -404.999736000528 L 600.95 -414.999736000528 L 613.45 -414.999736000528 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip35);"> + <path d="M 639.35 -368.33324533350935 L 639.35 -378.33324533350935 L 651.85 -378.33324533350935 L 651.85 -368.33324533350935 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -368.33324533350935 L 639.35 -378.33324533350935 L 651.85 -378.33324533350935 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip36);"> + <path d="M 677.75 -295.00659998680004 L 677.75 -305.00659998680004 L 690.25 -305.00659998680004 L 690.25 -295.00659998680004 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -295.00659998680004 L 677.75 -305.00659998680004 L 690.25 -305.00659998680004 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip37);"> + <path d="M 338.4 -302.65646828706343 L 376.8 -302.8030671938656 L 415.2 -302.6080111839776 L 453.6 -303.04239591520815 L 492.0 -302.87882184235633 L 530.4 -303.0942058115884 L 568.8 -303.08834502330996 L 607.2 -303.4056987886024 L 645.6 -303.3236741526517 L 684.0 -303.5650884698231" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip38);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip39);"> + <path d="M 330.4 -294.65646828706343 L 330.4 -310.65646828706343 L 346.4 -310.65646828706343 L 346.4 -294.65646828706343 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -302.65646828706343 M 342.4 -302.65646828706343 L 342.4 -302.656 M 342.4 -302.656 A 4 4 0 1 0 334.4 -302.656 A 4 4 0 1 0 342.4 -302.656 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip40);"> + <path d="M 368.8 -294.8030671938656 L 368.8 -310.8030671938656 L 384.8 -310.8030671938656 L 384.8 -294.8030671938656 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -302.8030671938656 M 380.8 -302.8030671938656 L 380.8 -302.803 M 380.8 -302.803 A 4 4 0 1 0 372.8 -302.803 A 4 4 0 1 0 380.8 -302.803 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip41);"> + <path d="M 407.2 -294.6080111839776 L 407.2 -310.6080111839776 L 423.2 -310.6080111839776 L 423.2 -294.6080111839776 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -302.6080111839776 M 419.2 -302.6080111839776 L 419.2 -302.608 M 419.2 -302.608 A 4 4 0 1 0 411.2 -302.608 A 4 4 0 1 0 419.2 -302.608 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip42);"> + <path d="M 445.6 -295.04239591520815 L 445.6 -311.04239591520815 L 461.6 -311.04239591520815 L 461.6 -295.04239591520815 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -303.04239591520815 M 457.6 -303.04239591520815 L 457.6 -303.042 M 457.6 -303.042 A 4 4 0 1 0 449.6 -303.042 A 4 4 0 1 0 457.6 -303.042 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip43);"> + <path d="M 484.0 -294.87882184235633 L 484.0 -310.87882184235633 L 500.0 -310.87882184235633 L 500.0 -294.87882184235633 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -302.87882184235633 M 496.0 -302.87882184235633 L 496 -302.879 M 496 -302.879 A 4 4 0 1 0 488 -302.879 A 4 4 0 1 0 496 -302.879 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip44);"> + <path d="M 522.4 -295.0942058115884 L 522.4 -311.0942058115884 L 538.4 -311.0942058115884 L 538.4 -295.0942058115884 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -303.0942058115884 M 534.4 -303.0942058115884 L 534.4 -303.094 M 534.4 -303.094 A 4 4 0 1 0 526.4 -303.094 A 4 4 0 1 0 534.4 -303.094 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip45);"> + <path d="M 560.8 -295.08834502330996 L 560.8 -311.08834502330996 L 576.8 -311.08834502330996 L 576.8 -295.08834502330996 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -303.08834502330996 M 572.8 -303.08834502330996 L 572.8 -303.088 M 572.8 -303.088 A 4 4 0 1 0 564.8 -303.088 A 4 4 0 1 0 572.8 -303.088 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip46);"> + <path d="M 599.2 -295.4056987886024 L 599.2 -311.4056987886024 L 615.2 -311.4056987886024 L 615.2 -295.4056987886024 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -303.4056987886024 M 611.2 -303.4056987886024 L 611.2 -303.406 M 611.2 -303.406 A 4 4 0 1 0 603.2 -303.406 A 4 4 0 1 0 611.2 -303.406 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip47);"> + <path d="M 637.6 -295.3236741526517 L 637.6 -311.3236741526517 L 653.6 -311.3236741526517 L 653.6 -295.3236741526517 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -303.3236741526517 M 649.6 -303.3236741526517 L 649.6 -303.324 M 649.6 -303.324 A 4 4 0 1 0 641.6 -303.324 A 4 4 0 1 0 649.6 -303.324 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip48);"> + <path d="M 676.0 -295.5650884698231 L 676.0 -311.5650884698231 L 692.0 -311.5650884698231 L 692.0 -295.5650884698231 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -303.5650884698231 M 688.0 -303.5650884698231 L 688 -303.565 M 688 -303.565 A 4 4 0 1 0 680 -303.565 A 4 4 0 1 0 688 -303.565 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip49);"> + <path d="M 338.4 -300.57604288791424 L 376.8 -300.64005351989294 L 415.2 -300.022 L 453.6 -300.1926074147852 L 492.0 -300.0131999736001 L 530.4 -300.01099997360006 L 568.8 -300.00942855634287 L 607.2 -300.00824998350004 L 645.6 -300.00733332453336 L 684.0 -300.00659998680004" style="stroke:rgb(147,147,147);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip50);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip51);"> + <path d="M 332.15 -295.57604288791424 L 332.15 -305.57604288791424 L 344.65 -305.57604288791424 L 344.65 -295.57604288791424 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 332.15 -295.57604288791424 L 344.65 -295.57604288791424 L 338.4 -305.57604288791424 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip52);"> + <path d="M 370.55 -295.64005351989294 L 370.55 -305.64005351989294 L 383.05 -305.64005351989294 L 383.05 -295.64005351989294 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 370.55 -295.64005351989294 L 383.05 -295.64005351989294 L 376.8 -305.64005351989294 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip53);"> + <path d="M 408.95 -295.022 L 408.95 -305.022 L 421.45 -305.022 L 421.45 -295.022 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 408.95 -295.022 L 421.45 -295.022 L 415.2 -305.022 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip54);"> + <path d="M 447.35 -295.1926074147852 L 447.35 -305.1926074147852 L 459.85 -305.1926074147852 L 459.85 -295.1926074147852 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 447.35 -295.1926074147852 L 459.85 -295.1926074147852 L 453.6 -305.1926074147852 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip55);"> + <path d="M 485.75 -295.0131999736001 L 485.75 -305.0131999736001 L 498.25 -305.0131999736001 L 498.25 -295.0131999736001 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 485.75 -295.0131999736001 L 498.25 -295.0131999736001 L 492.0 -305.0131999736001 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip56);"> + <path d="M 524.15 -295.01099997360006 L 524.15 -305.01099997360006 L 536.65 -305.01099997360006 L 536.65 -295.01099997360006 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 524.15 -295.01099997360006 L 536.65 -295.01099997360006 L 530.4 -305.01099997360006 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip57);"> + <path d="M 562.55 -295.00942855634287 L 562.55 -305.00942855634287 L 575.05 -305.00942855634287 L 575.05 -295.00942855634287 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 562.55 -295.00942855634287 L 575.05 -295.00942855634287 L 568.8 -305.00942855634287 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip58);"> + <path d="M 600.95 -295.00824998350004 L 600.95 -305.00824998350004 L 613.45 -305.00824998350004 L 613.45 -295.00824998350004 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.95 -295.00824998350004 L 613.45 -295.00824998350004 L 607.2 -305.00824998350004 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip59);"> + <path d="M 639.35 -295.00733332453336 L 639.35 -305.00733332453336 L 651.85 -305.00733332453336 L 651.85 -295.00733332453336 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 639.35 -295.00733332453336 L 651.85 -295.00733332453336 L 645.6 -305.00733332453336 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip60);"> + <path d="M 677.75 -295.00659998680004 L 677.75 -305.00659998680004 L 690.25 -305.00659998680004 L 690.25 -295.00659998680004 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 677.75 -295.00659998680004 L 690.25 -295.00659998680004 L 684.0 -305.00659998680004 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip61);"> + <path d="M 338.4 -300.0659998680003 L 376.8 -300.03299993400015 L 415.2 -300.3275613048774 L 453.6 -300.0164999670001 L 492.0 -300.166386987226 L 530.4 -300.224850990298 L 568.8 -300.00942855634287 L 607.2 -300.00824998350004 L 645.6 -300.00733332453336 L 684.0 -300.00659998680004" style="stroke:rgb(137,42,226);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip62);"> + <path d="M 331.25714285714287 -300.0659998680003 L 345.54285714285714 -300.0659998680003" style="stroke-width:1;"/> + <path d="M 338.4 -292.9231427251431 L 338.4 -307.2088570108574" style="stroke-width:1;"/> + <path d="M 369.65714285714284 -300.03299993400015 L 383.9428571428571 -300.03299993400015" style="stroke-width:1;"/> + <path d="M 376.8 -292.890142791143 L 376.8 -307.17585707685726" style="stroke-width:1;"/> + <path d="M 408.0571428571429 -300.3275613048774 L 422.34285714285716 -300.3275613048774" style="stroke-width:1;"/> + <path d="M 415.2 -293.18470416202024 L 415.2 -307.4704184477345" style="stroke-width:1;"/> + <path d="M 446.45714285714286 -300.0164999670001 L 460.74285714285713 -300.0164999670001" style="stroke-width:1;"/> + <path d="M 453.6 -292.8736428241429 L 453.6 -307.1593571098572" style="stroke-width:1;"/> + <path d="M 484.8571428571429 -300.166386987226 L 499.1428571428571 -300.166386987226" style="stroke-width:1;"/> + <path d="M 492.0 -293.0235298443689 L 492.0 -307.3092441300832" style="stroke-width:1;"/> + <path d="M 523.2571428571429 -300.224850990298 L 537.5428571428572 -300.224850990298" style="stroke-width:1;"/> + <path d="M 530.4 -293.08199384744086 L 530.4 -307.3677081331552" style="stroke-width:1;"/> + <path d="M 561.6571428571428 -300.00942855634287 L 575.9428571428572 -300.00942855634287" style="stroke-width:1;"/> + <path d="M 568.8 -292.86657141348576 L 568.8 -307.15228569920004" style="stroke-width:1;"/> + <path d="M 600.0571428571428 -300.00824998350004 L 614.3428571428572 -300.00824998350004" style="stroke-width:1;"/> + <path d="M 607.2 -292.86539284064287 L 607.2 -307.1511071263572" style="stroke-width:1;"/> + <path d="M 638.4571428571428 -300.00733332453336 L 652.7428571428572 -300.00733332453336" style="stroke-width:1;"/> + <path d="M 645.6 -292.8644761816762 L 645.6 -307.1501904673905" style="stroke-width:1;"/> + <path d="M 676.8571428571429 -300.00659998680004 L 691.1428571428571 -300.00659998680004" style="stroke-width:1;"/> + <path d="M 684.0 -292.8637428439429 L 684.0 -307.14945712965715" style="stroke-width:1;"/> + </g> + <g style="clip-path:url(#clip63);"> + <path d="M 338.4 -300.2474691450617 L 376.8 -300.03299993400015 L 415.2 -300.022 L 453.6 -300.0164999670001 L 492.0 -300.0131999736001 L 530.4 -300.01099997360006 L 568.8 -300.00942855634287 L 607.2 -300.00824998350004 L 645.6 -300.00733332453336 L 684.0 -300.00659998680004" style="stroke:rgb(126,126,126);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip64);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip65);"> + <path d="M 331.25714285714287 -293.1046120022046 L 331.25714285714287 -307.39032628791887 L 345.54285714285714 -307.39032628791887 L 345.54285714285714 -293.1046120022046 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 331.25714285714287 -300.2474691450617 L 338.4 -307.39032628791887 L 345.54285714285714 -300.2474691450617 L 338.4 -293.1046120022046 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip66);"> + <path d="M 369.65714285714284 -292.890142791143 L 369.65714285714284 -307.17585707685726 L 383.9428571428571 -307.17585707685726 L 383.9428571428571 -292.890142791143 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 369.65714285714284 -300.03299993400015 L 376.8 -307.17585707685726 L 383.9428571428571 -300.03299993400015 L 376.8 -292.890142791143 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip67);"> + <path d="M 408.0571428571429 -292.8791428571429 L 408.0571428571429 -307.16485714285716 L 422.34285714285716 -307.16485714285716 L 422.34285714285716 -292.8791428571429 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 408.0571428571429 -300.022 L 415.2 -307.16485714285716 L 422.34285714285716 -300.022 L 415.2 -292.8791428571429 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip68);"> + <path d="M 446.45714285714286 -292.8736428241429 L 446.45714285714286 -307.1593571098572 L 460.74285714285713 -307.1593571098572 L 460.74285714285713 -292.8736428241429 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 446.45714285714286 -300.0164999670001 L 453.6 -307.1593571098572 L 460.74285714285713 -300.0164999670001 L 453.6 -292.8736428241429 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip69);"> + <path d="M 484.8571428571429 -292.8703428307429 L 484.8571428571429 -307.1560571164572 L 499.1428571428571 -307.1560571164572 L 499.1428571428571 -292.8703428307429 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 484.8571428571429 -300.0131999736001 L 492.0 -307.1560571164572 L 499.1428571428571 -300.0131999736001 L 492.0 -292.8703428307429 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip70);"> + <path d="M 523.2571428571429 -292.8681428307429 L 523.2571428571429 -307.1538571164572 L 537.5428571428572 -307.1538571164572 L 537.5428571428572 -292.8681428307429 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 523.2571428571429 -300.01099997360006 L 530.4 -307.1538571164572 L 537.5428571428572 -300.01099997360006 L 530.4 -292.8681428307429 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip71);"> + <path d="M 561.6571428571428 -292.86657141348576 L 561.6571428571428 -307.15228569920004 L 575.9428571428572 -307.15228569920004 L 575.9428571428572 -292.86657141348576 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 561.6571428571428 -300.00942855634287 L 568.8 -307.15228569920004 L 575.9428571428572 -300.00942855634287 L 568.8 -292.86657141348576 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip72);"> + <path d="M 600.0571428571428 -292.86539284064287 L 600.0571428571428 -307.1511071263572 L 614.3428571428572 -307.1511071263572 L 614.3428571428572 -292.86539284064287 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.0571428571428 -300.00824998350004 L 607.2 -307.1511071263572 L 614.3428571428572 -300.00824998350004 L 607.2 -292.86539284064287 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip73);"> + <path d="M 638.4571428571428 -292.8644761816762 L 638.4571428571428 -307.1501904673905 L 652.7428571428572 -307.1501904673905 L 652.7428571428572 -292.8644761816762 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 638.4571428571428 -300.00733332453336 L 645.6 -307.1501904673905 L 652.7428571428572 -300.00733332453336 L 645.6 -292.8644761816762 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip74);"> + <path d="M 676.8571428571429 -292.8637428439429 L 676.8571428571429 -307.14945712965715 L 691.1428571428571 -307.14945712965715 L 691.1428571428571 -292.8637428439429 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 676.8571428571429 -300.00659998680004 L 684.0 -307.14945712965715 L 691.1428571428571 -300.00659998680004 L 684.0 -292.8637428439429 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip75);"> + <path d="M 290 -54 L 290 -182 L 324 -182 L 324 -54 Z" style="stroke:none;"/> + </g> + <path d="M 300 -172.66666666666669 L 314 -172.66666666666669" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip76);"> + <path d="M 299.0 -164.66666666666669 L 299.0 -180.66666666666669 L 315.0 -180.66666666666669 L 315.0 -164.66666666666669 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -172.66666666666669 M 311.0 -172.66666666666669 L 311 -172.667 M 311 -172.667 A 4 4 0 1 0 303 -172.667 A 4 4 0 1 0 311 -172.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-168.0"> + n_pq_deque + </text> + <path d="M 300 -154.66666666666666 L 314 -154.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip77);"> + <path d="M 303.0 -150.66666666666666 L 303.0 -158.66666666666666 L 311.0 -158.66666666666666 L 311.0 -150.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 303.0 -150.66666666666666 L 303.0 -158.66666666666666 L 311.0 -158.66666666666666 L 311.0 -150.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-150.0"> + n_pq_vector + </text> + <path d="M 300 -136.66666666666666 L 314 -136.66666666666666" style="stroke:rgb(205,0,0);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip78);"> + <path d="M 300.75 -131.66666666666666 L 300.75 -141.66666666666666 L 313.25 -141.66666666666666 L 313.25 -131.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -131.66666666666666 L 300.75 -141.66666666666666 L 313.25 -141.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-132.0"> + binary_heap + </text> + <path d="M 300 -118.66666666666666 L 314 -118.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip79);"> + <path d="M 299.0 -110.66666666666666 L 299.0 -126.66666666666666 L 315.0 -126.66666666666666 L 315.0 -110.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -118.66666666666666 M 311.0 -118.66666666666666 L 311 -118.667 M 311 -118.667 A 4 4 0 1 0 303 -118.667 A 4 4 0 1 0 311 -118.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-114.0"> + thin_heap + </text> + <path d="M 300 -100.66666666666666 L 314 -100.66666666666666" style="stroke:rgb(147,147,147);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip80);"> + <path d="M 300.75 -95.66666666666666 L 300.75 -105.66666666666666 L 313.25 -105.66666666666666 L 313.25 -95.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 300.75 -95.66666666666666 L 313.25 -95.66666666666666 L 307.0 -105.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-96.0"> + binomial_heap + </text> + <path d="M 300 -82.66666666666666 L 314 -82.66666666666666" style="stroke:rgb(137,42,226);stroke-width:2;"/> + <path d="M 299.85714285714283 -82.66666666666666 L 314.14285714285717 -82.66666666666666" style="stroke-width:1;"/> + <path d="M 307.0 -75.52380952380952 L 307.0 -89.8095238095238" style="stroke-width:1;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-78.0"> + pairing_heap + </text> + <path d="M 300 -64.66666666666666 L 314 -64.66666666666666" style="stroke:rgb(126,126,126);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip81);"> + <path d="M 299.85714285714283 -57.52380952380952 L 299.85714285714283 -71.8095238095238 L 314.14285714285717 -71.8095238095238 L 314.14285714285717 -57.52380952380952 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 299.85714285714283 -64.66666666666666 L 307.0 -71.8095238095238 L 314.14285714285717 -64.66666666666666 L 307.0 -57.52380952380952 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-60.0"> + rc_binomial_heap + </text> + </g> + </g> + </g> + </g> + </g> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_down_timing_test_local.pdf b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_down_timing_test_local.pdf Binary files differnew file mode 100644 index 00000000000..a0d0180b455 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_down_timing_test_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_down_timing_test_local.png b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_down_timing_test_local.png Binary files differnew file mode 100644 index 00000000000..4441a9ce769 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_down_timing_test_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_down_timing_test_local.svg b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_down_timing_test_local.svg new file mode 100644 index 00000000000..3f0ea1491f6 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_down_timing_test_local.svg @@ -0,0 +1,793 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 496.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 300.0 -315.90976699531035 M 304.0 -315.90976699531035 L 304 -315.91 M 304 -315.91 A 4 4 0 1 0 296 -315.91 A 4 4 0 1 0 304 -315.91 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 350.5263157894737 -335.1376093940401 M 354.5263157894737 -335.1376093940401 L 354.526 -335.138 M 354.526 -335.138 A 4 4 0 1 0 346.526 -335.138 A 4 4 0 1 0 354.526 -335.138 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 401.0526315789474 -355.8980835271962 M 405.0526315789474 -355.8980835271962 L 405.053 -355.898 M 405.053 -355.898 A 4 4 0 1 0 397.053 -355.898 A 4 4 0 1 0 405.053 -355.898 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 451.57894736842104 -377.5620299595042 M 455.57894736842104 -377.5620299595042 L 455.579 -377.562 M 455.579 -377.562 A 4 4 0 1 0 447.579 -377.562 A 4 4 0 1 0 455.579 -377.562 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 502.10526315789474 -400.3102298044139 M 506.10526315789474 -400.3102298044139 L 506.105 -400.31 M 506.105 -400.31 A 4 4 0 1 0 498.105 -400.31 A 4 4 0 1 0 506.105 -400.31 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 552.6315789473684 -423.89788658715213 M 556.6315789473684 -423.89788658715213 L 556.632 -423.898 M 556.632 -423.898 A 4 4 0 1 0 548.632 -423.898 A 4 4 0 1 0 556.632 -423.898 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 603.1578947368421 -448.4831431631033 M 607.1578947368421 -448.4831431631033 L 607.158 -448.483 M 607.158 -448.483 A 4 4 0 1 0 599.158 -448.483 A 4 4 0 1 0 607.158 -448.483 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 653.6842105263158 -469.8584247258225 M 657.6842105263158 -469.8584247258225 L 657.684 -469.858 M 657.684 -469.858 A 4 4 0 1 0 649.684 -469.858 A 4 4 0 1 0 657.684 -469.858 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 704.2105263157895 -497.1126127789471 M 708.2105263157895 -497.1126127789471 L 708.211 -497.113 M 708.211 -497.113 A 4 4 0 1 0 700.211 -497.113 A 4 4 0 1 0 708.211 -497.113 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 754.7368421052631 -520.0 M 758.7368421052631 -520.0 L 758.737 -520 M 758.737 -520 A 4 4 0 1 0 750.737 -520 A 4 4 0 1 0 758.737 -520 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 296.0 -309.6265524414411 L 296.0 -317.6265524414411 L 304.0 -317.6265524414411 L 304.0 -309.6265524414411 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 346.5263157894737 -325.64301170562385 L 346.5263157894737 -333.64301170562385 L 354.5263157894737 -333.64301170562385 L 354.5263157894737 -325.64301170562385 Z"/> + </clipPath> + <clipPath id="clip17"> + <path d="M 397.0526315789474 -342.88090789360314 L 397.0526315789474 -350.88090789360314 L 405.0526315789474 -350.88090789360314 L 405.0526315789474 -342.88090789360314 Z"/> + </clipPath> + <clipPath id="clip18"> + <path d="M 447.57894736842104 -360.4849156234999 L 447.57894736842104 -368.4849156234999 L 455.57894736842104 -368.4849156234999 L 455.57894736842104 -360.4849156234999 Z"/> + </clipPath> + <clipPath id="clip19"> + <path d="M 498.10526315789474 -388.7383282252009 L 498.10526315789474 -396.7383282252009 L 506.10526315789474 -396.7383282252009 L 506.10526315789474 -388.7383282252009 Z"/> + </clipPath> + <clipPath id="clip20"> + <path d="M 548.6315789473684 -397.0413697180065 L 548.6315789473684 -405.0413697180065 L 556.6315789473684 -405.0413697180065 L 556.6315789473684 -397.0413697180065 Z"/> + </clipPath> + <clipPath id="clip21"> + <path d="M 599.1578947368421 -415.61069876789384 L 599.1578947368421 -423.61069876789384 L 607.1578947368421 -423.61069876789384 L 607.1578947368421 -415.61069876789384 Z"/> + </clipPath> + <clipPath id="clip22"> + <path d="M 649.6842105263158 -434.7811873022906 L 649.6842105263158 -442.7811873022906 L 657.6842105263158 -442.7811873022906 L 657.6842105263158 -434.7811873022906 Z"/> + </clipPath> + <clipPath id="clip23"> + <path d="M 700.2105263157895 -454.2105535246113 L 700.2105263157895 -462.2105535246113 L 708.2105263157895 -462.2105535246113 L 708.2105263157895 -454.2105535246113 Z"/> + </clipPath> + <clipPath id="clip24"> + <path d="M 750.7368421052631 -469.0770651009933 L 750.7368421052631 -477.0770651009933 L 758.7368421052631 -477.0770651009933 L 758.7368421052631 -469.0770651009933 Z"/> + </clipPath> + <clipPath id="clip25"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip26"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip27"> + <path d="M 300.0 -295.2036982878525 L 293.75 -305.2036982878525 L 306.25 -305.2036982878525 Z"/> + </clipPath> + <clipPath id="clip28"> + <path d="M 350.5263157894737 -295.2309086075108 L 344.2763157894737 -305.2309086075108 L 356.7763157894737 -305.2309086075108 Z"/> + </clipPath> + <clipPath id="clip29"> + <path d="M 401.0526315789474 -295.35524355329073 L 394.8026315789474 -305.35524355329073 L 407.3026315789474 -305.35524355329073 Z"/> + </clipPath> + <clipPath id="clip30"> + <path d="M 451.57894736842104 -295.4646253338749 L 445.32894736842104 -305.4646253338749 L 457.82894736842104 -305.4646253338749 Z"/> + </clipPath> + <clipPath id="clip31"> + <path d="M 502.10526315789474 -295.6507199389486 L 495.85526315789474 -305.6507199389486 L 508.35526315789474 -305.6507199389486 Z"/> + </clipPath> + <clipPath id="clip32"> + <path d="M 552.6315789473684 -295.618024445183 L 546.3815789473684 -305.618024445183 L 558.8815789473684 -305.618024445183 Z"/> + </clipPath> + <clipPath id="clip33"> + <path d="M 603.1578947368421 -295.7484652216191 L 596.9078947368421 -305.7484652216191 L 609.4078947368421 -305.7484652216191 Z"/> + </clipPath> + <clipPath id="clip34"> + <path d="M 653.6842105263158 -295.90264367391654 L 647.4342105263158 -305.90264367391654 L 659.9342105263158 -305.90264367391654 Z"/> + </clipPath> + <clipPath id="clip35"> + <path d="M 704.2105263157895 -296.00293440665655 L 697.9605263157895 -306.00293440665655 L 710.4605263157895 -306.00293440665655 Z"/> + </clipPath> + <clipPath id="clip36"> + <path d="M 754.7368421052631 -295.90264367391654 L 748.4868421052631 -305.90264367391654 L 760.9868421052631 -305.90264367391654 Z"/> + </clipPath> + <clipPath id="clip37"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip38"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip39"> + <path d="M 300.0 -300.22458343488057 M 304.0 -300.22458343488057 L 304 -300.225 M 304 -300.225 A 4 4 0 1 0 296 -300.225 A 4 4 0 1 0 304 -300.225 Z"/> + </clipPath> + <clipPath id="clip40"> + <path d="M 350.5263157894737 -300.2517341801755 M 354.5263157894737 -300.2517341801755 L 354.526 -300.252 M 354.526 -300.252 A 4 4 0 1 0 346.526 -300.252 A 4 4 0 1 0 354.526 -300.252 Z"/> + </clipPath> + <clipPath id="clip41"> + <path d="M 401.0526315789474 -300.2768897258841 M 405.0526315789474 -300.2768897258841 L 405.053 -300.277 M 405.053 -300.277 A 4 4 0 1 0 397.053 -300.277 A 4 4 0 1 0 405.053 -300.277 Z"/> + </clipPath> + <clipPath id="clip42"> + <path d="M 451.57894736842104 -300.28794672771807 M 455.57894736842104 -300.28794672771807 L 455.579 -300.288 M 455.579 -300.288 A 4 4 0 1 0 447.579 -300.288 A 4 4 0 1 0 455.579 -300.288 Z"/> + </clipPath> + <clipPath id="clip43"> + <path d="M 502.10526315789474 -300.291660376894 M 506.10526315789474 -300.291660376894 L 506.105 -300.292 M 506.105 -300.292 A 4 4 0 1 0 498.105 -300.292 A 4 4 0 1 0 506.105 -300.292 Z"/> + </clipPath> + <clipPath id="clip44"> + <path d="M 552.6315789473684 -300.31023187228436 M 556.6315789473684 -300.31023187228436 L 556.632 -300.31 M 556.632 -300.31 A 4 4 0 1 0 548.632 -300.31 A 4 4 0 1 0 556.632 -300.31 Z"/> + </clipPath> + <clipPath id="clip45"> + <path d="M 603.1578947368421 -300.31611836096647 M 607.1578947368421 -300.31611836096647 L 607.158 -300.316 M 607.158 -300.316 A 4 4 0 1 0 599.158 -300.316 A 4 4 0 1 0 607.158 -300.316 Z"/> + </clipPath> + <clipPath id="clip46"> + <path d="M 653.6842105263158 -300.33073845131275 M 657.6842105263158 -300.33073845131275 L 657.684 -300.331 M 657.684 -300.331 A 4 4 0 1 0 649.684 -300.331 A 4 4 0 1 0 657.684 -300.331 Z"/> + </clipPath> + <clipPath id="clip47"> + <path d="M 704.2105263157895 -300.2941430030895 M 708.2105263157895 -300.2941430030895 L 708.211 -300.294 M 708.211 -300.294 A 4 4 0 1 0 700.211 -300.294 A 4 4 0 1 0 708.211 -300.294 Z"/> + </clipPath> + <clipPath id="clip48"> + <path d="M 754.7368421052631 -300.3400017232254 M 758.7368421052631 -300.3400017232254 L 758.737 -300.34 M 758.737 -300.34 A 4 4 0 1 0 750.737 -300.34 A 4 4 0 1 0 758.737 -300.34 Z"/> + </clipPath> + <clipPath id="clip49"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip50"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip51"> + <path d="M 292.85714285714283 -300.1679098014598 L 300.0 -307.310766944317 L 307.14285714285717 -300.1679098014598 L 300.0 -293.0250526586027 Z"/> + </clipPath> + <clipPath id="clip52"> + <path d="M 343.38345864661653 -300.1683197813966 L 350.5263157894737 -307.3111769242537 L 357.6691729323308 -300.1683197813966 L 350.5263157894737 -293.0254626385394 Z"/> + </clipPath> + <clipPath id="clip53"> + <path d="M 393.90977443609023 -300.18987432763436 L 401.0526315789474 -307.3327314704915 L 408.1954887218045 -300.18987432763436 L 401.0526315789474 -293.04701718477725 Z"/> + </clipPath> + <clipPath id="clip54"> + <path d="M 444.43609022556393 -300.1749466169393 L 451.57894736842104 -307.31780375979645 L 458.72180451127815 -300.1749466169393 L 451.57894736842104 -293.03208947408217 Z"/> + </clipPath> + <clipPath id="clip55"> + <path d="M 494.9624060150376 -300.20742710141184 L 502.10526315789474 -307.35028424426895 L 509.2481203007519 -300.20742710141184 L 502.10526315789474 -293.06456995855467 Z"/> + </clipPath> + <clipPath id="clip56"> + <path d="M 545.4887218045112 -300.1916019841709 L 552.6315789473684 -307.3344591270281 L 559.7744360902255 -300.1916019841709 L 552.6315789473684 -293.0487448413138 Z"/> + </clipPath> + <clipPath id="clip57"> + <path d="M 596.015037593985 -300.20460219341976 L 603.1578947368421 -307.34745933627687 L 610.3007518796992 -300.20460219341976 L 603.1578947368421 -293.0617450505626 Z"/> + </clipPath> + <clipPath id="clip58"> + <path d="M 646.5413533834586 -300.1805097793041 L 653.6842105263158 -307.3233669221612 L 660.827067669173 -300.1805097793041 L 653.6842105263158 -293.0376526364469 Z"/> + </clipPath> + <clipPath id="clip59"> + <path d="M 697.0676691729323 -300.2223401893086 L 704.2105263157895 -307.36519733216574 L 711.3533834586467 -300.2223401893086 L 704.2105263157895 -293.07948304645146 Z"/> + </clipPath> + <clipPath id="clip60"> + <path d="M 747.593984962406 -300.2017648289699 L 754.7368421052631 -307.344621971827 L 761.8796992481203 -300.2017648289699 L 754.7368421052631 -293.0589076861127 Z"/> + </clipPath> + <clipPath id="clip61"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip62"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip63"> + <path d="M 293.75 -295.13010391049073 L 306.25 -295.13010391049073 L 300.0 -305.13010391049073 Z"/> + </clipPath> + <clipPath id="clip64"> + <path d="M 344.2763157894737 -295.1305604667479 L 356.7763157894737 -295.1305604667479 L 350.5263157894737 -305.1305604667479 Z"/> + </clipPath> + <clipPath id="clip65"> + <path d="M 394.8026315789474 -295.1319740039142 L 407.3026315789474 -295.1319740039142 L 401.0526315789474 -305.1319740039142 Z"/> + </clipPath> + <clipPath id="clip66"> + <path d="M 445.32894736842104 -295.13771372302847 L 457.82894736842104 -295.13771372302847 L 451.57894736842104 -305.13771372302847 Z"/> + </clipPath> + <clipPath id="clip67"> + <path d="M 495.85526315789474 -295.12636372364386 L 508.35526315789474 -295.12636372364386 L 502.10526315789474 -305.12636372364386 Z"/> + </clipPath> + <clipPath id="clip68"> + <path d="M 546.3815789473684 -295.13750358800144 L 558.8815789473684 -295.13750358800144 L 552.6315789473684 -305.13750358800144 Z"/> + </clipPath> + <clipPath id="clip69"> + <path d="M 596.9078947368421 -295.12546469234275 L 609.4078947368421 -295.12546469234275 L 603.1578947368421 -305.12546469234275 Z"/> + </clipPath> + <clipPath id="clip70"> + <path d="M 647.4342105263158 -295.1480287532464 L 659.9342105263158 -295.1480287532464 L 653.6842105263158 -305.1480287532464 Z"/> + </clipPath> + <clipPath id="clip71"> + <path d="M 697.9605263157895 -295.16962554312374 L 710.4605263157895 -295.16962554312374 L 704.2105263157895 -305.16962554312374 Z"/> + </clipPath> + <clipPath id="clip72"> + <path d="M 748.4868421052631 -295.127137648782 L 760.9868421052631 -295.127137648782 L 754.7368421052631 -305.127137648782 Z"/> + </clipPath> + <clipPath id="clip73"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip74"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip75"> + <path d="M 290 -54 L 290 -182 L 324 -182 L 324 -54 Z"/> + </clipPath> + <clipPath id="clip76"> + <path d="M 307.0 -172.66666666666669 M 311.0 -172.66666666666669 L 311 -172.667 M 311 -172.667 A 4 4 0 1 0 303 -172.667 A 4 4 0 1 0 311 -172.667 Z"/> + </clipPath> + <clipPath id="clip77"> + <path d="M 303.0 -150.66666666666666 L 303.0 -158.66666666666666 L 311.0 -158.66666666666666 L 311.0 -150.66666666666666 Z"/> + </clipPath> + <clipPath id="clip78"> + <path d="M 307.0 -131.66666666666666 L 300.75 -141.66666666666666 L 313.25 -141.66666666666666 Z"/> + </clipPath> + <clipPath id="clip79"> + <path d="M 307.0 -118.66666666666666 M 311.0 -118.66666666666666 L 311 -118.667 M 311 -118.667 A 4 4 0 1 0 303 -118.667 A 4 4 0 1 0 311 -118.667 Z"/> + </clipPath> + <clipPath id="clip80"> + <path d="M 299.85714285714283 -100.66666666666666 L 307.0 -107.8095238095238 L 314.14285714285717 -100.66666666666666 L 307.0 -93.52380952380952 Z"/> + </clipPath> + <clipPath id="clip81"> + <path d="M 300.75 -77.66666666666666 L 313.25 -77.66666666666666 L 307.0 -87.66666666666666 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 100 + </text> + <path d="M 401.0526315789474 -300 L 401.0526315789474 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,401.053,-279.001)" x="401.0526315789474" y="-279.00097346438844"> + 300 + </text> + <path d="M 502.10526315789474 -300 L 502.10526315789474 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,502.105,-279.001)" x="502.10526315789474" y="-279.00097346438844"> + 500 + </text> + <path d="M 603.1578947368421 -300 L 603.1578947368421 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,603.158,-279.001)" x="603.1578947368421" y="-279.00097346438844"> + 700 + </text> + <path d="M 704.2105263157895 -300 L 704.2105263157895 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,704.211,-279.001)" x="704.2105263157895" y="-279.00097346438844"> + 900 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 8.12e-05 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.5004867321942"> + 1.62e-04 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.5004867321942"> + 2.44e-04 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.5004867321942"> + 3.25e-04 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321942"> + 4.06e-04 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 300.0 -315.90976699531035 L 350.5263157894737 -335.1376093940401 L 401.0526315789474 -355.8980835271962 L 451.57894736842104 -377.5620299595042 L 502.10526315789474 -400.3102298044139 L 552.6315789473684 -423.89788658715213 L 603.1578947368421 -448.4831431631033 L 653.6842105263158 -469.8584247258225 L 704.2105263157895 -497.1126127789471 L 754.7368421052631 -520.0" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip3);"> + <path d="M 292.0 -307.90976699531035 L 292.0 -323.90976699531035 L 308.0 -323.90976699531035 L 308.0 -307.90976699531035 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 300.0 -315.90976699531035 M 304.0 -315.90976699531035 L 304 -315.91 M 304 -315.91 A 4 4 0 1 0 296 -315.91 A 4 4 0 1 0 304 -315.91 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip4);"> + <path d="M 342.5263157894737 -327.1376093940401 L 342.5263157894737 -343.1376093940401 L 358.5263157894737 -343.1376093940401 L 358.5263157894737 -327.1376093940401 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 350.5263157894737 -335.1376093940401 M 354.5263157894737 -335.1376093940401 L 354.526 -335.138 M 354.526 -335.138 A 4 4 0 1 0 346.526 -335.138 A 4 4 0 1 0 354.526 -335.138 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 393.0526315789474 -347.8980835271962 L 393.0526315789474 -363.8980835271962 L 409.0526315789474 -363.8980835271962 L 409.0526315789474 -347.8980835271962 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 401.0526315789474 -355.8980835271962 M 405.0526315789474 -355.8980835271962 L 405.053 -355.898 M 405.053 -355.898 A 4 4 0 1 0 397.053 -355.898 A 4 4 0 1 0 405.053 -355.898 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 443.57894736842104 -369.5620299595042 L 443.57894736842104 -385.5620299595042 L 459.57894736842104 -385.5620299595042 L 459.57894736842104 -369.5620299595042 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 451.57894736842104 -377.5620299595042 M 455.57894736842104 -377.5620299595042 L 455.579 -377.562 M 455.579 -377.562 A 4 4 0 1 0 447.579 -377.562 A 4 4 0 1 0 455.579 -377.562 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 494.10526315789474 -392.3102298044139 L 494.10526315789474 -408.3102298044139 L 510.10526315789474 -408.3102298044139 L 510.10526315789474 -392.3102298044139 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 502.10526315789474 -400.3102298044139 M 506.10526315789474 -400.3102298044139 L 506.105 -400.31 M 506.105 -400.31 A 4 4 0 1 0 498.105 -400.31 A 4 4 0 1 0 506.105 -400.31 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 544.6315789473684 -415.89788658715213 L 544.6315789473684 -431.89788658715213 L 560.6315789473684 -431.89788658715213 L 560.6315789473684 -415.89788658715213 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 552.6315789473684 -423.89788658715213 M 556.6315789473684 -423.89788658715213 L 556.632 -423.898 M 556.632 -423.898 A 4 4 0 1 0 548.632 -423.898 A 4 4 0 1 0 556.632 -423.898 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 595.1578947368421 -440.4831431631033 L 595.1578947368421 -456.4831431631033 L 611.1578947368421 -456.4831431631033 L 611.1578947368421 -440.4831431631033 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 603.1578947368421 -448.4831431631033 M 607.1578947368421 -448.4831431631033 L 607.158 -448.483 M 607.158 -448.483 A 4 4 0 1 0 599.158 -448.483 A 4 4 0 1 0 607.158 -448.483 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip10);"> + <path d="M 645.6842105263158 -461.8584247258225 L 645.6842105263158 -477.8584247258225 L 661.6842105263158 -477.8584247258225 L 661.6842105263158 -461.8584247258225 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 653.6842105263158 -469.8584247258225 M 657.6842105263158 -469.8584247258225 L 657.684 -469.858 M 657.684 -469.858 A 4 4 0 1 0 649.684 -469.858 A 4 4 0 1 0 657.684 -469.858 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip11);"> + <path d="M 696.2105263157895 -489.1126127789471 L 696.2105263157895 -505.1126127789471 L 712.2105263157895 -505.1126127789471 L 712.2105263157895 -489.1126127789471 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 704.2105263157895 -497.1126127789471 M 708.2105263157895 -497.1126127789471 L 708.211 -497.113 M 708.211 -497.113 A 4 4 0 1 0 700.211 -497.113 A 4 4 0 1 0 708.211 -497.113 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 746.7368421052631 -512.0 L 746.7368421052631 -528.0 L 762.7368421052631 -528.0 L 762.7368421052631 -512.0 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 754.7368421052631 -520.0 M 758.7368421052631 -520.0 L 758.737 -520 M 758.737 -520 A 4 4 0 1 0 750.737 -520 A 4 4 0 1 0 758.737 -520 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip13);"> + <path d="M 300.0 -313.6265524414411 L 350.5263157894737 -329.64301170562385 L 401.0526315789474 -346.88090789360314 L 451.57894736842104 -364.4849156234999 L 502.10526315789474 -392.7383282252009 L 552.6315789473684 -401.0413697180065 L 603.1578947368421 -419.61069876789384 L 653.6842105263158 -438.7811873022906 L 704.2105263157895 -458.2105535246113 L 754.7368421052631 -473.0770651009933" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip14);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip15);"> + <path d="M 296.0 -309.6265524414411 L 296.0 -317.6265524414411 L 304.0 -317.6265524414411 L 304.0 -309.6265524414411 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 296.0 -309.6265524414411 L 296.0 -317.6265524414411 L 304.0 -317.6265524414411 L 304.0 -309.6265524414411 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip16);"> + <path d="M 346.5263157894737 -325.64301170562385 L 346.5263157894737 -333.64301170562385 L 354.5263157894737 -333.64301170562385 L 354.5263157894737 -325.64301170562385 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 346.5263157894737 -325.64301170562385 L 346.5263157894737 -333.64301170562385 L 354.5263157894737 -333.64301170562385 L 354.5263157894737 -325.64301170562385 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip17);"> + <path d="M 397.0526315789474 -342.88090789360314 L 397.0526315789474 -350.88090789360314 L 405.0526315789474 -350.88090789360314 L 405.0526315789474 -342.88090789360314 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 397.0526315789474 -342.88090789360314 L 397.0526315789474 -350.88090789360314 L 405.0526315789474 -350.88090789360314 L 405.0526315789474 -342.88090789360314 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip18);"> + <path d="M 447.57894736842104 -360.4849156234999 L 447.57894736842104 -368.4849156234999 L 455.57894736842104 -368.4849156234999 L 455.57894736842104 -360.4849156234999 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 447.57894736842104 -360.4849156234999 L 447.57894736842104 -368.4849156234999 L 455.57894736842104 -368.4849156234999 L 455.57894736842104 -360.4849156234999 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip19);"> + <path d="M 498.10526315789474 -388.7383282252009 L 498.10526315789474 -396.7383282252009 L 506.10526315789474 -396.7383282252009 L 506.10526315789474 -388.7383282252009 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 498.10526315789474 -388.7383282252009 L 498.10526315789474 -396.7383282252009 L 506.10526315789474 -396.7383282252009 L 506.10526315789474 -388.7383282252009 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip20);"> + <path d="M 548.6315789473684 -397.0413697180065 L 548.6315789473684 -405.0413697180065 L 556.6315789473684 -405.0413697180065 L 556.6315789473684 -397.0413697180065 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 548.6315789473684 -397.0413697180065 L 548.6315789473684 -405.0413697180065 L 556.6315789473684 -405.0413697180065 L 556.6315789473684 -397.0413697180065 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip21);"> + <path d="M 599.1578947368421 -415.61069876789384 L 599.1578947368421 -423.61069876789384 L 607.1578947368421 -423.61069876789384 L 607.1578947368421 -415.61069876789384 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 599.1578947368421 -415.61069876789384 L 599.1578947368421 -423.61069876789384 L 607.1578947368421 -423.61069876789384 L 607.1578947368421 -415.61069876789384 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip22);"> + <path d="M 649.6842105263158 -434.7811873022906 L 649.6842105263158 -442.7811873022906 L 657.6842105263158 -442.7811873022906 L 657.6842105263158 -434.7811873022906 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 649.6842105263158 -434.7811873022906 L 649.6842105263158 -442.7811873022906 L 657.6842105263158 -442.7811873022906 L 657.6842105263158 -434.7811873022906 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip23);"> + <path d="M 700.2105263157895 -454.2105535246113 L 700.2105263157895 -462.2105535246113 L 708.2105263157895 -462.2105535246113 L 708.2105263157895 -454.2105535246113 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 700.2105263157895 -454.2105535246113 L 700.2105263157895 -462.2105535246113 L 708.2105263157895 -462.2105535246113 L 708.2105263157895 -454.2105535246113 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip24);"> + <path d="M 750.7368421052631 -469.0770651009933 L 750.7368421052631 -477.0770651009933 L 758.7368421052631 -477.0770651009933 L 758.7368421052631 -469.0770651009933 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 750.7368421052631 -469.0770651009933 L 750.7368421052631 -477.0770651009933 L 758.7368421052631 -477.0770651009933 L 758.7368421052631 -469.0770651009933 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip25);"> + <path d="M 300.0 -300.2036982878525 L 350.5263157894737 -300.2309086075108 L 401.0526315789474 -300.35524355329073 L 451.57894736842104 -300.4646253338749 L 502.10526315789474 -300.6507199389486 L 552.6315789473684 -300.618024445183 L 603.1578947368421 -300.7484652216191 L 653.6842105263158 -300.90264367391654 L 704.2105263157895 -301.00293440665655 L 754.7368421052631 -300.90264367391654" style="stroke:rgb(205,0,0);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip26);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip27);"> + <path d="M 293.75 -295.2036982878525 L 293.75 -305.2036982878525 L 306.25 -305.2036982878525 L 306.25 -295.2036982878525 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 300.0 -295.2036982878525 L 293.75 -305.2036982878525 L 306.25 -305.2036982878525 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip28);"> + <path d="M 344.2763157894737 -295.2309086075108 L 344.2763157894737 -305.2309086075108 L 356.7763157894737 -305.2309086075108 L 356.7763157894737 -295.2309086075108 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 350.5263157894737 -295.2309086075108 L 344.2763157894737 -305.2309086075108 L 356.7763157894737 -305.2309086075108 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip29);"> + <path d="M 394.8026315789474 -295.35524355329073 L 394.8026315789474 -305.35524355329073 L 407.3026315789474 -305.35524355329073 L 407.3026315789474 -295.35524355329073 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 401.0526315789474 -295.35524355329073 L 394.8026315789474 -305.35524355329073 L 407.3026315789474 -305.35524355329073 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip30);"> + <path d="M 445.32894736842104 -295.4646253338749 L 445.32894736842104 -305.4646253338749 L 457.82894736842104 -305.4646253338749 L 457.82894736842104 -295.4646253338749 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 451.57894736842104 -295.4646253338749 L 445.32894736842104 -305.4646253338749 L 457.82894736842104 -305.4646253338749 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip31);"> + <path d="M 495.85526315789474 -295.6507199389486 L 495.85526315789474 -305.6507199389486 L 508.35526315789474 -305.6507199389486 L 508.35526315789474 -295.6507199389486 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 502.10526315789474 -295.6507199389486 L 495.85526315789474 -305.6507199389486 L 508.35526315789474 -305.6507199389486 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip32);"> + <path d="M 546.3815789473684 -295.618024445183 L 546.3815789473684 -305.618024445183 L 558.8815789473684 -305.618024445183 L 558.8815789473684 -295.618024445183 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 552.6315789473684 -295.618024445183 L 546.3815789473684 -305.618024445183 L 558.8815789473684 -305.618024445183 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip33);"> + <path d="M 596.9078947368421 -295.7484652216191 L 596.9078947368421 -305.7484652216191 L 609.4078947368421 -305.7484652216191 L 609.4078947368421 -295.7484652216191 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 603.1578947368421 -295.7484652216191 L 596.9078947368421 -305.7484652216191 L 609.4078947368421 -305.7484652216191 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip34);"> + <path d="M 647.4342105263158 -295.90264367391654 L 647.4342105263158 -305.90264367391654 L 659.9342105263158 -305.90264367391654 L 659.9342105263158 -295.90264367391654 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 653.6842105263158 -295.90264367391654 L 647.4342105263158 -305.90264367391654 L 659.9342105263158 -305.90264367391654 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip35);"> + <path d="M 697.9605263157895 -296.00293440665655 L 697.9605263157895 -306.00293440665655 L 710.4605263157895 -306.00293440665655 L 710.4605263157895 -296.00293440665655 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 704.2105263157895 -296.00293440665655 L 697.9605263157895 -306.00293440665655 L 710.4605263157895 -306.00293440665655 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip36);"> + <path d="M 748.4868421052631 -295.90264367391654 L 748.4868421052631 -305.90264367391654 L 760.9868421052631 -305.90264367391654 L 760.9868421052631 -295.90264367391654 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 754.7368421052631 -295.90264367391654 L 748.4868421052631 -305.90264367391654 L 760.9868421052631 -305.90264367391654 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip37);"> + <path d="M 300.0 -300.22458343488057 L 350.5263157894737 -300.2517341801755 L 401.0526315789474 -300.2768897258841 L 451.57894736842104 -300.28794672771807 L 502.10526315789474 -300.291660376894 L 552.6315789473684 -300.31023187228436 L 603.1578947368421 -300.31611836096647 L 653.6842105263158 -300.33073845131275 L 704.2105263157895 -300.2941430030895 L 754.7368421052631 -300.3400017232254" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip38);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip39);"> + <path d="M 292.0 -292.2245834348805 L 292.0 -308.2245834348805 L 308.0 -308.2245834348805 L 308.0 -292.2245834348805 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 300.0 -300.22458343488057 M 304.0 -300.22458343488057 L 304 -300.225 M 304 -300.225 A 4 4 0 1 0 296 -300.225 A 4 4 0 1 0 304 -300.225 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip40);"> + <path d="M 342.5263157894737 -292.2517341801755 L 342.5263157894737 -308.2517341801755 L 358.5263157894737 -308.2517341801755 L 358.5263157894737 -292.2517341801755 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 350.5263157894737 -300.2517341801755 M 354.5263157894737 -300.2517341801755 L 354.526 -300.252 M 354.526 -300.252 A 4 4 0 1 0 346.526 -300.252 A 4 4 0 1 0 354.526 -300.252 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip41);"> + <path d="M 393.0526315789474 -292.2768897258841 L 393.0526315789474 -308.2768897258841 L 409.0526315789474 -308.2768897258841 L 409.0526315789474 -292.2768897258841 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 401.0526315789474 -300.2768897258841 M 405.0526315789474 -300.2768897258841 L 405.053 -300.277 M 405.053 -300.277 A 4 4 0 1 0 397.053 -300.277 A 4 4 0 1 0 405.053 -300.277 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip42);"> + <path d="M 443.57894736842104 -292.28794672771807 L 443.57894736842104 -308.28794672771807 L 459.57894736842104 -308.28794672771807 L 459.57894736842104 -292.28794672771807 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 451.57894736842104 -300.28794672771807 M 455.57894736842104 -300.28794672771807 L 455.579 -300.288 M 455.579 -300.288 A 4 4 0 1 0 447.579 -300.288 A 4 4 0 1 0 455.579 -300.288 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip43);"> + <path d="M 494.10526315789474 -292.291660376894 L 494.10526315789474 -308.291660376894 L 510.10526315789474 -308.291660376894 L 510.10526315789474 -292.291660376894 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 502.10526315789474 -300.291660376894 M 506.10526315789474 -300.291660376894 L 506.105 -300.292 M 506.105 -300.292 A 4 4 0 1 0 498.105 -300.292 A 4 4 0 1 0 506.105 -300.292 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip44);"> + <path d="M 544.6315789473684 -292.31023187228436 L 544.6315789473684 -308.31023187228436 L 560.6315789473684 -308.31023187228436 L 560.6315789473684 -292.31023187228436 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 552.6315789473684 -300.31023187228436 M 556.6315789473684 -300.31023187228436 L 556.632 -300.31 M 556.632 -300.31 A 4 4 0 1 0 548.632 -300.31 A 4 4 0 1 0 556.632 -300.31 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip45);"> + <path d="M 595.1578947368421 -292.31611836096647 L 595.1578947368421 -308.31611836096647 L 611.1578947368421 -308.31611836096647 L 611.1578947368421 -292.31611836096647 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 603.1578947368421 -300.31611836096647 M 607.1578947368421 -300.31611836096647 L 607.158 -300.316 M 607.158 -300.316 A 4 4 0 1 0 599.158 -300.316 A 4 4 0 1 0 607.158 -300.316 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip46);"> + <path d="M 645.6842105263158 -292.33073845131275 L 645.6842105263158 -308.33073845131275 L 661.6842105263158 -308.33073845131275 L 661.6842105263158 -292.33073845131275 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 653.6842105263158 -300.33073845131275 M 657.6842105263158 -300.33073845131275 L 657.684 -300.331 M 657.684 -300.331 A 4 4 0 1 0 649.684 -300.331 A 4 4 0 1 0 657.684 -300.331 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip47);"> + <path d="M 696.2105263157895 -292.2941430030895 L 696.2105263157895 -308.2941430030895 L 712.2105263157895 -308.2941430030895 L 712.2105263157895 -292.2941430030895 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 704.2105263157895 -300.2941430030895 M 708.2105263157895 -300.2941430030895 L 708.211 -300.294 M 708.211 -300.294 A 4 4 0 1 0 700.211 -300.294 A 4 4 0 1 0 708.211 -300.294 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip48);"> + <path d="M 746.7368421052631 -292.3400017232254 L 746.7368421052631 -308.3400017232254 L 762.7368421052631 -308.3400017232254 L 762.7368421052631 -292.3400017232254 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 754.7368421052631 -300.3400017232254 M 758.7368421052631 -300.3400017232254 L 758.737 -300.34 M 758.737 -300.34 A 4 4 0 1 0 750.737 -300.34 A 4 4 0 1 0 758.737 -300.34 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip49);"> + <path d="M 300.0 -300.1679098014598 L 350.5263157894737 -300.1683197813966 L 401.0526315789474 -300.18987432763436 L 451.57894736842104 -300.1749466169393 L 502.10526315789474 -300.20742710141184 L 552.6315789473684 -300.1916019841709 L 603.1578947368421 -300.20460219341976 L 653.6842105263158 -300.1805097793041 L 704.2105263157895 -300.2223401893086 L 754.7368421052631 -300.2017648289699" style="stroke:rgb(126,126,126);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip50);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip51);"> + <path d="M 292.85714285714283 -293.0250526586027 L 292.85714285714283 -307.310766944317 L 307.14285714285717 -307.310766944317 L 307.14285714285717 -293.0250526586027 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 292.85714285714283 -300.1679098014598 L 300.0 -307.310766944317 L 307.14285714285717 -300.1679098014598 L 300.0 -293.0250526586027 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip52);"> + <path d="M 343.38345864661653 -293.0254626385394 L 343.38345864661653 -307.3111769242537 L 357.6691729323308 -307.3111769242537 L 357.6691729323308 -293.0254626385394 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 343.38345864661653 -300.1683197813966 L 350.5263157894737 -307.3111769242537 L 357.6691729323308 -300.1683197813966 L 350.5263157894737 -293.0254626385394 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip53);"> + <path d="M 393.90977443609023 -293.04701718477725 L 393.90977443609023 -307.3327314704915 L 408.1954887218045 -307.3327314704915 L 408.1954887218045 -293.04701718477725 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 393.90977443609023 -300.18987432763436 L 401.0526315789474 -307.3327314704915 L 408.1954887218045 -300.18987432763436 L 401.0526315789474 -293.04701718477725 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip54);"> + <path d="M 444.43609022556393 -293.03208947408217 L 444.43609022556393 -307.31780375979645 L 458.72180451127815 -307.31780375979645 L 458.72180451127815 -293.03208947408217 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 444.43609022556393 -300.1749466169393 L 451.57894736842104 -307.31780375979645 L 458.72180451127815 -300.1749466169393 L 451.57894736842104 -293.03208947408217 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip55);"> + <path d="M 494.9624060150376 -293.06456995855467 L 494.9624060150376 -307.35028424426895 L 509.2481203007519 -307.35028424426895 L 509.2481203007519 -293.06456995855467 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 494.9624060150376 -300.20742710141184 L 502.10526315789474 -307.35028424426895 L 509.2481203007519 -300.20742710141184 L 502.10526315789474 -293.06456995855467 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip56);"> + <path d="M 545.4887218045112 -293.0487448413138 L 545.4887218045112 -307.3344591270281 L 559.7744360902255 -307.3344591270281 L 559.7744360902255 -293.0487448413138 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 545.4887218045112 -300.1916019841709 L 552.6315789473684 -307.3344591270281 L 559.7744360902255 -300.1916019841709 L 552.6315789473684 -293.0487448413138 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip57);"> + <path d="M 596.015037593985 -293.0617450505626 L 596.015037593985 -307.34745933627687 L 610.3007518796992 -307.34745933627687 L 610.3007518796992 -293.0617450505626 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 596.015037593985 -300.20460219341976 L 603.1578947368421 -307.34745933627687 L 610.3007518796992 -300.20460219341976 L 603.1578947368421 -293.0617450505626 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip58);"> + <path d="M 646.5413533834586 -293.0376526364469 L 646.5413533834586 -307.3233669221612 L 660.827067669173 -307.3233669221612 L 660.827067669173 -293.0376526364469 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 646.5413533834586 -300.1805097793041 L 653.6842105263158 -307.3233669221612 L 660.827067669173 -300.1805097793041 L 653.6842105263158 -293.0376526364469 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip59);"> + <path d="M 697.0676691729323 -293.07948304645146 L 697.0676691729323 -307.36519733216574 L 711.3533834586467 -307.36519733216574 L 711.3533834586467 -293.07948304645146 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 697.0676691729323 -300.2223401893086 L 704.2105263157895 -307.36519733216574 L 711.3533834586467 -300.2223401893086 L 704.2105263157895 -293.07948304645146 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip60);"> + <path d="M 747.593984962406 -293.0589076861127 L 747.593984962406 -307.344621971827 L 761.8796992481203 -307.344621971827 L 761.8796992481203 -293.0589076861127 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 747.593984962406 -300.2017648289699 L 754.7368421052631 -307.344621971827 L 761.8796992481203 -300.2017648289699 L 754.7368421052631 -293.0589076861127 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip61);"> + <path d="M 300.0 -300.13010391049073 L 350.5263157894737 -300.1305604667479 L 401.0526315789474 -300.1319740039142 L 451.57894736842104 -300.13771372302847 L 502.10526315789474 -300.12636372364386 L 552.6315789473684 -300.13750358800144 L 603.1578947368421 -300.12546469234275 L 653.6842105263158 -300.1480287532464 L 704.2105263157895 -300.16962554312374 L 754.7368421052631 -300.127137648782" style="stroke:rgb(147,147,147);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip62);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip63);"> + <path d="M 293.75 -295.13010391049073 L 293.75 -305.13010391049073 L 306.25 -305.13010391049073 L 306.25 -295.13010391049073 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 293.75 -295.13010391049073 L 306.25 -295.13010391049073 L 300.0 -305.13010391049073 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip64);"> + <path d="M 344.2763157894737 -295.1305604667479 L 344.2763157894737 -305.1305604667479 L 356.7763157894737 -305.1305604667479 L 356.7763157894737 -295.1305604667479 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 344.2763157894737 -295.1305604667479 L 356.7763157894737 -295.1305604667479 L 350.5263157894737 -305.1305604667479 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip65);"> + <path d="M 394.8026315789474 -295.1319740039142 L 394.8026315789474 -305.1319740039142 L 407.3026315789474 -305.1319740039142 L 407.3026315789474 -295.1319740039142 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 394.8026315789474 -295.1319740039142 L 407.3026315789474 -295.1319740039142 L 401.0526315789474 -305.1319740039142 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip66);"> + <path d="M 445.32894736842104 -295.13771372302847 L 445.32894736842104 -305.13771372302847 L 457.82894736842104 -305.13771372302847 L 457.82894736842104 -295.13771372302847 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 445.32894736842104 -295.13771372302847 L 457.82894736842104 -295.13771372302847 L 451.57894736842104 -305.13771372302847 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip67);"> + <path d="M 495.85526315789474 -295.12636372364386 L 495.85526315789474 -305.12636372364386 L 508.35526315789474 -305.12636372364386 L 508.35526315789474 -295.12636372364386 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 495.85526315789474 -295.12636372364386 L 508.35526315789474 -295.12636372364386 L 502.10526315789474 -305.12636372364386 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip68);"> + <path d="M 546.3815789473684 -295.13750358800144 L 546.3815789473684 -305.13750358800144 L 558.8815789473684 -305.13750358800144 L 558.8815789473684 -295.13750358800144 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 546.3815789473684 -295.13750358800144 L 558.8815789473684 -295.13750358800144 L 552.6315789473684 -305.13750358800144 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip69);"> + <path d="M 596.9078947368421 -295.12546469234275 L 596.9078947368421 -305.12546469234275 L 609.4078947368421 -305.12546469234275 L 609.4078947368421 -295.12546469234275 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 596.9078947368421 -295.12546469234275 L 609.4078947368421 -295.12546469234275 L 603.1578947368421 -305.12546469234275 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip70);"> + <path d="M 647.4342105263158 -295.1480287532464 L 647.4342105263158 -305.1480287532464 L 659.9342105263158 -305.1480287532464 L 659.9342105263158 -295.1480287532464 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 647.4342105263158 -295.1480287532464 L 659.9342105263158 -295.1480287532464 L 653.6842105263158 -305.1480287532464 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip71);"> + <path d="M 697.9605263157895 -295.16962554312374 L 697.9605263157895 -305.16962554312374 L 710.4605263157895 -305.16962554312374 L 710.4605263157895 -295.16962554312374 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 697.9605263157895 -295.16962554312374 L 710.4605263157895 -295.16962554312374 L 704.2105263157895 -305.16962554312374 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip72);"> + <path d="M 748.4868421052631 -295.127137648782 L 748.4868421052631 -305.127137648782 L 760.9868421052631 -305.127137648782 L 760.9868421052631 -295.127137648782 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 748.4868421052631 -295.127137648782 L 760.9868421052631 -295.127137648782 L 754.7368421052631 -305.127137648782 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip73);"> + <path d="M 300.0 -300.0776557241855 L 350.5263157894737 -300.0799520450993 L 401.0526315789474 -300.08399443644373 L 451.57894736842104 -300.0801578474453 L 502.10526315789474 -300.1002999396871 L 552.6315789473684 -300.07683413955664 L 603.1578947368421 -300.0803880211218 L 653.6842105263158 -300.078105239836 L 704.2105263157895 -300.0825121179671 L 754.7368421052631 -300.08415691198013" style="stroke:rgb(137,42,226);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip74);"> + <path d="M 292.85714285714283 -300.0776557241855 L 307.14285714285717 -300.0776557241855" style="stroke-width:1;"/> + <path d="M 300.0 -292.9347985813283 L 300.0 -307.2205128670426" style="stroke-width:1;"/> + <path d="M 343.38345864661653 -300.0799520450993 L 357.6691729323308 -300.0799520450993" style="stroke-width:1;"/> + <path d="M 350.5263157894737 -292.9370949022421 L 350.5263157894737 -307.2228091879564" style="stroke-width:1;"/> + <path d="M 393.90977443609023 -300.08399443644373 L 408.1954887218045 -300.08399443644373" style="stroke-width:1;"/> + <path d="M 401.0526315789474 -292.9411372935866 L 401.0526315789474 -307.2268515793009" style="stroke-width:1;"/> + <path d="M 444.43609022556393 -300.0801578474453 L 458.72180451127815 -300.0801578474453" style="stroke-width:1;"/> + <path d="M 451.57894736842104 -292.93730070458815 L 451.57894736842104 -307.2230149903025" style="stroke-width:1;"/> + <path d="M 494.9624060150376 -300.1002999396871 L 509.2481203007519 -300.1002999396871" style="stroke-width:1;"/> + <path d="M 502.10526315789474 -292.95744279683 L 502.10526315789474 -307.24315708254426" style="stroke-width:1;"/> + <path d="M 545.4887218045112 -300.07683413955664 L 559.7744360902255 -300.07683413955664" style="stroke-width:1;"/> + <path d="M 552.6315789473684 -292.93397699669947 L 552.6315789473684 -307.2196912824138" style="stroke-width:1;"/> + <path d="M 596.015037593985 -300.0803880211218 L 610.3007518796992 -300.0803880211218" style="stroke-width:1;"/> + <path d="M 603.1578947368421 -292.9375308782647 L 603.1578947368421 -307.22324516397896" style="stroke-width:1;"/> + <path d="M 646.5413533834586 -300.078105239836 L 660.827067669173 -300.078105239836" style="stroke-width:1;"/> + <path d="M 653.6842105263158 -292.9352480969789 L 653.6842105263158 -307.2209623826932" style="stroke-width:1;"/> + <path d="M 697.0676691729323 -300.0825121179671 L 711.3533834586467 -300.0825121179671" style="stroke-width:1;"/> + <path d="M 704.2105263157895 -292.93965497510993 L 704.2105263157895 -307.2253692608242" style="stroke-width:1;"/> + <path d="M 747.593984962406 -300.08415691198013 L 761.8796992481203 -300.08415691198013" style="stroke-width:1;"/> + <path d="M 754.7368421052631 -292.94129976912296 L 754.7368421052631 -307.22701405483724" style="stroke-width:1;"/> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip75);"> + <path d="M 290 -54 L 290 -182 L 324 -182 L 324 -54 Z" style="stroke:none;"/> + </g> + <path d="M 300 -172.66666666666669 L 314 -172.66666666666669" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip76);"> + <path d="M 299.0 -164.66666666666669 L 299.0 -180.66666666666669 L 315.0 -180.66666666666669 L 315.0 -164.66666666666669 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -172.66666666666669 M 311.0 -172.66666666666669 L 311 -172.667 M 311 -172.667 A 4 4 0 1 0 303 -172.667 A 4 4 0 1 0 311 -172.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-168.0"> + n_pq_deque + </text> + <path d="M 300 -154.66666666666666 L 314 -154.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip77);"> + <path d="M 303.0 -150.66666666666666 L 303.0 -158.66666666666666 L 311.0 -158.66666666666666 L 311.0 -150.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 303.0 -150.66666666666666 L 303.0 -158.66666666666666 L 311.0 -158.66666666666666 L 311.0 -150.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-150.0"> + n_pq_vector + </text> + <path d="M 300 -136.66666666666666 L 314 -136.66666666666666" style="stroke:rgb(205,0,0);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip78);"> + <path d="M 300.75 -131.66666666666666 L 300.75 -141.66666666666666 L 313.25 -141.66666666666666 L 313.25 -131.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -131.66666666666666 L 300.75 -141.66666666666666 L 313.25 -141.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-132.0"> + binary_heap + </text> + <path d="M 300 -118.66666666666666 L 314 -118.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip79);"> + <path d="M 299.0 -110.66666666666666 L 299.0 -126.66666666666666 L 315.0 -126.66666666666666 L 315.0 -110.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -118.66666666666666 M 311.0 -118.66666666666666 L 311 -118.667 M 311 -118.667 A 4 4 0 1 0 303 -118.667 A 4 4 0 1 0 311 -118.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-114.0"> + thin_heap + </text> + <path d="M 300 -100.66666666666666 L 314 -100.66666666666666" style="stroke:rgb(126,126,126);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip80);"> + <path d="M 299.85714285714283 -93.52380952380952 L 299.85714285714283 -107.8095238095238 L 314.14285714285717 -107.8095238095238 L 314.14285714285717 -93.52380952380952 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 299.85714285714283 -100.66666666666666 L 307.0 -107.8095238095238 L 314.14285714285717 -100.66666666666666 L 307.0 -93.52380952380952 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-96.0"> + rc_binomial_heap + </text> + <path d="M 300 -82.66666666666666 L 314 -82.66666666666666" style="stroke:rgb(147,147,147);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip81);"> + <path d="M 300.75 -77.66666666666666 L 300.75 -87.66666666666666 L 313.25 -87.66666666666666 L 313.25 -77.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 300.75 -77.66666666666666 L 313.25 -77.66666666666666 L 307.0 -87.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-78.0"> + binomial_heap + </text> + <path d="M 300 -64.66666666666666 L 314 -64.66666666666666" style="stroke:rgb(137,42,226);stroke-width:2;"/> + <path d="M 299.85714285714283 -64.66666666666666 L 314.14285714285717 -64.66666666666666" style="stroke-width:1;"/> + <path d="M 307.0 -57.52380952380952 L 307.0 -71.8095238095238" style="stroke-width:1;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-60.0"> + pairing_heap + </text> + </g> + </g> + </g> + </g> + </g> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_down_timing_test_pairing_thin_local.pdf b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_down_timing_test_pairing_thin_local.pdf Binary files differnew file mode 100644 index 00000000000..ee77fee93c5 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_down_timing_test_pairing_thin_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_down_timing_test_pairing_thin_local.png b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_down_timing_test_pairing_thin_local.png Binary files differnew file mode 100644 index 00000000000..215edaf2b47 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_down_timing_test_pairing_thin_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_down_timing_test_pairing_thin_local.svg b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_down_timing_test_pairing_thin_local.svg new file mode 100644 index 00000000000..bff59b93b56 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_down_timing_test_pairing_thin_local.svg @@ -0,0 +1,223 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 396.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 300.0 -445.3179566415521 M 304.0 -445.3179566415521 L 304 -445.318 M 304 -445.318 A 4 4 0 1 0 296 -445.318 A 4 4 0 1 0 304 -445.318 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 350.5263157894737 -462.8859969097947 M 354.5263157894737 -462.8859969097947 L 354.526 -462.886 M 354.526 -462.886 A 4 4 0 1 0 346.526 -462.886 A 4 4 0 1 0 354.526 -462.886 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 401.0526315789474 -479.1630322241514 M 405.0526315789474 -479.1630322241514 L 405.053 -479.163 M 405.053 -479.163 A 4 4 0 1 0 397.053 -479.163 A 4 4 0 1 0 405.053 -479.163 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 451.57894736842104 -486.31752656142976 M 455.57894736842104 -486.31752656142976 L 455.579 -486.318 M 455.579 -486.318 A 4 4 0 1 0 447.579 -486.318 A 4 4 0 1 0 455.579 -486.318 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 502.10526315789474 -488.7204638493764 M 506.10526315789474 -488.7204638493764 L 506.105 -488.72 M 506.105 -488.72 A 4 4 0 1 0 498.105 -488.72 A 4 4 0 1 0 506.105 -488.72 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 552.6315789473684 -500.7372529030408 M 556.6315789473684 -500.7372529030408 L 556.632 -500.737 M 556.632 -500.737 A 4 4 0 1 0 548.632 -500.737 A 4 4 0 1 0 556.632 -500.737 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 603.1578947368421 -504.5461380397904 M 607.1578947368421 -504.5461380397904 L 607.158 -504.546 M 607.158 -504.546 A 4 4 0 1 0 599.158 -504.546 A 4 4 0 1 0 607.158 -504.546 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 653.6842105263158 -514.00614855286 M 657.6842105263158 -514.00614855286 L 657.684 -514.006 M 657.684 -514.006 A 4 4 0 1 0 649.684 -514.006 A 4 4 0 1 0 657.684 -514.006 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 704.2105263157895 -490.32686089297374 M 708.2105263157895 -490.32686089297374 L 708.211 -490.327 M 708.211 -490.327 A 4 4 0 1 0 700.211 -490.327 A 4 4 0 1 0 708.211 -490.327 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 754.7368421052631 -520.0 M 758.7368421052631 -520.0 L 758.737 -520 M 758.737 -520 A 4 4 0 1 0 750.737 -520 A 4 4 0 1 0 758.737 -520 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 290 -154 L 290 -192 L 324 -192 L 324 -154 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 307.0 -182.66666666666669 M 311.0 -182.66666666666669 L 311 -182.667 M 311 -182.667 A 4 4 0 1 0 303 -182.667 A 4 4 0 1 0 311 -182.667 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 100 + </text> + <path d="M 401.0526315789474 -300 L 401.0526315789474 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,401.053,-279.001)" x="401.0526315789474" y="-279.00097346438844"> + 300 + </text> + <path d="M 502.10526315789474 -300 L 502.10526315789474 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,502.105,-279.001)" x="502.10526315789474" y="-279.00097346438844"> + 500 + </text> + <path d="M 603.1578947368421 -300 L 603.1578947368421 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,603.158,-279.001)" x="603.1578947368421" y="-279.00097346438844"> + 700 + </text> + <path d="M 704.2105263157895 -300 L 704.2105263157895 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,704.211,-279.001)" x="704.2105263157895" y="-279.00097346438844"> + 900 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 1.26e-07 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.5004867321942"> + 2.51e-07 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.5004867321942"> + 3.77e-07 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.5004867321942"> + 5.02e-07 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321942"> + 6.28e-07 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 300.0 -445.3179566415521 L 350.5263157894737 -462.8859969097947 L 401.0526315789474 -479.1630322241514 L 451.57894736842104 -486.31752656142976 L 502.10526315789474 -488.7204638493764 L 552.6315789473684 -500.7372529030408 L 603.1578947368421 -504.5461380397904 L 653.6842105263158 -514.00614855286 L 704.2105263157895 -490.32686089297374 L 754.7368421052631 -520.0" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip3);"> + <path d="M 292.0 -437.3179566415521 L 292.0 -453.3179566415521 L 308.0 -453.3179566415521 L 308.0 -437.3179566415521 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 300.0 -445.3179566415521 M 304.0 -445.3179566415521 L 304 -445.318 M 304 -445.318 A 4 4 0 1 0 296 -445.318 A 4 4 0 1 0 304 -445.318 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip4);"> + <path d="M 342.5263157894737 -454.8859969097947 L 342.5263157894737 -470.8859969097947 L 358.5263157894737 -470.8859969097947 L 358.5263157894737 -454.8859969097947 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 350.5263157894737 -462.8859969097947 M 354.5263157894737 -462.8859969097947 L 354.526 -462.886 M 354.526 -462.886 A 4 4 0 1 0 346.526 -462.886 A 4 4 0 1 0 354.526 -462.886 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 393.0526315789474 -471.1630322241514 L 393.0526315789474 -487.1630322241514 L 409.0526315789474 -487.1630322241514 L 409.0526315789474 -471.1630322241514 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 401.0526315789474 -479.1630322241514 M 405.0526315789474 -479.1630322241514 L 405.053 -479.163 M 405.053 -479.163 A 4 4 0 1 0 397.053 -479.163 A 4 4 0 1 0 405.053 -479.163 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 443.57894736842104 -478.31752656142976 L 443.57894736842104 -494.31752656142976 L 459.57894736842104 -494.31752656142976 L 459.57894736842104 -478.31752656142976 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 451.57894736842104 -486.31752656142976 M 455.57894736842104 -486.31752656142976 L 455.579 -486.318 M 455.579 -486.318 A 4 4 0 1 0 447.579 -486.318 A 4 4 0 1 0 455.579 -486.318 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 494.10526315789474 -480.7204638493764 L 494.10526315789474 -496.7204638493764 L 510.10526315789474 -496.7204638493764 L 510.10526315789474 -480.7204638493764 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 502.10526315789474 -488.7204638493764 M 506.10526315789474 -488.7204638493764 L 506.105 -488.72 M 506.105 -488.72 A 4 4 0 1 0 498.105 -488.72 A 4 4 0 1 0 506.105 -488.72 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 544.6315789473684 -492.7372529030408 L 544.6315789473684 -508.7372529030408 L 560.6315789473684 -508.7372529030408 L 560.6315789473684 -492.7372529030408 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 552.6315789473684 -500.7372529030408 M 556.6315789473684 -500.7372529030408 L 556.632 -500.737 M 556.632 -500.737 A 4 4 0 1 0 548.632 -500.737 A 4 4 0 1 0 556.632 -500.737 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 595.1578947368421 -496.5461380397904 L 595.1578947368421 -512.5461380397903 L 611.1578947368421 -512.5461380397903 L 611.1578947368421 -496.5461380397904 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 603.1578947368421 -504.5461380397904 M 607.1578947368421 -504.5461380397904 L 607.158 -504.546 M 607.158 -504.546 A 4 4 0 1 0 599.158 -504.546 A 4 4 0 1 0 607.158 -504.546 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip10);"> + <path d="M 645.6842105263158 -506.00614855286005 L 645.6842105263158 -522.00614855286 L 661.6842105263158 -522.00614855286 L 661.6842105263158 -506.00614855286005 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 653.6842105263158 -514.00614855286 M 657.6842105263158 -514.00614855286 L 657.684 -514.006 M 657.684 -514.006 A 4 4 0 1 0 649.684 -514.006 A 4 4 0 1 0 657.684 -514.006 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip11);"> + <path d="M 696.2105263157895 -482.32686089297374 L 696.2105263157895 -498.32686089297374 L 712.2105263157895 -498.32686089297374 L 712.2105263157895 -482.32686089297374 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 704.2105263157895 -490.32686089297374 M 708.2105263157895 -490.32686089297374 L 708.211 -490.327 M 708.211 -490.327 A 4 4 0 1 0 700.211 -490.327 A 4 4 0 1 0 708.211 -490.327 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 746.7368421052631 -512.0 L 746.7368421052631 -528.0 L 762.7368421052631 -528.0 L 762.7368421052631 -512.0 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 754.7368421052631 -520.0 M 758.7368421052631 -520.0 L 758.737 -520 M 758.737 -520 A 4 4 0 1 0 750.737 -520 A 4 4 0 1 0 758.737 -520 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip13);"> + <path d="M 300.0 -350.2475668615301 L 350.5263157894737 -351.73341403972665 L 401.0526315789474 -354.3490657704009 L 451.57894736842104 -351.866579588716 L 502.10526315789474 -364.899632042562 L 552.6315789473684 -349.7159559725386 L 603.1578947368421 -352.0155147421909 L 653.6842105263158 -350.5384284553752 L 704.2105263157895 -353.38992338202263 L 754.7368421052631 -354.45419646697144" style="stroke:rgb(137,42,226);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip14);"> + <path d="M 292.85714285714283 -350.2475668615301 L 307.14285714285717 -350.2475668615301" style="stroke-width:1;"/> + <path d="M 300.0 -343.104709718673 L 300.0 -357.3904240043873" style="stroke-width:1;"/> + <path d="M 343.38345864661653 -351.73341403972665 L 357.6691729323308 -351.73341403972665" style="stroke-width:1;"/> + <path d="M 350.5263157894737 -344.5905568968695 L 350.5263157894737 -358.8762711825838" style="stroke-width:1;"/> + <path d="M 393.90977443609023 -354.3490657704009 L 408.1954887218045 -354.3490657704009" style="stroke-width:1;"/> + <path d="M 401.0526315789474 -347.2062086275438 L 401.0526315789474 -361.49192291325807" style="stroke-width:1;"/> + <path d="M 444.43609022556393 -351.866579588716 L 458.72180451127815 -351.866579588716" style="stroke-width:1;"/> + <path d="M 451.57894736842104 -344.7237224458588 L 451.57894736842104 -359.00943673157315" style="stroke-width:1;"/> + <path d="M 494.9624060150376 -364.899632042562 L 509.2481203007519 -364.899632042562" style="stroke-width:1;"/> + <path d="M 502.10526315789474 -357.75677489970485 L 502.10526315789474 -372.04248918541913" style="stroke-width:1;"/> + <path d="M 545.4887218045112 -349.7159559725386 L 559.7744360902255 -349.7159559725386" style="stroke-width:1;"/> + <path d="M 552.6315789473684 -342.57309882968144 L 552.6315789473684 -356.8588131153957" style="stroke-width:1;"/> + <path d="M 596.015037593985 -352.0155147421909 L 610.3007518796992 -352.0155147421909" style="stroke-width:1;"/> + <path d="M 603.1578947368421 -344.8726575993337 L 603.1578947368421 -359.158371885048" style="stroke-width:1;"/> + <path d="M 646.5413533834586 -350.5384284553752 L 660.827067669173 -350.5384284553752" style="stroke-width:1;"/> + <path d="M 653.6842105263158 -343.3955713125181 L 653.6842105263158 -357.68128559823236" style="stroke-width:1;"/> + <path d="M 697.0676691729323 -353.38992338202263 L 711.3533834586467 -353.38992338202263" style="stroke-width:1;"/> + <path d="M 704.2105263157895 -346.2470662391655 L 704.2105263157895 -360.5327805248798" style="stroke-width:1;"/> + <path d="M 747.593984962406 -354.45419646697144 L 761.8796992481203 -354.45419646697144" style="stroke-width:1;"/> + <path d="M 754.7368421052631 -347.3113393241143 L 754.7368421052631 -361.5970536098286" style="stroke-width:1;"/> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip15);"> + <path d="M 290 -154 L 290 -192 L 324 -192 L 324 -154 Z" style="stroke:none;"/> + </g> + <path d="M 300 -182.66666666666669 L 314 -182.66666666666669" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip16);"> + <path d="M 299.0 -174.66666666666669 L 299.0 -190.66666666666669 L 315.0 -190.66666666666669 L 315.0 -174.66666666666669 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -182.66666666666669 M 311.0 -182.66666666666669 L 311 -182.667 M 311 -182.667 A 4 4 0 1 0 303 -182.667 A 4 4 0 1 0 311 -182.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-178.0"> + thin_heap + </text> + <path d="M 300 -164.66666666666666 L 314 -164.66666666666666" style="stroke:rgb(137,42,226);stroke-width:2;"/> + <path d="M 299.85714285714283 -164.66666666666666 L 314.14285714285717 -164.66666666666666" style="stroke-width:1;"/> + <path d="M 307.0 -157.52380952380952 L 307.0 -171.8095238095238" style="stroke-width:1;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-160.0"> + pairing_heap + </text> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_up_timing_test_local.pdf b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_up_timing_test_local.pdf Binary files differnew file mode 100644 index 00000000000..083fe8b8e14 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_up_timing_test_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_up_timing_test_local.png b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_up_timing_test_local.png Binary files differnew file mode 100644 index 00000000000..1a3c8694aba --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_up_timing_test_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_up_timing_test_local.svg b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_up_timing_test_local.svg new file mode 100644 index 00000000000..e0dfa4fd322 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_up_timing_test_local.svg @@ -0,0 +1,793 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 496.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 300.0 -315.77881327305454 M 304.0 -315.77881327305454 L 304 -315.779 M 304 -315.779 A 4 4 0 1 0 296 -315.779 A 4 4 0 1 0 304 -315.779 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 350.5263157894737 -335.77699010212535 M 354.5263157894737 -335.77699010212535 L 354.526 -335.777 M 354.526 -335.777 A 4 4 0 1 0 346.526 -335.777 A 4 4 0 1 0 354.526 -335.777 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 401.0526315789474 -357.061224300925 M 405.0526315789474 -357.061224300925 L 405.053 -357.061 M 405.053 -357.061 A 4 4 0 1 0 397.053 -357.061 A 4 4 0 1 0 405.053 -357.061 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 451.57894736842104 -378.83553054736774 M 455.57894736842104 -378.83553054736774 L 455.579 -378.836 M 455.579 -378.836 A 4 4 0 1 0 447.579 -378.836 A 4 4 0 1 0 455.579 -378.836 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 502.10526315789474 -401.7418686113823 M 506.10526315789474 -401.7418686113823 L 506.105 -401.742 M 506.105 -401.742 A 4 4 0 1 0 498.105 -401.742 A 4 4 0 1 0 506.105 -401.742 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 552.6315789473684 -424.929178601341 M 556.6315789473684 -424.929178601341 L 556.632 -424.929 M 556.632 -424.929 A 4 4 0 1 0 548.632 -424.929 A 4 4 0 1 0 556.632 -424.929 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 603.1578947368421 -450.2171609434215 M 607.1578947368421 -450.2171609434215 L 607.158 -450.217 M 607.158 -450.217 A 4 4 0 1 0 599.158 -450.217 A 4 4 0 1 0 607.158 -450.217 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 653.6842105263158 -471.5170725612775 M 657.6842105263158 -471.5170725612775 L 657.684 -471.517 M 657.684 -471.517 A 4 4 0 1 0 649.684 -471.517 A 4 4 0 1 0 657.684 -471.517 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 704.2105263157895 -495.8130000416461 M 708.2105263157895 -495.8130000416461 L 708.211 -495.813 M 708.211 -495.813 A 4 4 0 1 0 700.211 -495.813 A 4 4 0 1 0 708.211 -495.813 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 754.7368421052631 -520.0 M 758.7368421052631 -520.0 L 758.737 -520 M 758.737 -520 A 4 4 0 1 0 750.737 -520 A 4 4 0 1 0 758.737 -520 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 296.0 -309.5929331303475 L 296.0 -317.5929331303475 L 304.0 -317.5929331303475 L 304.0 -309.5929331303475 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 346.5263157894737 -325.21431050359314 L 346.5263157894737 -333.21431050359314 L 354.5263157894737 -333.21431050359314 L 354.5263157894737 -325.21431050359314 Z"/> + </clipPath> + <clipPath id="clip17"> + <path d="M 397.0526315789474 -341.7577542606209 L 397.0526315789474 -349.7577542606209 L 405.0526315789474 -349.7577542606209 L 405.0526315789474 -341.7577542606209 Z"/> + </clipPath> + <clipPath id="clip18"> + <path d="M 447.57894736842104 -360.00051826178697 L 447.57894736842104 -368.00051826178697 L 455.57894736842104 -368.00051826178697 L 455.57894736842104 -360.00051826178697 Z"/> + </clipPath> + <clipPath id="clip19"> + <path d="M 498.10526315789474 -375.0167370793172 L 498.10526315789474 -383.0167370793172 L 506.10526315789474 -383.0167370793172 L 506.10526315789474 -375.0167370793172 Z"/> + </clipPath> + <clipPath id="clip20"> + <path d="M 548.6315789473684 -395.2059951783144 L 548.6315789473684 -403.2059951783144 L 556.6315789473684 -403.2059951783144 L 556.6315789473684 -395.2059951783144 Z"/> + </clipPath> + <clipPath id="clip21"> + <path d="M 599.1578947368421 -412.2953999639068 L 599.1578947368421 -420.2953999639068 L 607.1578947368421 -420.2953999639068 L 607.1578947368421 -412.2953999639068 Z"/> + </clipPath> + <clipPath id="clip22"> + <path d="M 649.6842105263158 -432.959561698603 L 649.6842105263158 -440.959561698603 L 657.6842105263158 -440.959561698603 L 657.6842105263158 -432.959561698603 Z"/> + </clipPath> + <clipPath id="clip23"> + <path d="M 700.2105263157895 -449.03146126687244 L 700.2105263157895 -457.03146126687244 L 708.2105263157895 -457.03146126687244 L 708.2105263157895 -449.03146126687244 Z"/> + </clipPath> + <clipPath id="clip24"> + <path d="M 750.7368421052631 -466.4705539385583 L 750.7368421052631 -474.4705539385583 L 758.7368421052631 -474.4705539385583 L 758.7368421052631 -466.4705539385583 Z"/> + </clipPath> + <clipPath id="clip25"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip26"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip27"> + <path d="M 300.0 -295.2101787077698 L 293.75 -305.2101787077698 L 306.25 -305.2101787077698 Z"/> + </clipPath> + <clipPath id="clip28"> + <path d="M 350.5263157894737 -295.2983193973356 L 344.2763157894737 -305.2983193973356 L 356.7763157894737 -305.2983193973356 Z"/> + </clipPath> + <clipPath id="clip29"> + <path d="M 401.0526315789474 -295.4648492182113 L 394.8026315789474 -305.4648492182113 L 407.3026315789474 -305.4648492182113 Z"/> + </clipPath> + <clipPath id="clip30"> + <path d="M 451.57894736842104 -295.6057286436811 L 445.32894736842104 -305.6057286436811 L 457.82894736842104 -305.6057286436811 Z"/> + </clipPath> + <clipPath id="clip31"> + <path d="M 502.10526315789474 -295.6544355342492 L 495.85526315789474 -305.6544355342492 L 508.35526315789474 -305.6544355342492 Z"/> + </clipPath> + <clipPath id="clip32"> + <path d="M 552.6315789473684 -295.9897337892803 L 546.3815789473684 -305.9897337892803 L 558.8815789473684 -305.9897337892803 Z"/> + </clipPath> + <clipPath id="clip33"> + <path d="M 603.1578947368421 -296.0140592391732 L 596.9078947368421 -306.0140592391732 L 609.4078947368421 -306.0140592391732 Z"/> + </clipPath> + <clipPath id="clip34"> + <path d="M 653.6842105263158 -296.2725177805439 L 647.4342105263158 -306.2725177805439 L 659.9342105263158 -306.2725177805439 Z"/> + </clipPath> + <clipPath id="clip35"> + <path d="M 704.2105263157895 -296.31964674906413 L 697.9605263157895 -306.31964674906413 L 710.4605263157895 -306.31964674906413 Z"/> + </clipPath> + <clipPath id="clip36"> + <path d="M 754.7368421052631 -296.3573539959372 L 748.4868421052631 -306.3573539959372 L 760.9868421052631 -306.3573539959372 Z"/> + </clipPath> + <clipPath id="clip37"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip38"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip39"> + <path d="M 292.85714285714283 -300.09022965475435 L 300.0 -307.2330867976115 L 307.14285714285717 -300.09022965475435 L 300.0 -292.94737251189724 Z"/> + </clipPath> + <clipPath id="clip40"> + <path d="M 343.38345864661653 -300.08498484547005 L 350.5263157894737 -307.2278419883272 L 357.6691729323308 -300.08498484547005 L 350.5263157894737 -292.94212770261294 Z"/> + </clipPath> + <clipPath id="clip41"> + <path d="M 393.90977443609023 -300.0944676479707 L 401.0526315789474 -307.2373247908278 L 408.1954887218045 -300.0944676479707 L 401.0526315789474 -292.95161050511354 Z"/> + </clipPath> + <clipPath id="clip42"> + <path d="M 444.43609022556393 -300.0846611169467 L 451.57894736842104 -307.22751825980384 L 458.72180451127815 -300.0846611169467 L 451.57894736842104 -292.94180397408957 Z"/> + </clipPath> + <clipPath id="clip43"> + <path d="M 494.9624060150376 -300.11839403628755 L 502.10526315789474 -307.2612511791447 L 509.2481203007519 -300.11839403628755 L 502.10526315789474 -292.97553689343044 Z"/> + </clipPath> + <clipPath id="clip44"> + <path d="M 545.4887218045112 -300.0971048138191 L 552.6315789473684 -307.2399619566762 L 559.7744360902255 -300.0971048138191 L 552.6315789473684 -292.95424767096193 Z"/> + </clipPath> + <clipPath id="clip45"> + <path d="M 596.015037593985 -300.1169621992809 L 603.1578947368421 -307.25981934213803 L 610.3007518796992 -300.1169621992809 L 603.1578947368421 -292.97410505642375 Z"/> + </clipPath> + <clipPath id="clip46"> + <path d="M 646.5413533834586 -300.08552999208723 L 653.6842105263158 -307.2283871349444 L 660.827067669173 -300.08552999208723 L 653.6842105263158 -292.9426728492301 Z"/> + </clipPath> + <clipPath id="clip47"> + <path d="M 697.0676691729323 -300.0980892335741 L 704.2105263157895 -307.2409463764312 L 711.3533834586467 -300.0980892335741 L 704.2105263157895 -292.95523209071695 Z"/> + </clipPath> + <clipPath id="clip48"> + <path d="M 747.593984962406 -300.11912904255763 L 754.7368421052631 -307.26198618541474 L 761.8796992481203 -300.11912904255763 L 754.7368421052631 -292.97627189970046 Z"/> + </clipPath> + <clipPath id="clip49"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip50"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip51"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip52"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip53"> + <path d="M 293.75 -295.0432247312674 L 306.25 -295.0432247312674 L 300.0 -305.0432247312674 Z"/> + </clipPath> + <clipPath id="clip54"> + <path d="M 344.2763157894737 -295.04684372093453 L 356.7763157894737 -295.04684372093453 L 350.5263157894737 -305.04684372093453 Z"/> + </clipPath> + <clipPath id="clip55"> + <path d="M 394.8026315789474 -295.04227115734335 L 407.3026315789474 -295.04227115734335 L 401.0526315789474 -305.04227115734335 Z"/> + </clipPath> + <clipPath id="clip56"> + <path d="M 445.32894736842104 -295.0469433336264 L 457.82894736842104 -295.0469433336264 L 451.57894736842104 -305.0469433336264 Z"/> + </clipPath> + <clipPath id="clip57"> + <path d="M 495.85526315789474 -295.04604732840676 L 508.35526315789474 -295.04604732840676 L 502.10526315789474 -305.04604732840676 Z"/> + </clipPath> + <clipPath id="clip58"> + <path d="M 546.3815789473684 -295.0471711143091 L 558.8815789473684 -295.0471711143091 L 552.6315789473684 -305.0471711143091 Z"/> + </clipPath> + <clipPath id="clip59"> + <path d="M 596.9078947368421 -295.04698924606794 L 609.4078947368421 -295.04698924606794 L 603.1578947368421 -305.04698924606794 Z"/> + </clipPath> + <clipPath id="clip60"> + <path d="M 647.4342105263158 -295.0460478883146 L 659.9342105263158 -295.0460478883146 L 653.6842105263158 -305.0460478883146 Z"/> + </clipPath> + <clipPath id="clip61"> + <path d="M 697.9605263157895 -295.0461336051123 L 710.4605263157895 -295.0461336051123 L 704.2105263157895 -305.0461336051123 Z"/> + </clipPath> + <clipPath id="clip62"> + <path d="M 748.4868421052631 -295.04574742141625 L 760.9868421052631 -295.04574742141625 L 754.7368421052631 -305.04574742141625 Z"/> + </clipPath> + <clipPath id="clip63"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip64"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip65"> + <path d="M 300.0 -300.0300271439611 M 304.0 -300.0300271439611 L 304 -300.03 M 304 -300.03 A 4 4 0 1 0 296 -300.03 A 4 4 0 1 0 304 -300.03 Z"/> + </clipPath> + <clipPath id="clip66"> + <path d="M 350.5263157894737 -300.0296542453507 M 354.5263157894737 -300.0296542453507 L 354.526 -300.03 M 354.526 -300.03 A 4 4 0 1 0 346.526 -300.03 A 4 4 0 1 0 354.526 -300.03 Z"/> + </clipPath> + <clipPath id="clip67"> + <path d="M 401.0526315789474 -300.0288699671922 M 405.0526315789474 -300.0288699671922 L 405.053 -300.029 M 405.053 -300.029 A 4 4 0 1 0 397.053 -300.029 A 4 4 0 1 0 405.053 -300.029 Z"/> + </clipPath> + <clipPath id="clip68"> + <path d="M 451.57894736842104 -300.02906450971045 M 455.57894736842104 -300.02906450971045 L 455.579 -300.029 M 455.579 -300.029 A 4 4 0 1 0 447.579 -300.029 A 4 4 0 1 0 455.579 -300.029 Z"/> + </clipPath> + <clipPath id="clip69"> + <path d="M 502.10526315789474 -300.03071415086043 M 506.10526315789474 -300.03071415086043 L 506.105 -300.031 M 506.105 -300.031 A 4 4 0 1 0 498.105 -300.031 A 4 4 0 1 0 506.105 -300.031 Z"/> + </clipPath> + <clipPath id="clip70"> + <path d="M 552.6315789473684 -300.0295295895089 M 556.6315789473684 -300.0295295895089 L 556.632 -300.03 M 556.632 -300.03 A 4 4 0 1 0 548.632 -300.03 A 4 4 0 1 0 556.632 -300.03 Z"/> + </clipPath> + <clipPath id="clip71"> + <path d="M 603.1578947368421 -300.02903157695033 M 607.1578947368421 -300.02903157695033 L 607.158 -300.029 M 607.158 -300.029 A 4 4 0 1 0 599.158 -300.029 A 4 4 0 1 0 607.158 -300.029 Z"/> + </clipPath> + <clipPath id="clip72"> + <path d="M 653.6842105263158 -300.02846795337496 M 657.6842105263158 -300.02846795337496 L 657.684 -300.028 M 657.684 -300.028 A 4 4 0 1 0 649.684 -300.028 A 4 4 0 1 0 657.684 -300.028 Z"/> + </clipPath> + <clipPath id="clip73"> + <path d="M 704.2105263157895 -300.02902373824077 M 708.2105263157895 -300.02902373824077 L 708.211 -300.029 M 708.211 -300.029 A 4 4 0 1 0 700.211 -300.029 A 4 4 0 1 0 708.211 -300.029 Z"/> + </clipPath> + <clipPath id="clip74"> + <path d="M 754.7368421052631 -300.02928440078296 M 758.7368421052631 -300.02928440078296 L 758.737 -300.029 M 758.737 -300.029 A 4 4 0 1 0 750.737 -300.029 A 4 4 0 1 0 758.737 -300.029 Z"/> + </clipPath> + <clipPath id="clip75"> + <path d="M 290 -54 L 290 -182 L 324 -182 L 324 -54 Z"/> + </clipPath> + <clipPath id="clip76"> + <path d="M 307.0 -172.66666666666669 M 311.0 -172.66666666666669 L 311 -172.667 M 311 -172.667 A 4 4 0 1 0 303 -172.667 A 4 4 0 1 0 311 -172.667 Z"/> + </clipPath> + <clipPath id="clip77"> + <path d="M 303.0 -150.66666666666666 L 303.0 -158.66666666666666 L 311.0 -158.66666666666666 L 311.0 -150.66666666666666 Z"/> + </clipPath> + <clipPath id="clip78"> + <path d="M 307.0 -131.66666666666666 L 300.75 -141.66666666666666 L 313.25 -141.66666666666666 Z"/> + </clipPath> + <clipPath id="clip79"> + <path d="M 299.85714285714283 -118.66666666666666 L 307.0 -125.8095238095238 L 314.14285714285717 -118.66666666666666 L 307.0 -111.52380952380952 Z"/> + </clipPath> + <clipPath id="clip80"> + <path d="M 300.75 -77.66666666666666 L 313.25 -77.66666666666666 L 307.0 -87.66666666666666 Z"/> + </clipPath> + <clipPath id="clip81"> + <path d="M 307.0 -64.66666666666666 M 311.0 -64.66666666666666 L 311 -64.6667 M 311 -64.6667 A 4 4 0 1 0 303 -64.6667 A 4 4 0 1 0 311 -64.6667 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 100 + </text> + <path d="M 401.0526315789474 -300 L 401.0526315789474 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,401.053,-279.001)" x="401.0526315789474" y="-279.00097346438844"> + 300 + </text> + <path d="M 502.10526315789474 -300 L 502.10526315789474 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,502.105,-279.001)" x="502.10526315789474" y="-279.00097346438844"> + 500 + </text> + <path d="M 603.1578947368421 -300 L 603.1578947368421 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,603.158,-279.001)" x="603.1578947368421" y="-279.00097346438844"> + 700 + </text> + <path d="M 704.2105263157895 -300 L 704.2105263157895 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,704.211,-279.001)" x="704.2105263157895" y="-279.00097346438844"> + 900 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 8.64e-05 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.5004867321942"> + 1.73e-04 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.5004867321942"> + 2.59e-04 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.5004867321942"> + 3.46e-04 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321942"> + 4.32e-04 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 300.0 -315.77881327305454 L 350.5263157894737 -335.77699010212535 L 401.0526315789474 -357.061224300925 L 451.57894736842104 -378.83553054736774 L 502.10526315789474 -401.7418686113823 L 552.6315789473684 -424.929178601341 L 603.1578947368421 -450.2171609434215 L 653.6842105263158 -471.5170725612775 L 704.2105263157895 -495.8130000416461 L 754.7368421052631 -520.0" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip3);"> + <path d="M 292.0 -307.77881327305454 L 292.0 -323.77881327305454 L 308.0 -323.77881327305454 L 308.0 -307.77881327305454 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 300.0 -315.77881327305454 M 304.0 -315.77881327305454 L 304 -315.779 M 304 -315.779 A 4 4 0 1 0 296 -315.779 A 4 4 0 1 0 304 -315.779 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip4);"> + <path d="M 342.5263157894737 -327.77699010212535 L 342.5263157894737 -343.77699010212535 L 358.5263157894737 -343.77699010212535 L 358.5263157894737 -327.77699010212535 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 350.5263157894737 -335.77699010212535 M 354.5263157894737 -335.77699010212535 L 354.526 -335.777 M 354.526 -335.777 A 4 4 0 1 0 346.526 -335.777 A 4 4 0 1 0 354.526 -335.777 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 393.0526315789474 -349.061224300925 L 393.0526315789474 -365.061224300925 L 409.0526315789474 -365.061224300925 L 409.0526315789474 -349.061224300925 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 401.0526315789474 -357.061224300925 M 405.0526315789474 -357.061224300925 L 405.053 -357.061 M 405.053 -357.061 A 4 4 0 1 0 397.053 -357.061 A 4 4 0 1 0 405.053 -357.061 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 443.57894736842104 -370.83553054736774 L 443.57894736842104 -386.83553054736774 L 459.57894736842104 -386.83553054736774 L 459.57894736842104 -370.83553054736774 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 451.57894736842104 -378.83553054736774 M 455.57894736842104 -378.83553054736774 L 455.579 -378.836 M 455.579 -378.836 A 4 4 0 1 0 447.579 -378.836 A 4 4 0 1 0 455.579 -378.836 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 494.10526315789474 -393.7418686113823 L 494.10526315789474 -409.7418686113823 L 510.10526315789474 -409.7418686113823 L 510.10526315789474 -393.7418686113823 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 502.10526315789474 -401.7418686113823 M 506.10526315789474 -401.7418686113823 L 506.105 -401.742 M 506.105 -401.742 A 4 4 0 1 0 498.105 -401.742 A 4 4 0 1 0 506.105 -401.742 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 544.6315789473684 -416.929178601341 L 544.6315789473684 -432.929178601341 L 560.6315789473684 -432.929178601341 L 560.6315789473684 -416.929178601341 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 552.6315789473684 -424.929178601341 M 556.6315789473684 -424.929178601341 L 556.632 -424.929 M 556.632 -424.929 A 4 4 0 1 0 548.632 -424.929 A 4 4 0 1 0 556.632 -424.929 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 595.1578947368421 -442.2171609434215 L 595.1578947368421 -458.2171609434215 L 611.1578947368421 -458.2171609434215 L 611.1578947368421 -442.2171609434215 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 603.1578947368421 -450.2171609434215 M 607.1578947368421 -450.2171609434215 L 607.158 -450.217 M 607.158 -450.217 A 4 4 0 1 0 599.158 -450.217 A 4 4 0 1 0 607.158 -450.217 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip10);"> + <path d="M 645.6842105263158 -463.5170725612775 L 645.6842105263158 -479.5170725612775 L 661.6842105263158 -479.5170725612775 L 661.6842105263158 -463.5170725612775 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 653.6842105263158 -471.5170725612775 M 657.6842105263158 -471.5170725612775 L 657.684 -471.517 M 657.684 -471.517 A 4 4 0 1 0 649.684 -471.517 A 4 4 0 1 0 657.684 -471.517 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip11);"> + <path d="M 696.2105263157895 -487.8130000416461 L 696.2105263157895 -503.8130000416461 L 712.2105263157895 -503.8130000416461 L 712.2105263157895 -487.8130000416461 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 704.2105263157895 -495.8130000416461 M 708.2105263157895 -495.8130000416461 L 708.211 -495.813 M 708.211 -495.813 A 4 4 0 1 0 700.211 -495.813 A 4 4 0 1 0 708.211 -495.813 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 746.7368421052631 -512.0 L 746.7368421052631 -528.0 L 762.7368421052631 -528.0 L 762.7368421052631 -512.0 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 754.7368421052631 -520.0 M 758.7368421052631 -520.0 L 758.737 -520 M 758.737 -520 A 4 4 0 1 0 750.737 -520 A 4 4 0 1 0 758.737 -520 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip13);"> + <path d="M 300.0 -313.5929331303475 L 350.5263157894737 -329.21431050359314 L 401.0526315789474 -345.7577542606209 L 451.57894736842104 -364.00051826178697 L 502.10526315789474 -379.0167370793172 L 552.6315789473684 -399.2059951783144 L 603.1578947368421 -416.2953999639068 L 653.6842105263158 -436.959561698603 L 704.2105263157895 -453.03146126687244 L 754.7368421052631 -470.4705539385583" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip14);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip15);"> + <path d="M 296.0 -309.5929331303475 L 296.0 -317.5929331303475 L 304.0 -317.5929331303475 L 304.0 -309.5929331303475 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 296.0 -309.5929331303475 L 296.0 -317.5929331303475 L 304.0 -317.5929331303475 L 304.0 -309.5929331303475 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip16);"> + <path d="M 346.5263157894737 -325.21431050359314 L 346.5263157894737 -333.21431050359314 L 354.5263157894737 -333.21431050359314 L 354.5263157894737 -325.21431050359314 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 346.5263157894737 -325.21431050359314 L 346.5263157894737 -333.21431050359314 L 354.5263157894737 -333.21431050359314 L 354.5263157894737 -325.21431050359314 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip17);"> + <path d="M 397.0526315789474 -341.7577542606209 L 397.0526315789474 -349.7577542606209 L 405.0526315789474 -349.7577542606209 L 405.0526315789474 -341.7577542606209 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 397.0526315789474 -341.7577542606209 L 397.0526315789474 -349.7577542606209 L 405.0526315789474 -349.7577542606209 L 405.0526315789474 -341.7577542606209 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip18);"> + <path d="M 447.57894736842104 -360.00051826178697 L 447.57894736842104 -368.00051826178697 L 455.57894736842104 -368.00051826178697 L 455.57894736842104 -360.00051826178697 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 447.57894736842104 -360.00051826178697 L 447.57894736842104 -368.00051826178697 L 455.57894736842104 -368.00051826178697 L 455.57894736842104 -360.00051826178697 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip19);"> + <path d="M 498.10526315789474 -375.0167370793172 L 498.10526315789474 -383.0167370793172 L 506.10526315789474 -383.0167370793172 L 506.10526315789474 -375.0167370793172 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 498.10526315789474 -375.0167370793172 L 498.10526315789474 -383.0167370793172 L 506.10526315789474 -383.0167370793172 L 506.10526315789474 -375.0167370793172 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip20);"> + <path d="M 548.6315789473684 -395.2059951783144 L 548.6315789473684 -403.2059951783144 L 556.6315789473684 -403.2059951783144 L 556.6315789473684 -395.2059951783144 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 548.6315789473684 -395.2059951783144 L 548.6315789473684 -403.2059951783144 L 556.6315789473684 -403.2059951783144 L 556.6315789473684 -395.2059951783144 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip21);"> + <path d="M 599.1578947368421 -412.2953999639068 L 599.1578947368421 -420.2953999639068 L 607.1578947368421 -420.2953999639068 L 607.1578947368421 -412.2953999639068 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 599.1578947368421 -412.2953999639068 L 599.1578947368421 -420.2953999639068 L 607.1578947368421 -420.2953999639068 L 607.1578947368421 -412.2953999639068 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip22);"> + <path d="M 649.6842105263158 -432.959561698603 L 649.6842105263158 -440.959561698603 L 657.6842105263158 -440.959561698603 L 657.6842105263158 -432.959561698603 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 649.6842105263158 -432.959561698603 L 649.6842105263158 -440.959561698603 L 657.6842105263158 -440.959561698603 L 657.6842105263158 -432.959561698603 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip23);"> + <path d="M 700.2105263157895 -449.03146126687244 L 700.2105263157895 -457.03146126687244 L 708.2105263157895 -457.03146126687244 L 708.2105263157895 -449.03146126687244 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 700.2105263157895 -449.03146126687244 L 700.2105263157895 -457.03146126687244 L 708.2105263157895 -457.03146126687244 L 708.2105263157895 -449.03146126687244 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip24);"> + <path d="M 750.7368421052631 -466.4705539385583 L 750.7368421052631 -474.4705539385583 L 758.7368421052631 -474.4705539385583 L 758.7368421052631 -466.4705539385583 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 750.7368421052631 -466.4705539385583 L 750.7368421052631 -474.4705539385583 L 758.7368421052631 -474.4705539385583 L 758.7368421052631 -466.4705539385583 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip25);"> + <path d="M 300.0 -300.2101787077698 L 350.5263157894737 -300.2983193973356 L 401.0526315789474 -300.4648492182113 L 451.57894736842104 -300.6057286436811 L 502.10526315789474 -300.6544355342492 L 552.6315789473684 -300.9897337892803 L 603.1578947368421 -301.0140592391732 L 653.6842105263158 -301.2725177805439 L 704.2105263157895 -301.31964674906413 L 754.7368421052631 -301.3573539959372" style="stroke:rgb(205,0,0);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip26);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip27);"> + <path d="M 293.75 -295.2101787077698 L 293.75 -305.2101787077698 L 306.25 -305.2101787077698 L 306.25 -295.2101787077698 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 300.0 -295.2101787077698 L 293.75 -305.2101787077698 L 306.25 -305.2101787077698 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip28);"> + <path d="M 344.2763157894737 -295.2983193973356 L 344.2763157894737 -305.2983193973356 L 356.7763157894737 -305.2983193973356 L 356.7763157894737 -295.2983193973356 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 350.5263157894737 -295.2983193973356 L 344.2763157894737 -305.2983193973356 L 356.7763157894737 -305.2983193973356 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip29);"> + <path d="M 394.8026315789474 -295.4648492182113 L 394.8026315789474 -305.4648492182113 L 407.3026315789474 -305.4648492182113 L 407.3026315789474 -295.4648492182113 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 401.0526315789474 -295.4648492182113 L 394.8026315789474 -305.4648492182113 L 407.3026315789474 -305.4648492182113 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip30);"> + <path d="M 445.32894736842104 -295.6057286436811 L 445.32894736842104 -305.6057286436811 L 457.82894736842104 -305.6057286436811 L 457.82894736842104 -295.6057286436811 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 451.57894736842104 -295.6057286436811 L 445.32894736842104 -305.6057286436811 L 457.82894736842104 -305.6057286436811 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip31);"> + <path d="M 495.85526315789474 -295.6544355342492 L 495.85526315789474 -305.6544355342492 L 508.35526315789474 -305.6544355342492 L 508.35526315789474 -295.6544355342492 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 502.10526315789474 -295.6544355342492 L 495.85526315789474 -305.6544355342492 L 508.35526315789474 -305.6544355342492 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip32);"> + <path d="M 546.3815789473684 -295.9897337892803 L 546.3815789473684 -305.9897337892803 L 558.8815789473684 -305.9897337892803 L 558.8815789473684 -295.9897337892803 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 552.6315789473684 -295.9897337892803 L 546.3815789473684 -305.9897337892803 L 558.8815789473684 -305.9897337892803 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip33);"> + <path d="M 596.9078947368421 -296.0140592391732 L 596.9078947368421 -306.0140592391732 L 609.4078947368421 -306.0140592391732 L 609.4078947368421 -296.0140592391732 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 603.1578947368421 -296.0140592391732 L 596.9078947368421 -306.0140592391732 L 609.4078947368421 -306.0140592391732 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip34);"> + <path d="M 647.4342105263158 -296.2725177805439 L 647.4342105263158 -306.2725177805439 L 659.9342105263158 -306.2725177805439 L 659.9342105263158 -296.2725177805439 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 653.6842105263158 -296.2725177805439 L 647.4342105263158 -306.2725177805439 L 659.9342105263158 -306.2725177805439 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip35);"> + <path d="M 697.9605263157895 -296.31964674906413 L 697.9605263157895 -306.31964674906413 L 710.4605263157895 -306.31964674906413 L 710.4605263157895 -296.31964674906413 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 704.2105263157895 -296.31964674906413 L 697.9605263157895 -306.31964674906413 L 710.4605263157895 -306.31964674906413 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip36);"> + <path d="M 748.4868421052631 -296.3573539959372 L 748.4868421052631 -306.3573539959372 L 760.9868421052631 -306.3573539959372 L 760.9868421052631 -296.3573539959372 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 754.7368421052631 -296.3573539959372 L 748.4868421052631 -306.3573539959372 L 760.9868421052631 -306.3573539959372 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip37);"> + <path d="M 300.0 -300.09022965475435 L 350.5263157894737 -300.08498484547005 L 401.0526315789474 -300.0944676479707 L 451.57894736842104 -300.0846611169467 L 502.10526315789474 -300.11839403628755 L 552.6315789473684 -300.0971048138191 L 603.1578947368421 -300.1169621992809 L 653.6842105263158 -300.08552999208723 L 704.2105263157895 -300.0980892335741 L 754.7368421052631 -300.11912904255763" style="stroke:rgb(126,126,126);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip38);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip39);"> + <path d="M 292.85714285714283 -292.94737251189724 L 292.85714285714283 -307.2330867976115 L 307.14285714285717 -307.2330867976115 L 307.14285714285717 -292.94737251189724 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 292.85714285714283 -300.09022965475435 L 300.0 -307.2330867976115 L 307.14285714285717 -300.09022965475435 L 300.0 -292.94737251189724 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip40);"> + <path d="M 343.38345864661653 -292.94212770261294 L 343.38345864661653 -307.2278419883272 L 357.6691729323308 -307.2278419883272 L 357.6691729323308 -292.94212770261294 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 343.38345864661653 -300.08498484547005 L 350.5263157894737 -307.2278419883272 L 357.6691729323308 -300.08498484547005 L 350.5263157894737 -292.94212770261294 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip41);"> + <path d="M 393.90977443609023 -292.95161050511354 L 393.90977443609023 -307.2373247908278 L 408.1954887218045 -307.2373247908278 L 408.1954887218045 -292.95161050511354 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 393.90977443609023 -300.0944676479707 L 401.0526315789474 -307.2373247908278 L 408.1954887218045 -300.0944676479707 L 401.0526315789474 -292.95161050511354 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip42);"> + <path d="M 444.43609022556393 -292.94180397408957 L 444.43609022556393 -307.22751825980384 L 458.72180451127815 -307.22751825980384 L 458.72180451127815 -292.94180397408957 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 444.43609022556393 -300.0846611169467 L 451.57894736842104 -307.22751825980384 L 458.72180451127815 -300.0846611169467 L 451.57894736842104 -292.94180397408957 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip43);"> + <path d="M 494.9624060150376 -292.97553689343044 L 494.9624060150376 -307.2612511791447 L 509.2481203007519 -307.2612511791447 L 509.2481203007519 -292.97553689343044 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 494.9624060150376 -300.11839403628755 L 502.10526315789474 -307.2612511791447 L 509.2481203007519 -300.11839403628755 L 502.10526315789474 -292.97553689343044 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip44);"> + <path d="M 545.4887218045112 -292.95424767096193 L 545.4887218045112 -307.2399619566762 L 559.7744360902255 -307.2399619566762 L 559.7744360902255 -292.95424767096193 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 545.4887218045112 -300.0971048138191 L 552.6315789473684 -307.2399619566762 L 559.7744360902255 -300.0971048138191 L 552.6315789473684 -292.95424767096193 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip45);"> + <path d="M 596.015037593985 -292.97410505642375 L 596.015037593985 -307.25981934213803 L 610.3007518796992 -307.25981934213803 L 610.3007518796992 -292.97410505642375 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 596.015037593985 -300.1169621992809 L 603.1578947368421 -307.25981934213803 L 610.3007518796992 -300.1169621992809 L 603.1578947368421 -292.97410505642375 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip46);"> + <path d="M 646.5413533834586 -292.9426728492301 L 646.5413533834586 -307.2283871349444 L 660.827067669173 -307.2283871349444 L 660.827067669173 -292.9426728492301 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 646.5413533834586 -300.08552999208723 L 653.6842105263158 -307.2283871349444 L 660.827067669173 -300.08552999208723 L 653.6842105263158 -292.9426728492301 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip47);"> + <path d="M 697.0676691729323 -292.95523209071695 L 697.0676691729323 -307.2409463764312 L 711.3533834586467 -307.2409463764312 L 711.3533834586467 -292.95523209071695 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 697.0676691729323 -300.0980892335741 L 704.2105263157895 -307.2409463764312 L 711.3533834586467 -300.0980892335741 L 704.2105263157895 -292.95523209071695 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip48);"> + <path d="M 747.593984962406 -292.97627189970046 L 747.593984962406 -307.26198618541474 L 761.8796992481203 -307.26198618541474 L 761.8796992481203 -292.97627189970046 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 747.593984962406 -300.11912904255763 L 754.7368421052631 -307.26198618541474 L 761.8796992481203 -300.11912904255763 L 754.7368421052631 -292.97627189970046 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip49);"> + <path d="M 300.0 -300.0572388677831 L 350.5263157894737 -300.05486842166147 L 401.0526315789474 -300.0548862369104 L 451.57894736842104 -300.05547566714637 L 502.10526315789474 -300.06506179809077 L 552.6315789473684 -300.06325584085664 L 603.1578947368421 -300.06544508044624 L 653.6842105263158 -300.0597426737681 L 704.2105263157895 -300.0611729837534 L 754.7368421052631 -300.0593263059503" style="stroke:rgb(137,42,226);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip50);"> + <path d="M 292.85714285714283 -300.0572388677831 L 307.14285714285717 -300.0572388677831" style="stroke-width:1;"/> + <path d="M 300.0 -292.91438172492593 L 300.0 -307.2000960106402" style="stroke-width:1;"/> + <path d="M 343.38345864661653 -300.05486842166147 L 357.6691729323308 -300.05486842166147" style="stroke-width:1;"/> + <path d="M 350.5263157894737 -292.91201127880436 L 350.5263157894737 -307.19772556451863" style="stroke-width:1;"/> + <path d="M 393.90977443609023 -300.0548862369104 L 408.1954887218045 -300.0548862369104" style="stroke-width:1;"/> + <path d="M 401.0526315789474 -292.91202909405325 L 401.0526315789474 -307.1977433797676" style="stroke-width:1;"/> + <path d="M 444.43609022556393 -300.05547566714637 L 458.72180451127815 -300.05547566714637" style="stroke-width:1;"/> + <path d="M 451.57894736842104 -292.9126185242892 L 451.57894736842104 -307.19833281000354" style="stroke-width:1;"/> + <path d="M 494.9624060150376 -300.06506179809077 L 509.2481203007519 -300.06506179809077" style="stroke-width:1;"/> + <path d="M 502.10526315789474 -292.9222046552336 L 502.10526315789474 -307.2079189409479" style="stroke-width:1;"/> + <path d="M 545.4887218045112 -300.06325584085664 L 559.7744360902255 -300.06325584085664" style="stroke-width:1;"/> + <path d="M 552.6315789473684 -292.9203986979995 L 552.6315789473684 -307.20611298371375" style="stroke-width:1;"/> + <path d="M 596.015037593985 -300.06544508044624 L 610.3007518796992 -300.06544508044624" style="stroke-width:1;"/> + <path d="M 603.1578947368421 -292.9225879375891 L 603.1578947368421 -307.2083022233034" style="stroke-width:1;"/> + <path d="M 646.5413533834586 -300.0597426737681 L 660.827067669173 -300.0597426737681" style="stroke-width:1;"/> + <path d="M 653.6842105263158 -292.9168855309109 L 653.6842105263158 -307.20259981662525" style="stroke-width:1;"/> + <path d="M 697.0676691729323 -300.0611729837534 L 711.3533834586467 -300.0611729837534" style="stroke-width:1;"/> + <path d="M 704.2105263157895 -292.9183158408963 L 704.2105263157895 -307.2040301266106" style="stroke-width:1;"/> + <path d="M 747.593984962406 -300.0593263059503 L 761.8796992481203 -300.0593263059503" style="stroke-width:1;"/> + <path d="M 754.7368421052631 -292.91646916309315 L 754.7368421052631 -307.20218344880743" style="stroke-width:1;"/> + </g> + <g style="clip-path:url(#clip51);"> + <path d="M 300.0 -300.0432247312674 L 350.5263157894737 -300.04684372093453 L 401.0526315789474 -300.04227115734335 L 451.57894736842104 -300.0469433336264 L 502.10526315789474 -300.04604732840676 L 552.6315789473684 -300.0471711143091 L 603.1578947368421 -300.04698924606794 L 653.6842105263158 -300.0460478883146 L 704.2105263157895 -300.0461336051123 L 754.7368421052631 -300.04574742141625" style="stroke:rgb(147,147,147);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip52);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip53);"> + <path d="M 293.75 -295.0432247312674 L 293.75 -305.0432247312674 L 306.25 -305.0432247312674 L 306.25 -295.0432247312674 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 293.75 -295.0432247312674 L 306.25 -295.0432247312674 L 300.0 -305.0432247312674 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip54);"> + <path d="M 344.2763157894737 -295.04684372093453 L 344.2763157894737 -305.04684372093453 L 356.7763157894737 -305.04684372093453 L 356.7763157894737 -295.04684372093453 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 344.2763157894737 -295.04684372093453 L 356.7763157894737 -295.04684372093453 L 350.5263157894737 -305.04684372093453 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip55);"> + <path d="M 394.8026315789474 -295.04227115734335 L 394.8026315789474 -305.04227115734335 L 407.3026315789474 -305.04227115734335 L 407.3026315789474 -295.04227115734335 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 394.8026315789474 -295.04227115734335 L 407.3026315789474 -295.04227115734335 L 401.0526315789474 -305.04227115734335 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip56);"> + <path d="M 445.32894736842104 -295.0469433336264 L 445.32894736842104 -305.0469433336264 L 457.82894736842104 -305.0469433336264 L 457.82894736842104 -295.0469433336264 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 445.32894736842104 -295.0469433336264 L 457.82894736842104 -295.0469433336264 L 451.57894736842104 -305.0469433336264 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip57);"> + <path d="M 495.85526315789474 -295.04604732840676 L 495.85526315789474 -305.04604732840676 L 508.35526315789474 -305.04604732840676 L 508.35526315789474 -295.04604732840676 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 495.85526315789474 -295.04604732840676 L 508.35526315789474 -295.04604732840676 L 502.10526315789474 -305.04604732840676 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip58);"> + <path d="M 546.3815789473684 -295.0471711143091 L 546.3815789473684 -305.0471711143091 L 558.8815789473684 -305.0471711143091 L 558.8815789473684 -295.0471711143091 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 546.3815789473684 -295.0471711143091 L 558.8815789473684 -295.0471711143091 L 552.6315789473684 -305.0471711143091 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip59);"> + <path d="M 596.9078947368421 -295.04698924606794 L 596.9078947368421 -305.04698924606794 L 609.4078947368421 -305.04698924606794 L 609.4078947368421 -295.04698924606794 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 596.9078947368421 -295.04698924606794 L 609.4078947368421 -295.04698924606794 L 603.1578947368421 -305.04698924606794 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip60);"> + <path d="M 647.4342105263158 -295.0460478883146 L 647.4342105263158 -305.0460478883146 L 659.9342105263158 -305.0460478883146 L 659.9342105263158 -295.0460478883146 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 647.4342105263158 -295.0460478883146 L 659.9342105263158 -295.0460478883146 L 653.6842105263158 -305.0460478883146 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip61);"> + <path d="M 697.9605263157895 -295.0461336051123 L 697.9605263157895 -305.0461336051123 L 710.4605263157895 -305.0461336051123 L 710.4605263157895 -295.0461336051123 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 697.9605263157895 -295.0461336051123 L 710.4605263157895 -295.0461336051123 L 704.2105263157895 -305.0461336051123 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip62);"> + <path d="M 748.4868421052631 -295.04574742141625 L 748.4868421052631 -305.04574742141625 L 760.9868421052631 -305.04574742141625 L 760.9868421052631 -295.04574742141625 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 748.4868421052631 -295.04574742141625 L 760.9868421052631 -295.04574742141625 L 754.7368421052631 -305.04574742141625 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip63);"> + <path d="M 300.0 -300.0300271439611 L 350.5263157894737 -300.0296542453507 L 401.0526315789474 -300.0288699671922 L 451.57894736842104 -300.02906450971045 L 502.10526315789474 -300.03071415086043 L 552.6315789473684 -300.0295295895089 L 603.1578947368421 -300.02903157695033 L 653.6842105263158 -300.02846795337496 L 704.2105263157895 -300.02902373824077 L 754.7368421052631 -300.02928440078296" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip64);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip65);"> + <path d="M 292.0 -292.0300271439611 L 292.0 -308.0300271439611 L 308.0 -308.0300271439611 L 308.0 -292.0300271439611 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 300.0 -300.0300271439611 M 304.0 -300.0300271439611 L 304 -300.03 M 304 -300.03 A 4 4 0 1 0 296 -300.03 A 4 4 0 1 0 304 -300.03 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip66);"> + <path d="M 342.5263157894737 -292.0296542453507 L 342.5263157894737 -308.0296542453507 L 358.5263157894737 -308.0296542453507 L 358.5263157894737 -292.0296542453507 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 350.5263157894737 -300.0296542453507 M 354.5263157894737 -300.0296542453507 L 354.526 -300.03 M 354.526 -300.03 A 4 4 0 1 0 346.526 -300.03 A 4 4 0 1 0 354.526 -300.03 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip67);"> + <path d="M 393.0526315789474 -292.0288699671922 L 393.0526315789474 -308.0288699671922 L 409.0526315789474 -308.0288699671922 L 409.0526315789474 -292.0288699671922 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 401.0526315789474 -300.0288699671922 M 405.0526315789474 -300.0288699671922 L 405.053 -300.029 M 405.053 -300.029 A 4 4 0 1 0 397.053 -300.029 A 4 4 0 1 0 405.053 -300.029 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip68);"> + <path d="M 443.57894736842104 -292.02906450971045 L 443.57894736842104 -308.02906450971045 L 459.57894736842104 -308.02906450971045 L 459.57894736842104 -292.02906450971045 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 451.57894736842104 -300.02906450971045 M 455.57894736842104 -300.02906450971045 L 455.579 -300.029 M 455.579 -300.029 A 4 4 0 1 0 447.579 -300.029 A 4 4 0 1 0 455.579 -300.029 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip69);"> + <path d="M 494.10526315789474 -292.03071415086043 L 494.10526315789474 -308.03071415086043 L 510.10526315789474 -308.03071415086043 L 510.10526315789474 -292.03071415086043 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 502.10526315789474 -300.03071415086043 M 506.10526315789474 -300.03071415086043 L 506.105 -300.031 M 506.105 -300.031 A 4 4 0 1 0 498.105 -300.031 A 4 4 0 1 0 506.105 -300.031 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip70);"> + <path d="M 544.6315789473684 -292.0295295895089 L 544.6315789473684 -308.0295295895089 L 560.6315789473684 -308.0295295895089 L 560.6315789473684 -292.0295295895089 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 552.6315789473684 -300.0295295895089 M 556.6315789473684 -300.0295295895089 L 556.632 -300.03 M 556.632 -300.03 A 4 4 0 1 0 548.632 -300.03 A 4 4 0 1 0 556.632 -300.03 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip71);"> + <path d="M 595.1578947368421 -292.02903157695033 L 595.1578947368421 -308.02903157695033 L 611.1578947368421 -308.02903157695033 L 611.1578947368421 -292.02903157695033 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 603.1578947368421 -300.02903157695033 M 607.1578947368421 -300.02903157695033 L 607.158 -300.029 M 607.158 -300.029 A 4 4 0 1 0 599.158 -300.029 A 4 4 0 1 0 607.158 -300.029 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip72);"> + <path d="M 645.6842105263158 -292.02846795337496 L 645.6842105263158 -308.02846795337496 L 661.6842105263158 -308.02846795337496 L 661.6842105263158 -292.02846795337496 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 653.6842105263158 -300.02846795337496 M 657.6842105263158 -300.02846795337496 L 657.684 -300.028 M 657.684 -300.028 A 4 4 0 1 0 649.684 -300.028 A 4 4 0 1 0 657.684 -300.028 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip73);"> + <path d="M 696.2105263157895 -292.02902373824077 L 696.2105263157895 -308.02902373824077 L 712.2105263157895 -308.02902373824077 L 712.2105263157895 -292.02902373824077 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 704.2105263157895 -300.02902373824077 M 708.2105263157895 -300.02902373824077 L 708.211 -300.029 M 708.211 -300.029 A 4 4 0 1 0 700.211 -300.029 A 4 4 0 1 0 708.211 -300.029 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip74);"> + <path d="M 746.7368421052631 -292.02928440078296 L 746.7368421052631 -308.02928440078296 L 762.7368421052631 -308.02928440078296 L 762.7368421052631 -292.02928440078296 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 754.7368421052631 -300.02928440078296 M 758.7368421052631 -300.02928440078296 L 758.737 -300.029 M 758.737 -300.029 A 4 4 0 1 0 750.737 -300.029 A 4 4 0 1 0 758.737 -300.029 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip75);"> + <path d="M 290 -54 L 290 -182 L 324 -182 L 324 -54 Z" style="stroke:none;"/> + </g> + <path d="M 300 -172.66666666666669 L 314 -172.66666666666669" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip76);"> + <path d="M 299.0 -164.66666666666669 L 299.0 -180.66666666666669 L 315.0 -180.66666666666669 L 315.0 -164.66666666666669 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -172.66666666666669 M 311.0 -172.66666666666669 L 311 -172.667 M 311 -172.667 A 4 4 0 1 0 303 -172.667 A 4 4 0 1 0 311 -172.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-168.0"> + n_pq_deque + </text> + <path d="M 300 -154.66666666666666 L 314 -154.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip77);"> + <path d="M 303.0 -150.66666666666666 L 303.0 -158.66666666666666 L 311.0 -158.66666666666666 L 311.0 -150.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 303.0 -150.66666666666666 L 303.0 -158.66666666666666 L 311.0 -158.66666666666666 L 311.0 -150.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-150.0"> + n_pq_vector + </text> + <path d="M 300 -136.66666666666666 L 314 -136.66666666666666" style="stroke:rgb(205,0,0);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip78);"> + <path d="M 300.75 -131.66666666666666 L 300.75 -141.66666666666666 L 313.25 -141.66666666666666 L 313.25 -131.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -131.66666666666666 L 300.75 -141.66666666666666 L 313.25 -141.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-132.0"> + binary_heap + </text> + <path d="M 300 -118.66666666666666 L 314 -118.66666666666666" style="stroke:rgb(126,126,126);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip79);"> + <path d="M 299.85714285714283 -111.52380952380952 L 299.85714285714283 -125.8095238095238 L 314.14285714285717 -125.8095238095238 L 314.14285714285717 -111.52380952380952 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 299.85714285714283 -118.66666666666666 L 307.0 -125.8095238095238 L 314.14285714285717 -118.66666666666666 L 307.0 -111.52380952380952 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-114.0"> + rc_binomial_heap + </text> + <path d="M 300 -100.66666666666666 L 314 -100.66666666666666" style="stroke:rgb(137,42,226);stroke-width:2;"/> + <path d="M 299.85714285714283 -100.66666666666666 L 314.14285714285717 -100.66666666666666" style="stroke-width:1;"/> + <path d="M 307.0 -93.52380952380952 L 307.0 -107.8095238095238" style="stroke-width:1;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-96.0"> + pairing_heap + </text> + <path d="M 300 -82.66666666666666 L 314 -82.66666666666666" style="stroke:rgb(147,147,147);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip80);"> + <path d="M 300.75 -77.66666666666666 L 300.75 -87.66666666666666 L 313.25 -87.66666666666666 L 313.25 -77.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 300.75 -77.66666666666666 L 313.25 -77.66666666666666 L 307.0 -87.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-78.0"> + binomial_heap + </text> + <path d="M 300 -64.66666666666666 L 314 -64.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip81);"> + <path d="M 299.0 -56.66666666666666 L 299.0 -72.66666666666666 L 315.0 -72.66666666666666 L 315.0 -56.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -64.66666666666666 M 311.0 -64.66666666666666 L 311 -64.6667 M 311 -64.6667 A 4 4 0 1 0 303 -64.6667 A 4 4 0 1 0 311 -64.6667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-60.0"> + thin_heap + </text> + </g> + </g> + </g> + </g> + </g> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_up_timing_test_pairing_thin_local.pdf b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_up_timing_test_pairing_thin_local.pdf Binary files differnew file mode 100644 index 00000000000..226713cedc9 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_up_timing_test_pairing_thin_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_up_timing_test_pairing_thin_local.png b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_up_timing_test_pairing_thin_local.png Binary files differnew file mode 100644 index 00000000000..eb7843d66be --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_up_timing_test_pairing_thin_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_up_timing_test_pairing_thin_local.svg b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_up_timing_test_pairing_thin_local.svg new file mode 100644 index 00000000000..a10ca2524e8 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_up_timing_test_pairing_thin_local.svg @@ -0,0 +1,224 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 396.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 300.0 -400.93916343895347 M 304.0 -400.93916343895347 L 304 -400.939 M 304 -400.939 A 4 4 0 1 0 296 -400.939 A 4 4 0 1 0 304 -400.939 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 350.5263157894737 -399.685628509652 M 354.5263157894737 -399.685628509652 L 354.526 -399.686 M 354.526 -399.686 A 4 4 0 1 0 346.526 -399.686 A 4 4 0 1 0 354.526 -399.686 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 401.0526315789474 -397.0492012381975 M 405.0526315789474 -397.0492012381975 L 405.053 -397.049 M 405.053 -397.049 A 4 4 0 1 0 397.053 -397.049 A 4 4 0 1 0 405.053 -397.049 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 451.57894736842104 -397.70317482539235 M 455.57894736842104 -397.70317482539235 L 455.579 -397.703 M 455.579 -397.703 A 4 4 0 1 0 447.579 -397.703 A 4 4 0 1 0 455.579 -397.703 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 502.10526315789474 -403.24860391681057 M 506.10526315789474 -403.24860391681057 L 506.105 -403.249 M 506.105 -403.249 A 4 4 0 1 0 498.105 -403.249 A 4 4 0 1 0 506.105 -403.249 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 552.6315789473684 -399.26658577939554 M 556.6315789473684 -399.26658577939554 L 556.632 -399.267 M 556.632 -399.267 A 4 4 0 1 0 548.632 -399.267 A 4 4 0 1 0 556.632 -399.267 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 603.1578947368421 -397.592468150637 M 607.1578947368421 -397.592468150637 L 607.158 -397.592 M 607.158 -397.592 A 4 4 0 1 0 599.158 -397.592 A 4 4 0 1 0 607.158 -397.592 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 653.6842105263158 -395.69779271081245 M 657.6842105263158 -395.69779271081245 L 657.684 -395.698 M 657.684 -395.698 A 4 4 0 1 0 649.684 -395.698 A 4 4 0 1 0 657.684 -395.698 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 704.2105263157895 -397.56611756653757 M 708.2105263157895 -397.56611756653757 L 708.211 -397.566 M 708.211 -397.566 A 4 4 0 1 0 700.211 -397.566 A 4 4 0 1 0 708.211 -397.566 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 754.7368421052631 -398.44236004168806 M 758.7368421052631 -398.44236004168806 L 758.737 -398.442 M 758.737 -398.442 A 4 4 0 1 0 750.737 -398.442 A 4 4 0 1 0 758.737 -398.442 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 290 -154 L 290 -192 L 324 -192 L 324 -154 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 307.0 -164.66666666666666 M 311.0 -164.66666666666666 L 311 -164.667 M 311 -164.667 A 4 4 0 1 0 303 -164.667 A 4 4 0 1 0 311 -164.667 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 100 + </text> + <path d="M 401.0526315789474 -300 L 401.0526315789474 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,401.053,-279.001)" x="401.0526315789474" y="-279.00097346438844"> + 300 + </text> + <path d="M 502.10526315789474 -300 L 502.10526315789474 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,502.105,-279.001)" x="502.10526315789474" y="-279.00097346438844"> + 500 + </text> + <path d="M 603.1578947368421 -300 L 603.1578947368421 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,603.158,-279.001)" x="603.1578947368421" y="-279.00097346438844"> + 700 + </text> + <path d="M 704.2105263157895 -300 L 704.2105263157895 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,704.211,-279.001)" x="704.2105263157895" y="-279.00097346438844"> + 900 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -471.10768895733196 L 780 -471.10768895733196" style="stroke:rgb(179,179,179);stroke-width:0.4;stroke-dasharray:1,1;"/> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 2.57e-08 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.5004867321942"> + 5.14e-08 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.5004867321942"> + 7.71e-08 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.5004867321942"> + 1.03e-07 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321942"> + 1.29e-07 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 300.0 -492.41401838629895 L 350.5263157894737 -484.445533311556 L 401.0526315789474 -484.50542100269104 L 451.57894736842104 -486.486848040817 L 502.10526315789474 -518.7115591021513 L 552.6315789473684 -512.6406582979452 L 603.1578947368421 -520.0 L 653.6842105263158 -500.83080560611006 L 704.2105263157895 -505.6389316658111 L 754.7368421052631 -499.4311447104391" style="stroke:rgb(137,42,226);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <path d="M 292.85714285714283 -492.41401838629895 L 307.14285714285717 -492.41401838629895" style="stroke-width:1;"/> + <path d="M 300.0 -485.2711612434418 L 300.0 -499.55687552915606" style="stroke-width:1;"/> + <path d="M 343.38345864661653 -484.445533311556 L 357.6691729323308 -484.445533311556" style="stroke-width:1;"/> + <path d="M 350.5263157894737 -477.30267616869884 L 350.5263157894737 -491.5883904544131" style="stroke-width:1;"/> + <path d="M 393.90977443609023 -484.50542100269104 L 408.1954887218045 -484.50542100269104" style="stroke-width:1;"/> + <path d="M 401.0526315789474 -477.3625638598339 L 401.0526315789474 -491.6482781455482" style="stroke-width:1;"/> + <path d="M 444.43609022556393 -486.486848040817 L 458.72180451127815 -486.486848040817" style="stroke-width:1;"/> + <path d="M 451.57894736842104 -479.3439908979598 L 451.57894736842104 -493.6297051836741" style="stroke-width:1;"/> + <path d="M 494.9624060150376 -518.7115591021513 L 509.2481203007519 -518.7115591021513" style="stroke-width:1;"/> + <path d="M 502.10526315789474 -511.5687019592941 L 502.10526315789474 -525.8544162450085" style="stroke-width:1;"/> + <path d="M 545.4887218045112 -512.6406582979452 L 559.7744360902255 -512.6406582979452" style="stroke-width:1;"/> + <path d="M 552.6315789473684 -505.497801155088 L 552.6315789473684 -519.7835154408023" style="stroke-width:1;"/> + <path d="M 596.015037593985 -520.0 L 610.3007518796992 -520.0" style="stroke-width:1;"/> + <path d="M 603.1578947368421 -512.8571428571429 L 603.1578947368421 -527.1428571428571" style="stroke-width:1;"/> + <path d="M 646.5413533834586 -500.83080560611006 L 660.827067669173 -500.83080560611006" style="stroke-width:1;"/> + <path d="M 653.6842105263158 -493.68794846325295 L 653.6842105263158 -507.97366274896723" style="stroke-width:1;"/> + <path d="M 697.0676691729323 -505.6389316658111 L 711.3533834586467 -505.6389316658111" style="stroke-width:1;"/> + <path d="M 704.2105263157895 -498.496074522954 L 704.2105263157895 -512.7817888086684" style="stroke-width:1;"/> + <path d="M 747.593984962406 -499.4311447104391 L 761.8796992481203 -499.4311447104391" style="stroke-width:1;"/> + <path d="M 754.7368421052631 -492.28828756758196 L 754.7368421052631 -506.5740018532963" style="stroke-width:1;"/> + </g> + <g style="clip-path:url(#clip3);"> + <path d="M 300.0 -400.93916343895347 L 350.5263157894737 -399.685628509652 L 401.0526315789474 -397.0492012381975 L 451.57894736842104 -397.70317482539235 L 502.10526315789474 -403.24860391681057 L 552.6315789473684 -399.26658577939554 L 603.1578947368421 -397.592468150637 L 653.6842105263158 -395.69779271081245 L 704.2105263157895 -397.56611756653757 L 754.7368421052631 -398.44236004168806" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip4);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 292.0 -392.93916343895347 L 292.0 -408.93916343895347 L 308.0 -408.93916343895347 L 308.0 -392.93916343895347 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 300.0 -400.93916343895347 M 304.0 -400.93916343895347 L 304 -400.939 M 304 -400.939 A 4 4 0 1 0 296 -400.939 A 4 4 0 1 0 304 -400.939 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 342.5263157894737 -391.685628509652 L 342.5263157894737 -407.685628509652 L 358.5263157894737 -407.685628509652 L 358.5263157894737 -391.685628509652 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 350.5263157894737 -399.685628509652 M 354.5263157894737 -399.685628509652 L 354.526 -399.686 M 354.526 -399.686 A 4 4 0 1 0 346.526 -399.686 A 4 4 0 1 0 354.526 -399.686 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 393.0526315789474 -389.0492012381975 L 393.0526315789474 -405.0492012381975 L 409.0526315789474 -405.0492012381975 L 409.0526315789474 -389.0492012381975 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 401.0526315789474 -397.0492012381975 M 405.0526315789474 -397.0492012381975 L 405.053 -397.049 M 405.053 -397.049 A 4 4 0 1 0 397.053 -397.049 A 4 4 0 1 0 405.053 -397.049 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 443.57894736842104 -389.70317482539235 L 443.57894736842104 -405.70317482539235 L 459.57894736842104 -405.70317482539235 L 459.57894736842104 -389.70317482539235 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 451.57894736842104 -397.70317482539235 M 455.57894736842104 -397.70317482539235 L 455.579 -397.703 M 455.579 -397.703 A 4 4 0 1 0 447.579 -397.703 A 4 4 0 1 0 455.579 -397.703 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 494.10526315789474 -395.24860391681057 L 494.10526315789474 -411.24860391681057 L 510.10526315789474 -411.24860391681057 L 510.10526315789474 -395.24860391681057 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 502.10526315789474 -403.24860391681057 M 506.10526315789474 -403.24860391681057 L 506.105 -403.249 M 506.105 -403.249 A 4 4 0 1 0 498.105 -403.249 A 4 4 0 1 0 506.105 -403.249 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip10);"> + <path d="M 544.6315789473684 -391.26658577939554 L 544.6315789473684 -407.26658577939554 L 560.6315789473684 -407.26658577939554 L 560.6315789473684 -391.26658577939554 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 552.6315789473684 -399.26658577939554 M 556.6315789473684 -399.26658577939554 L 556.632 -399.267 M 556.632 -399.267 A 4 4 0 1 0 548.632 -399.267 A 4 4 0 1 0 556.632 -399.267 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip11);"> + <path d="M 595.1578947368421 -389.592468150637 L 595.1578947368421 -405.592468150637 L 611.1578947368421 -405.592468150637 L 611.1578947368421 -389.592468150637 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 603.1578947368421 -397.592468150637 M 607.1578947368421 -397.592468150637 L 607.158 -397.592 M 607.158 -397.592 A 4 4 0 1 0 599.158 -397.592 A 4 4 0 1 0 607.158 -397.592 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 645.6842105263158 -387.69779271081245 L 645.6842105263158 -403.69779271081245 L 661.6842105263158 -403.69779271081245 L 661.6842105263158 -387.69779271081245 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 653.6842105263158 -395.69779271081245 M 657.6842105263158 -395.69779271081245 L 657.684 -395.698 M 657.684 -395.698 A 4 4 0 1 0 649.684 -395.698 A 4 4 0 1 0 657.684 -395.698 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip13);"> + <path d="M 696.2105263157895 -389.56611756653757 L 696.2105263157895 -405.56611756653757 L 712.2105263157895 -405.56611756653757 L 712.2105263157895 -389.56611756653757 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 704.2105263157895 -397.56611756653757 M 708.2105263157895 -397.56611756653757 L 708.211 -397.566 M 708.211 -397.566 A 4 4 0 1 0 700.211 -397.566 A 4 4 0 1 0 708.211 -397.566 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip14);"> + <path d="M 746.7368421052631 -390.44236004168806 L 746.7368421052631 -406.44236004168806 L 762.7368421052631 -406.44236004168806 L 762.7368421052631 -390.44236004168806 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 754.7368421052631 -398.44236004168806 M 758.7368421052631 -398.44236004168806 L 758.737 -398.442 M 758.737 -398.442 A 4 4 0 1 0 750.737 -398.442 A 4 4 0 1 0 758.737 -398.442 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip15);"> + <path d="M 290 -154 L 290 -192 L 324 -192 L 324 -154 Z" style="stroke:none;"/> + </g> + <path d="M 300 -182.66666666666669 L 314 -182.66666666666669" style="stroke:rgb(137,42,226);stroke-width:2;"/> + <path d="M 299.85714285714283 -182.66666666666669 L 314.14285714285717 -182.66666666666669" style="stroke-width:1;"/> + <path d="M 307.0 -175.52380952380952 L 307.0 -189.8095238095238" style="stroke-width:1;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-178.0"> + pairing_heap + </text> + <path d="M 300 -164.66666666666666 L 314 -164.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip16);"> + <path d="M 299.0 -156.66666666666666 L 299.0 -172.66666666666666 L 315.0 -172.66666666666666 L 315.0 -156.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -164.66666666666666 M 311.0 -164.66666666666666 L 311 -164.667 M 311 -164.667 A 4 4 0 1 0 303 -164.667 A 4 4 0 1 0 311 -164.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-160.0"> + thin_heap + </text> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_pop_mem_usage_test_local.pdf b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_pop_mem_usage_test_local.pdf Binary files differnew file mode 100644 index 00000000000..6a83d6d9ca1 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_pop_mem_usage_test_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_pop_mem_usage_test_local.png b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_pop_mem_usage_test_local.png Binary files differnew file mode 100644 index 00000000000..4debf447af5 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_pop_mem_usage_test_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_pop_mem_usage_test_local.svg b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_pop_mem_usage_test_local.svg new file mode 100644 index 00000000000..28519d76a28 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_pop_mem_usage_test_local.svg @@ -0,0 +1,835 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -526.35 535.725 478.35" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 334.4 -314.0224 L 334.4 -322.0224 L 342.4 -322.0224 L 342.4 -314.0224 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 372.8 -332.0448 L 372.8 -340.0448 L 380.8 -340.0448 L 380.8 -332.0448 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 411.2 -368.0896 L 411.2 -376.0896 L 419.2 -376.0896 L 419.2 -368.0896 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 449.6 -368.0896 L 449.6 -376.0896 L 457.6 -376.0896 L 457.6 -368.0896 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 488.0 -368.0896 L 488.0 -376.0896 L 496.0 -376.0896 L 496.0 -368.0896 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 526.4 -440.17920000000004 L 526.4 -448.17920000000004 L 534.4 -448.17920000000004 L 534.4 -440.17920000000004 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 564.8 -440.17920000000004 L 564.8 -448.17920000000004 L 572.8 -448.17920000000004 L 572.8 -440.17920000000004 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 603.2 -440.17920000000004 L 603.2 -448.17920000000004 L 611.2 -448.17920000000004 L 611.2 -440.17920000000004 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 641.6 -440.17920000000004 L 641.6 -448.17920000000004 L 649.6 -448.17920000000004 L 649.6 -440.17920000000004 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 680.0 -440.17920000000004 L 680.0 -448.17920000000004 L 688.0 -448.17920000000004 L 688.0 -440.17920000000004 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 338.4 -305.0688 M 342.4 -305.0688 L 342.4 -305.069 M 342.4 -305.069 A 4 4 0 1 0 334.4 -305.069 A 4 4 0 1 0 342.4 -305.069 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 376.8 -305.7728 M 380.8 -305.7728 L 380.8 -305.773 M 380.8 -305.773 A 4 4 0 1 0 372.8 -305.773 A 4 4 0 1 0 380.8 -305.773 Z"/> + </clipPath> + <clipPath id="clip17"> + <path d="M 415.2 -305.7728 M 419.2 -305.7728 L 419.2 -305.773 M 419.2 -305.773 A 4 4 0 1 0 411.2 -305.773 A 4 4 0 1 0 419.2 -305.773 Z"/> + </clipPath> + <clipPath id="clip18"> + <path d="M 453.6 -307.1808 M 457.6 -307.1808 L 457.6 -307.181 M 457.6 -307.181 A 4 4 0 1 0 449.6 -307.181 A 4 4 0 1 0 457.6 -307.181 Z"/> + </clipPath> + <clipPath id="clip19"> + <path d="M 492.0 -307.1808 M 496.0 -307.1808 L 496 -307.181 M 496 -307.181 A 4 4 0 1 0 488 -307.181 A 4 4 0 1 0 496 -307.181 Z"/> + </clipPath> + <clipPath id="clip20"> + <path d="M 530.4 -307.1808 M 534.4 -307.1808 L 534.4 -307.181 M 534.4 -307.181 A 4 4 0 1 0 526.4 -307.181 A 4 4 0 1 0 534.4 -307.181 Z"/> + </clipPath> + <clipPath id="clip21"> + <path d="M 568.8 -307.1808 M 572.8 -307.1808 L 572.8 -307.181 M 572.8 -307.181 A 4 4 0 1 0 564.8 -307.181 A 4 4 0 1 0 572.8 -307.181 Z"/> + </clipPath> + <clipPath id="clip22"> + <path d="M 607.2 -307.1808 M 611.2 -307.1808 L 611.2 -307.181 M 611.2 -307.181 A 4 4 0 1 0 603.2 -307.181 A 4 4 0 1 0 611.2 -307.181 Z"/> + </clipPath> + <clipPath id="clip23"> + <path d="M 645.6 -309.9968 M 649.6 -309.9968 L 649.6 -309.997 M 649.6 -309.997 A 4 4 0 1 0 641.6 -309.997 A 4 4 0 1 0 649.6 -309.997 Z"/> + </clipPath> + <clipPath id="clip24"> + <path d="M 684.0 -309.9968 M 688.0 -309.9968 L 688 -309.997 M 688 -309.997 A 4 4 0 1 0 680 -309.997 A 4 4 0 1 0 688 -309.997 Z"/> + </clipPath> + <clipPath id="clip25"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip26"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip27"> + <path d="M 338.4 -296.1968 L 332.15 -306.1968 L 344.65 -306.1968 Z"/> + </clipPath> + <clipPath id="clip28"> + <path d="M 376.8 -296.1968 L 370.55 -306.1968 L 383.05 -306.1968 Z"/> + </clipPath> + <clipPath id="clip29"> + <path d="M 415.2 -296.1968 L 408.95 -306.1968 L 421.45 -306.1968 Z"/> + </clipPath> + <clipPath id="clip30"> + <path d="M 453.6 -296.1968 L 447.35 -306.1968 L 459.85 -306.1968 Z"/> + </clipPath> + <clipPath id="clip31"> + <path d="M 492.0 -296.1968 L 485.75 -306.1968 L 498.25 -306.1968 Z"/> + </clipPath> + <clipPath id="clip32"> + <path d="M 530.4 -296.1968 L 524.15 -306.1968 L 536.65 -306.1968 Z"/> + </clipPath> + <clipPath id="clip33"> + <path d="M 568.8 -296.1968 L 562.55 -306.1968 L 575.05 -306.1968 Z"/> + </clipPath> + <clipPath id="clip34"> + <path d="M 607.2 -296.1968 L 600.95 -306.1968 L 613.45 -306.1968 Z"/> + </clipPath> + <clipPath id="clip35"> + <path d="M 645.6 -296.1968 L 639.35 -306.1968 L 651.85 -306.1968 Z"/> + </clipPath> + <clipPath id="clip36"> + <path d="M 684.0 -296.1968 L 677.75 -306.1968 L 690.25 -306.1968 Z"/> + </clipPath> + <clipPath id="clip37"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip38"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip39"> + <path d="M 338.4 -300.352 M 342.4 -300.352 L 342.4 -300.352 M 342.4 -300.352 A 4 4 0 1 0 334.4 -300.352 A 4 4 0 1 0 342.4 -300.352 Z"/> + </clipPath> + <clipPath id="clip40"> + <path d="M 376.8 -300.352 M 380.8 -300.352 L 380.8 -300.352 M 380.8 -300.352 A 4 4 0 1 0 372.8 -300.352 A 4 4 0 1 0 380.8 -300.352 Z"/> + </clipPath> + <clipPath id="clip41"> + <path d="M 415.2 -300.352 M 419.2 -300.352 L 419.2 -300.352 M 419.2 -300.352 A 4 4 0 1 0 411.2 -300.352 A 4 4 0 1 0 419.2 -300.352 Z"/> + </clipPath> + <clipPath id="clip42"> + <path d="M 453.6 -300.352 M 457.6 -300.352 L 457.6 -300.352 M 457.6 -300.352 A 4 4 0 1 0 449.6 -300.352 A 4 4 0 1 0 457.6 -300.352 Z"/> + </clipPath> + <clipPath id="clip43"> + <path d="M 492.0 -300.352 M 496.0 -300.352 L 496 -300.352 M 496 -300.352 A 4 4 0 1 0 488 -300.352 A 4 4 0 1 0 496 -300.352 Z"/> + </clipPath> + <clipPath id="clip44"> + <path d="M 530.4 -300.352 M 534.4 -300.352 L 534.4 -300.352 M 534.4 -300.352 A 4 4 0 1 0 526.4 -300.352 A 4 4 0 1 0 534.4 -300.352 Z"/> + </clipPath> + <clipPath id="clip45"> + <path d="M 568.8 -300.352 M 572.8 -300.352 L 572.8 -300.352 M 572.8 -300.352 A 4 4 0 1 0 564.8 -300.352 A 4 4 0 1 0 572.8 -300.352 Z"/> + </clipPath> + <clipPath id="clip46"> + <path d="M 607.2 -300.352 M 611.2 -300.352 L 611.2 -300.352 M 611.2 -300.352 A 4 4 0 1 0 603.2 -300.352 A 4 4 0 1 0 611.2 -300.352 Z"/> + </clipPath> + <clipPath id="clip47"> + <path d="M 645.6 -300.352 M 649.6 -300.352 L 649.6 -300.352 M 649.6 -300.352 A 4 4 0 1 0 641.6 -300.352 A 4 4 0 1 0 649.6 -300.352 Z"/> + </clipPath> + <clipPath id="clip48"> + <path d="M 684.0 -300.352 M 688.0 -300.352 L 688 -300.352 M 688 -300.352 A 4 4 0 1 0 680 -300.352 A 4 4 0 1 0 688 -300.352 Z"/> + </clipPath> + <clipPath id="clip49"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip50"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip51"> + <path d="M 332.15 -295.352 L 344.65 -295.352 L 338.4 -305.352 Z"/> + </clipPath> + <clipPath id="clip52"> + <path d="M 370.55 -295.352 L 383.05 -295.352 L 376.8 -305.352 Z"/> + </clipPath> + <clipPath id="clip53"> + <path d="M 408.95 -295.352 L 421.45 -295.352 L 415.2 -305.352 Z"/> + </clipPath> + <clipPath id="clip54"> + <path d="M 447.35 -295.352 L 459.85 -295.352 L 453.6 -305.352 Z"/> + </clipPath> + <clipPath id="clip55"> + <path d="M 485.75 -295.352 L 498.25 -295.352 L 492.0 -305.352 Z"/> + </clipPath> + <clipPath id="clip56"> + <path d="M 524.15 -295.352 L 536.65 -295.352 L 530.4 -305.352 Z"/> + </clipPath> + <clipPath id="clip57"> + <path d="M 562.55 -295.352 L 575.05 -295.352 L 568.8 -305.352 Z"/> + </clipPath> + <clipPath id="clip58"> + <path d="M 600.95 -295.352 L 613.45 -295.352 L 607.2 -305.352 Z"/> + </clipPath> + <clipPath id="clip59"> + <path d="M 639.35 -295.352 L 651.85 -295.352 L 645.6 -305.352 Z"/> + </clipPath> + <clipPath id="clip60"> + <path d="M 677.75 -295.352 L 690.25 -295.352 L 684.0 -305.352 Z"/> + </clipPath> + <clipPath id="clip61"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip62"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip63"> + <path d="M 331.25714285714287 -300.352 L 338.4 -307.49485714285714 L 345.54285714285714 -300.352 L 338.4 -293.20914285714287 Z"/> + </clipPath> + <clipPath id="clip64"> + <path d="M 369.65714285714284 -300.352 L 376.8 -307.49485714285714 L 383.9428571428571 -300.352 L 376.8 -293.20914285714287 Z"/> + </clipPath> + <clipPath id="clip65"> + <path d="M 408.0571428571429 -300.352 L 415.2 -307.49485714285714 L 422.34285714285716 -300.352 L 415.2 -293.20914285714287 Z"/> + </clipPath> + <clipPath id="clip66"> + <path d="M 446.45714285714286 -300.352 L 453.6 -307.49485714285714 L 460.74285714285713 -300.352 L 453.6 -293.20914285714287 Z"/> + </clipPath> + <clipPath id="clip67"> + <path d="M 484.8571428571429 -300.352 L 492.0 -307.49485714285714 L 499.1428571428571 -300.352 L 492.0 -293.20914285714287 Z"/> + </clipPath> + <clipPath id="clip68"> + <path d="M 523.2571428571429 -300.352 L 530.4 -307.49485714285714 L 537.5428571428572 -300.352 L 530.4 -293.20914285714287 Z"/> + </clipPath> + <clipPath id="clip69"> + <path d="M 561.6571428571428 -300.352 L 568.8 -307.49485714285714 L 575.9428571428572 -300.352 L 568.8 -293.20914285714287 Z"/> + </clipPath> + <clipPath id="clip70"> + <path d="M 600.0571428571428 -300.352 L 607.2 -307.49485714285714 L 614.3428571428572 -300.352 L 607.2 -293.20914285714287 Z"/> + </clipPath> + <clipPath id="clip71"> + <path d="M 638.4571428571428 -300.352 L 645.6 -307.49485714285714 L 652.7428571428572 -300.352 L 645.6 -293.20914285714287 Z"/> + </clipPath> + <clipPath id="clip72"> + <path d="M 676.8571428571429 -300.352 L 684.0 -307.49485714285714 L 691.1428571428571 -300.352 L 684.0 -293.20914285714287 Z"/> + </clipPath> + <clipPath id="clip73"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip74"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip75"> + <path d="M 290 -54 L 290 -182 L 324 -182 L 324 -54 Z"/> + </clipPath> + <clipPath id="clip76"> + <path d="M 303.0 -168.66666666666669 L 303.0 -176.66666666666669 L 311.0 -176.66666666666669 L 311.0 -168.66666666666669 Z"/> + </clipPath> + <clipPath id="clip77"> + <path d="M 307.0 -154.66666666666666 M 311.0 -154.66666666666666 L 311 -154.667 M 311 -154.667 A 4 4 0 1 0 303 -154.667 A 4 4 0 1 0 311 -154.667 Z"/> + </clipPath> + <clipPath id="clip78"> + <path d="M 307.0 -131.66666666666666 L 300.75 -141.66666666666666 L 313.25 -141.66666666666666 Z"/> + </clipPath> + <clipPath id="clip79"> + <path d="M 307.0 -118.66666666666666 M 311.0 -118.66666666666666 L 311 -118.667 M 311 -118.667 A 4 4 0 1 0 303 -118.667 A 4 4 0 1 0 311 -118.667 Z"/> + </clipPath> + <clipPath id="clip80"> + <path d="M 300.75 -95.66666666666666 L 313.25 -95.66666666666666 L 307.0 -105.66666666666666 Z"/> + </clipPath> + <clipPath id="clip81"> + <path d="M 299.85714285714283 -82.66666666666666 L 307.0 -89.8095238095238 L 314.14285714285717 -82.66666666666666 L 307.0 -75.52380952380952 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -388.0 L 780 -388.0" style="stroke:rgb(179,179,179);stroke-width:0.4;stroke-dasharray:1,1;"/> + <path d="M 300 -476.0 L 780 -476.0" style="stroke:rgb(179,179,179);stroke-width:0.4;stroke-dasharray:1,1;"/> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -328.83584 L 288 -328.83584"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-324.336)" x="288.0" y="-324.3363267321942"> + 3.28e+03 + </text> + <path d="M 300 -357.67168 L 288 -357.67168"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-353.172)" x="288.0" y="-353.1721667321942"> + 6.55e+03 + </text> + <path d="M 300 -386.50752 L 288 -386.50752"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-382.008)" x="288.0" y="-382.00800673219425"> + 9.83e+03 + </text> + <path d="M 300 -415.34336 L 288 -415.34336"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-410.844)" x="288.0" y="-410.8438467321942"> + 1.31e+04 + </text> + <path d="M 300 -444.17920000000004 L 288 -444.17920000000004"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-439.68)" x="288.0" y="-439.6796867321942"> + 1.64e+04 + </text> + <path d="M 300 -473.01504 L 288 -473.01504"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-468.516)" x="288.0" y="-468.5155267321942"> + 1.97e+04 + </text> + <path d="M 300 -501.85087999999996 L 288 -501.85087999999996"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-497.351)" x="288.0" y="-497.3513667321942"> + 2.29e+04 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Memory (bytes) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 338.4 -318.0224 L 376.8 -336.0448 L 415.2 -372.0896 L 453.6 -372.0896 L 492.0 -372.0896 L 530.4 -444.17920000000004 L 568.8 -444.17920000000004 L 607.2 -444.17920000000004 L 645.6 -444.17920000000004 L 684.0 -444.17920000000004" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip3);"> + <path d="M 334.4 -314.0224 L 334.4 -322.0224 L 342.4 -322.0224 L 342.4 -314.0224 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 334.4 -314.0224 L 334.4 -322.0224 L 342.4 -322.0224 L 342.4 -314.0224 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip4);"> + <path d="M 372.8 -332.0448 L 372.8 -340.0448 L 380.8 -340.0448 L 380.8 -332.0448 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 372.8 -332.0448 L 372.8 -340.0448 L 380.8 -340.0448 L 380.8 -332.0448 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 411.2 -368.0896 L 411.2 -376.0896 L 419.2 -376.0896 L 419.2 -368.0896 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 411.2 -368.0896 L 411.2 -376.0896 L 419.2 -376.0896 L 419.2 -368.0896 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 449.6 -368.0896 L 449.6 -376.0896 L 457.6 -376.0896 L 457.6 -368.0896 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 449.6 -368.0896 L 449.6 -376.0896 L 457.6 -376.0896 L 457.6 -368.0896 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 488.0 -368.0896 L 488.0 -376.0896 L 496.0 -376.0896 L 496.0 -368.0896 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 488.0 -368.0896 L 488.0 -376.0896 L 496.0 -376.0896 L 496.0 -368.0896 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 526.4 -440.17920000000004 L 526.4 -448.17920000000004 L 534.4 -448.17920000000004 L 534.4 -440.17920000000004 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 526.4 -440.17920000000004 L 526.4 -448.17920000000004 L 534.4 -448.17920000000004 L 534.4 -440.17920000000004 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 564.8 -440.17920000000004 L 564.8 -448.17920000000004 L 572.8 -448.17920000000004 L 572.8 -440.17920000000004 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 564.8 -440.17920000000004 L 564.8 -448.17920000000004 L 572.8 -448.17920000000004 L 572.8 -440.17920000000004 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip10);"> + <path d="M 603.2 -440.17920000000004 L 603.2 -448.17920000000004 L 611.2 -448.17920000000004 L 611.2 -440.17920000000004 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 603.2 -440.17920000000004 L 603.2 -448.17920000000004 L 611.2 -448.17920000000004 L 611.2 -440.17920000000004 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip11);"> + <path d="M 641.6 -440.17920000000004 L 641.6 -448.17920000000004 L 649.6 -448.17920000000004 L 649.6 -440.17920000000004 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 641.6 -440.17920000000004 L 641.6 -448.17920000000004 L 649.6 -448.17920000000004 L 649.6 -440.17920000000004 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 680.0 -440.17920000000004 L 680.0 -448.17920000000004 L 688.0 -448.17920000000004 L 688.0 -440.17920000000004 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 680.0 -440.17920000000004 L 680.0 -448.17920000000004 L 688.0 -448.17920000000004 L 688.0 -440.17920000000004 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip13);"> + <path d="M 338.4 -305.0688 L 376.8 -305.7728 L 415.2 -305.7728 L 453.6 -307.1808 L 492.0 -307.1808 L 530.4 -307.1808 L 568.8 -307.1808 L 607.2 -307.1808 L 645.6 -309.9968 L 684.0 -309.9968" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip14);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip15);"> + <path d="M 330.4 -297.0688 L 330.4 -313.0688 L 346.4 -313.0688 L 346.4 -297.0688 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -305.0688 M 342.4 -305.0688 L 342.4 -305.069 M 342.4 -305.069 A 4 4 0 1 0 334.4 -305.069 A 4 4 0 1 0 342.4 -305.069 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip16);"> + <path d="M 368.8 -297.7728 L 368.8 -313.7728 L 384.8 -313.7728 L 384.8 -297.7728 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -305.7728 M 380.8 -305.7728 L 380.8 -305.773 M 380.8 -305.773 A 4 4 0 1 0 372.8 -305.773 A 4 4 0 1 0 380.8 -305.773 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip17);"> + <path d="M 407.2 -297.7728 L 407.2 -313.7728 L 423.2 -313.7728 L 423.2 -297.7728 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -305.7728 M 419.2 -305.7728 L 419.2 -305.773 M 419.2 -305.773 A 4 4 0 1 0 411.2 -305.773 A 4 4 0 1 0 419.2 -305.773 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip18);"> + <path d="M 445.6 -299.1808 L 445.6 -315.1808 L 461.6 -315.1808 L 461.6 -299.1808 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -307.1808 M 457.6 -307.1808 L 457.6 -307.181 M 457.6 -307.181 A 4 4 0 1 0 449.6 -307.181 A 4 4 0 1 0 457.6 -307.181 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip19);"> + <path d="M 484.0 -299.1808 L 484.0 -315.1808 L 500.0 -315.1808 L 500.0 -299.1808 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -307.1808 M 496.0 -307.1808 L 496 -307.181 M 496 -307.181 A 4 4 0 1 0 488 -307.181 A 4 4 0 1 0 496 -307.181 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip20);"> + <path d="M 522.4 -299.1808 L 522.4 -315.1808 L 538.4 -315.1808 L 538.4 -299.1808 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -307.1808 M 534.4 -307.1808 L 534.4 -307.181 M 534.4 -307.181 A 4 4 0 1 0 526.4 -307.181 A 4 4 0 1 0 534.4 -307.181 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip21);"> + <path d="M 560.8 -299.1808 L 560.8 -315.1808 L 576.8 -315.1808 L 576.8 -299.1808 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -307.1808 M 572.8 -307.1808 L 572.8 -307.181 M 572.8 -307.181 A 4 4 0 1 0 564.8 -307.181 A 4 4 0 1 0 572.8 -307.181 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip22);"> + <path d="M 599.2 -299.1808 L 599.2 -315.1808 L 615.2 -315.1808 L 615.2 -299.1808 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -307.1808 M 611.2 -307.1808 L 611.2 -307.181 M 611.2 -307.181 A 4 4 0 1 0 603.2 -307.181 A 4 4 0 1 0 611.2 -307.181 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip23);"> + <path d="M 637.6 -301.9968 L 637.6 -317.9968 L 653.6 -317.9968 L 653.6 -301.9968 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -309.9968 M 649.6 -309.9968 L 649.6 -309.997 M 649.6 -309.997 A 4 4 0 1 0 641.6 -309.997 A 4 4 0 1 0 649.6 -309.997 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip24);"> + <path d="M 676.0 -301.9968 L 676.0 -317.9968 L 692.0 -317.9968 L 692.0 -301.9968 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -309.9968 M 688.0 -309.9968 L 688 -309.997 M 688 -309.997 A 4 4 0 1 0 680 -309.997 A 4 4 0 1 0 688 -309.997 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip25);"> + <path d="M 338.4 -301.1968 L 376.8 -301.1968 L 415.2 -301.1968 L 453.6 -301.1968 L 492.0 -301.1968 L 530.4 -301.1968 L 568.8 -301.1968 L 607.2 -301.1968 L 645.6 -301.1968 L 684.0 -301.1968" style="stroke:rgb(205,0,0);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip26);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip27);"> + <path d="M 332.15 -296.1968 L 332.15 -306.1968 L 344.65 -306.1968 L 344.65 -296.1968 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -296.1968 L 332.15 -306.1968 L 344.65 -306.1968 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip28);"> + <path d="M 370.55 -296.1968 L 370.55 -306.1968 L 383.05 -306.1968 L 383.05 -296.1968 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -296.1968 L 370.55 -306.1968 L 383.05 -306.1968 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip29);"> + <path d="M 408.95 -296.1968 L 408.95 -306.1968 L 421.45 -306.1968 L 421.45 -296.1968 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -296.1968 L 408.95 -306.1968 L 421.45 -306.1968 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip30);"> + <path d="M 447.35 -296.1968 L 447.35 -306.1968 L 459.85 -306.1968 L 459.85 -296.1968 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -296.1968 L 447.35 -306.1968 L 459.85 -306.1968 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip31);"> + <path d="M 485.75 -296.1968 L 485.75 -306.1968 L 498.25 -306.1968 L 498.25 -296.1968 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -296.1968 L 485.75 -306.1968 L 498.25 -306.1968 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip32);"> + <path d="M 524.15 -296.1968 L 524.15 -306.1968 L 536.65 -306.1968 L 536.65 -296.1968 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -296.1968 L 524.15 -306.1968 L 536.65 -306.1968 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip33);"> + <path d="M 562.55 -296.1968 L 562.55 -306.1968 L 575.05 -306.1968 L 575.05 -296.1968 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -296.1968 L 562.55 -306.1968 L 575.05 -306.1968 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip34);"> + <path d="M 600.95 -296.1968 L 600.95 -306.1968 L 613.45 -306.1968 L 613.45 -296.1968 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -296.1968 L 600.95 -306.1968 L 613.45 -306.1968 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip35);"> + <path d="M 639.35 -296.1968 L 639.35 -306.1968 L 651.85 -306.1968 L 651.85 -296.1968 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -296.1968 L 639.35 -306.1968 L 651.85 -306.1968 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip36);"> + <path d="M 677.75 -296.1968 L 677.75 -306.1968 L 690.25 -306.1968 L 690.25 -296.1968 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -296.1968 L 677.75 -306.1968 L 690.25 -306.1968 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip37);"> + <path d="M 338.4 -300.352 L 376.8 -300.352 L 415.2 -300.352 L 453.6 -300.352 L 492.0 -300.352 L 530.4 -300.352 L 568.8 -300.352 L 607.2 -300.352 L 645.6 -300.352 L 684.0 -300.352" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip38);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip39);"> + <path d="M 330.4 -292.352 L 330.4 -308.352 L 346.4 -308.352 L 346.4 -292.352 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -300.352 M 342.4 -300.352 L 342.4 -300.352 M 342.4 -300.352 A 4 4 0 1 0 334.4 -300.352 A 4 4 0 1 0 342.4 -300.352 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip40);"> + <path d="M 368.8 -292.352 L 368.8 -308.352 L 384.8 -308.352 L 384.8 -292.352 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -300.352 M 380.8 -300.352 L 380.8 -300.352 M 380.8 -300.352 A 4 4 0 1 0 372.8 -300.352 A 4 4 0 1 0 380.8 -300.352 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip41);"> + <path d="M 407.2 -292.352 L 407.2 -308.352 L 423.2 -308.352 L 423.2 -292.352 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -300.352 M 419.2 -300.352 L 419.2 -300.352 M 419.2 -300.352 A 4 4 0 1 0 411.2 -300.352 A 4 4 0 1 0 419.2 -300.352 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip42);"> + <path d="M 445.6 -292.352 L 445.6 -308.352 L 461.6 -308.352 L 461.6 -292.352 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -300.352 M 457.6 -300.352 L 457.6 -300.352 M 457.6 -300.352 A 4 4 0 1 0 449.6 -300.352 A 4 4 0 1 0 457.6 -300.352 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip43);"> + <path d="M 484.0 -292.352 L 484.0 -308.352 L 500.0 -308.352 L 500.0 -292.352 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -300.352 M 496.0 -300.352 L 496 -300.352 M 496 -300.352 A 4 4 0 1 0 488 -300.352 A 4 4 0 1 0 496 -300.352 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip44);"> + <path d="M 522.4 -292.352 L 522.4 -308.352 L 538.4 -308.352 L 538.4 -292.352 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -300.352 M 534.4 -300.352 L 534.4 -300.352 M 534.4 -300.352 A 4 4 0 1 0 526.4 -300.352 A 4 4 0 1 0 534.4 -300.352 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip45);"> + <path d="M 560.8 -292.352 L 560.8 -308.352 L 576.8 -308.352 L 576.8 -292.352 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -300.352 M 572.8 -300.352 L 572.8 -300.352 M 572.8 -300.352 A 4 4 0 1 0 564.8 -300.352 A 4 4 0 1 0 572.8 -300.352 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip46);"> + <path d="M 599.2 -292.352 L 599.2 -308.352 L 615.2 -308.352 L 615.2 -292.352 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -300.352 M 611.2 -300.352 L 611.2 -300.352 M 611.2 -300.352 A 4 4 0 1 0 603.2 -300.352 A 4 4 0 1 0 611.2 -300.352 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip47);"> + <path d="M 637.6 -292.352 L 637.6 -308.352 L 653.6 -308.352 L 653.6 -292.352 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -300.352 M 649.6 -300.352 L 649.6 -300.352 M 649.6 -300.352 A 4 4 0 1 0 641.6 -300.352 A 4 4 0 1 0 649.6 -300.352 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip48);"> + <path d="M 676.0 -292.352 L 676.0 -308.352 L 692.0 -308.352 L 692.0 -292.352 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -300.352 M 688.0 -300.352 L 688 -300.352 M 688 -300.352 A 4 4 0 1 0 680 -300.352 A 4 4 0 1 0 688 -300.352 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip49);"> + <path d="M 338.4 -300.352 L 376.8 -300.352 L 415.2 -300.352 L 453.6 -300.352 L 492.0 -300.352 L 530.4 -300.352 L 568.8 -300.352 L 607.2 -300.352 L 645.6 -300.352 L 684.0 -300.352" style="stroke:rgb(147,147,147);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip50);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip51);"> + <path d="M 332.15 -295.352 L 332.15 -305.352 L 344.65 -305.352 L 344.65 -295.352 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 332.15 -295.352 L 344.65 -295.352 L 338.4 -305.352 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip52);"> + <path d="M 370.55 -295.352 L 370.55 -305.352 L 383.05 -305.352 L 383.05 -295.352 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 370.55 -295.352 L 383.05 -295.352 L 376.8 -305.352 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip53);"> + <path d="M 408.95 -295.352 L 408.95 -305.352 L 421.45 -305.352 L 421.45 -295.352 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 408.95 -295.352 L 421.45 -295.352 L 415.2 -305.352 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip54);"> + <path d="M 447.35 -295.352 L 447.35 -305.352 L 459.85 -305.352 L 459.85 -295.352 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 447.35 -295.352 L 459.85 -295.352 L 453.6 -305.352 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip55);"> + <path d="M 485.75 -295.352 L 485.75 -305.352 L 498.25 -305.352 L 498.25 -295.352 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 485.75 -295.352 L 498.25 -295.352 L 492.0 -305.352 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip56);"> + <path d="M 524.15 -295.352 L 524.15 -305.352 L 536.65 -305.352 L 536.65 -295.352 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 524.15 -295.352 L 536.65 -295.352 L 530.4 -305.352 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip57);"> + <path d="M 562.55 -295.352 L 562.55 -305.352 L 575.05 -305.352 L 575.05 -295.352 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 562.55 -295.352 L 575.05 -295.352 L 568.8 -305.352 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip58);"> + <path d="M 600.95 -295.352 L 600.95 -305.352 L 613.45 -305.352 L 613.45 -295.352 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.95 -295.352 L 613.45 -295.352 L 607.2 -305.352 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip59);"> + <path d="M 639.35 -295.352 L 639.35 -305.352 L 651.85 -305.352 L 651.85 -295.352 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 639.35 -295.352 L 651.85 -295.352 L 645.6 -305.352 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip60);"> + <path d="M 677.75 -295.352 L 677.75 -305.352 L 690.25 -305.352 L 690.25 -295.352 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 677.75 -295.352 L 690.25 -295.352 L 684.0 -305.352 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip61);"> + <path d="M 338.4 -300.352 L 376.8 -300.352 L 415.2 -300.352 L 453.6 -300.352 L 492.0 -300.352 L 530.4 -300.352 L 568.8 -300.352 L 607.2 -300.352 L 645.6 -300.352 L 684.0 -300.352" style="stroke:rgb(126,126,126);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip62);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip63);"> + <path d="M 331.25714285714287 -293.20914285714287 L 331.25714285714287 -307.49485714285714 L 345.54285714285714 -307.49485714285714 L 345.54285714285714 -293.20914285714287 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 331.25714285714287 -300.352 L 338.4 -307.49485714285714 L 345.54285714285714 -300.352 L 338.4 -293.20914285714287 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip64);"> + <path d="M 369.65714285714284 -293.20914285714287 L 369.65714285714284 -307.49485714285714 L 383.9428571428571 -307.49485714285714 L 383.9428571428571 -293.20914285714287 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 369.65714285714284 -300.352 L 376.8 -307.49485714285714 L 383.9428571428571 -300.352 L 376.8 -293.20914285714287 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip65);"> + <path d="M 408.0571428571429 -293.20914285714287 L 408.0571428571429 -307.49485714285714 L 422.34285714285716 -307.49485714285714 L 422.34285714285716 -293.20914285714287 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 408.0571428571429 -300.352 L 415.2 -307.49485714285714 L 422.34285714285716 -300.352 L 415.2 -293.20914285714287 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip66);"> + <path d="M 446.45714285714286 -293.20914285714287 L 446.45714285714286 -307.49485714285714 L 460.74285714285713 -307.49485714285714 L 460.74285714285713 -293.20914285714287 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 446.45714285714286 -300.352 L 453.6 -307.49485714285714 L 460.74285714285713 -300.352 L 453.6 -293.20914285714287 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip67);"> + <path d="M 484.8571428571429 -293.20914285714287 L 484.8571428571429 -307.49485714285714 L 499.1428571428571 -307.49485714285714 L 499.1428571428571 -293.20914285714287 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 484.8571428571429 -300.352 L 492.0 -307.49485714285714 L 499.1428571428571 -300.352 L 492.0 -293.20914285714287 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip68);"> + <path d="M 523.2571428571429 -293.20914285714287 L 523.2571428571429 -307.49485714285714 L 537.5428571428572 -307.49485714285714 L 537.5428571428572 -293.20914285714287 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 523.2571428571429 -300.352 L 530.4 -307.49485714285714 L 537.5428571428572 -300.352 L 530.4 -293.20914285714287 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip69);"> + <path d="M 561.6571428571428 -293.20914285714287 L 561.6571428571428 -307.49485714285714 L 575.9428571428572 -307.49485714285714 L 575.9428571428572 -293.20914285714287 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 561.6571428571428 -300.352 L 568.8 -307.49485714285714 L 575.9428571428572 -300.352 L 568.8 -293.20914285714287 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip70);"> + <path d="M 600.0571428571428 -293.20914285714287 L 600.0571428571428 -307.49485714285714 L 614.3428571428572 -307.49485714285714 L 614.3428571428572 -293.20914285714287 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.0571428571428 -300.352 L 607.2 -307.49485714285714 L 614.3428571428572 -300.352 L 607.2 -293.20914285714287 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip71);"> + <path d="M 638.4571428571428 -293.20914285714287 L 638.4571428571428 -307.49485714285714 L 652.7428571428572 -307.49485714285714 L 652.7428571428572 -293.20914285714287 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 638.4571428571428 -300.352 L 645.6 -307.49485714285714 L 652.7428571428572 -300.352 L 645.6 -293.20914285714287 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip72);"> + <path d="M 676.8571428571429 -293.20914285714287 L 676.8571428571429 -307.49485714285714 L 691.1428571428571 -307.49485714285714 L 691.1428571428571 -293.20914285714287 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 676.8571428571429 -300.352 L 684.0 -307.49485714285714 L 691.1428571428571 -300.352 L 684.0 -293.20914285714287 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip73);"> + <path d="M 338.4 -300.2816 L 376.8 -300.2816 L 415.2 -300.2816 L 453.6 -300.2816 L 492.0 -300.2816 L 530.4 -300.2816 L 568.8 -300.2816 L 607.2 -300.2816 L 645.6 -300.2816 L 684.0 -300.2816" style="stroke:rgb(137,42,226);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip74);"> + <path d="M 331.25714285714287 -300.2816 L 345.54285714285714 -300.2816" style="stroke-width:1;"/> + <path d="M 338.4 -293.13874285714286 L 338.4 -307.42445714285714" style="stroke-width:1;"/> + <path d="M 369.65714285714284 -300.2816 L 383.9428571428571 -300.2816" style="stroke-width:1;"/> + <path d="M 376.8 -293.13874285714286 L 376.8 -307.42445714285714" style="stroke-width:1;"/> + <path d="M 408.0571428571429 -300.2816 L 422.34285714285716 -300.2816" style="stroke-width:1;"/> + <path d="M 415.2 -293.13874285714286 L 415.2 -307.42445714285714" style="stroke-width:1;"/> + <path d="M 446.45714285714286 -300.2816 L 460.74285714285713 -300.2816" style="stroke-width:1;"/> + <path d="M 453.6 -293.13874285714286 L 453.6 -307.42445714285714" style="stroke-width:1;"/> + <path d="M 484.8571428571429 -300.2816 L 499.1428571428571 -300.2816" style="stroke-width:1;"/> + <path d="M 492.0 -293.13874285714286 L 492.0 -307.42445714285714" style="stroke-width:1;"/> + <path d="M 523.2571428571429 -300.2816 L 537.5428571428572 -300.2816" style="stroke-width:1;"/> + <path d="M 530.4 -293.13874285714286 L 530.4 -307.42445714285714" style="stroke-width:1;"/> + <path d="M 561.6571428571428 -300.2816 L 575.9428571428572 -300.2816" style="stroke-width:1;"/> + <path d="M 568.8 -293.13874285714286 L 568.8 -307.42445714285714" style="stroke-width:1;"/> + <path d="M 600.0571428571428 -300.2816 L 614.3428571428572 -300.2816" style="stroke-width:1;"/> + <path d="M 607.2 -293.13874285714286 L 607.2 -307.42445714285714" style="stroke-width:1;"/> + <path d="M 638.4571428571428 -300.2816 L 652.7428571428572 -300.2816" style="stroke-width:1;"/> + <path d="M 645.6 -293.13874285714286 L 645.6 -307.42445714285714" style="stroke-width:1;"/> + <path d="M 676.8571428571429 -300.2816 L 691.1428571428571 -300.2816" style="stroke-width:1;"/> + <path d="M 684.0 -293.13874285714286 L 684.0 -307.42445714285714" style="stroke-width:1;"/> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip75);"> + <path d="M 290 -54 L 290 -182 L 324 -182 L 324 -54 Z" style="stroke:none;"/> + </g> + <path d="M 300 -172.66666666666669 L 314 -172.66666666666669" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip76);"> + <path d="M 303.0 -168.66666666666669 L 303.0 -176.66666666666669 L 311.0 -176.66666666666669 L 311.0 -168.66666666666669 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 303.0 -168.66666666666669 L 303.0 -176.66666666666669 L 311.0 -176.66666666666669 L 311.0 -168.66666666666669 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-168.0"> + n_pq_vector + </text> + <path d="M 300 -154.66666666666666 L 314 -154.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip77);"> + <path d="M 299.0 -146.66666666666666 L 299.0 -162.66666666666666 L 315.0 -162.66666666666666 L 315.0 -146.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -154.66666666666666 M 311.0 -154.66666666666666 L 311 -154.667 M 311 -154.667 A 4 4 0 1 0 303 -154.667 A 4 4 0 1 0 311 -154.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-150.0"> + n_pq_deque + </text> + <path d="M 300 -136.66666666666666 L 314 -136.66666666666666" style="stroke:rgb(205,0,0);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip78);"> + <path d="M 300.75 -131.66666666666666 L 300.75 -141.66666666666666 L 313.25 -141.66666666666666 L 313.25 -131.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -131.66666666666666 L 300.75 -141.66666666666666 L 313.25 -141.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-132.0"> + binary_heap + </text> + <path d="M 300 -118.66666666666666 L 314 -118.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip79);"> + <path d="M 299.0 -110.66666666666666 L 299.0 -126.66666666666666 L 315.0 -126.66666666666666 L 315.0 -110.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -118.66666666666666 M 311.0 -118.66666666666666 L 311 -118.667 M 311 -118.667 A 4 4 0 1 0 303 -118.667 A 4 4 0 1 0 311 -118.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-114.0"> + thin_heap + </text> + <path d="M 300 -100.66666666666666 L 314 -100.66666666666666" style="stroke:rgb(147,147,147);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip80);"> + <path d="M 300.75 -95.66666666666666 L 300.75 -105.66666666666666 L 313.25 -105.66666666666666 L 313.25 -95.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 300.75 -95.66666666666666 L 313.25 -95.66666666666666 L 307.0 -105.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-96.0"> + binomial_heap + </text> + <path d="M 300 -82.66666666666666 L 314 -82.66666666666666" style="stroke:rgb(126,126,126);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip81);"> + <path d="M 299.85714285714283 -75.52380952380952 L 299.85714285714283 -89.8095238095238 L 314.14285714285717 -89.8095238095238 L 314.14285714285717 -75.52380952380952 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 299.85714285714283 -82.66666666666666 L 307.0 -89.8095238095238 L 314.14285714285717 -82.66666666666666 L 307.0 -75.52380952380952 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-78.0"> + rc_binomial_heap + </text> + <path d="M 300 -64.66666666666666 L 314 -64.66666666666666" style="stroke:rgb(137,42,226);stroke-width:2;"/> + <path d="M 299.85714285714283 -64.66666666666666 L 314.14285714285717 -64.66666666666666" style="stroke-width:1;"/> + <path d="M 307.0 -57.52380952380952 L 307.0 -71.8095238095238" style="stroke-width:1;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-60.0"> + pairing_heap + </text> + </g> + </g> + </g> + </g> + </g> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_push_pop_timing_test_local.pdf b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_push_pop_timing_test_local.pdf Binary files differnew file mode 100644 index 00000000000..16e0325a0c4 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_push_pop_timing_test_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_push_pop_timing_test_local.png b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_push_pop_timing_test_local.png Binary files differnew file mode 100644 index 00000000000..78205310809 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_push_pop_timing_test_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_push_pop_timing_test_local.svg b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_push_pop_timing_test_local.svg new file mode 100644 index 00000000000..81ebb401aec --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_push_pop_timing_test_local.svg @@ -0,0 +1,825 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 496.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 338.4 -319.02358828362946 L 332.15 -329.02358828362946 L 344.65 -329.02358828362946 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 376.8 -338.8708644403897 L 370.55 -348.8708644403897 L 383.05 -348.8708644403897 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 415.2 -361.666619745818 L 408.95 -371.666619745818 L 421.45 -371.666619745818 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 453.6 -380.4837920726053 L 447.35 -390.4837920726053 L 459.85 -390.4837920726053 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 492.0 -398.22599602697716 L 485.75 -408.22599602697716 L 498.25 -408.22599602697716 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 530.4 -419.73116993030493 L 524.15 -429.73116993030493 L 536.65 -429.73116993030493 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 568.8 -446.15208865225145 L 562.55 -456.15208865225145 L 575.05 -456.15208865225145 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 607.2 -465.9679712422119 L 600.95 -475.9679712422119 L 613.45 -475.9679712422119 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 645.6 -487.8315969686786 L 639.35 -497.8315969686786 L 651.85 -497.8315969686786 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 684.0 -515.0 L 677.75 -525.0 L 690.25 -525.0 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 331.25714285714287 -301.34638143482783 L 338.4 -308.48923857768494 L 345.54285714285714 -301.34638143482783 L 338.4 -294.20352429197067 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 369.65714285714284 -301.53403057714405 L 376.8 -308.67688772000116 L 383.9428571428571 -301.53403057714405 L 376.8 -294.3911734342869 Z"/> + </clipPath> + <clipPath id="clip17"> + <path d="M 408.0571428571429 -301.65685258466425 L 415.2 -308.7997097275214 L 422.34285714285716 -301.65685258466425 L 415.2 -294.51399544180714 Z"/> + </clipPath> + <clipPath id="clip18"> + <path d="M 446.45714285714286 -301.709954551293 L 453.6 -308.85281169415015 L 460.74285714285713 -301.709954551293 L 453.6 -294.56709740843587 Z"/> + </clipPath> + <clipPath id="clip19"> + <path d="M 484.8571428571429 -301.8004500882405 L 492.0 -308.94330723109766 L 499.1428571428571 -301.8004500882405 L 492.0 -294.6575929453834 Z"/> + </clipPath> + <clipPath id="clip20"> + <path d="M 523.2571428571429 -301.8685017410567 L 530.4 -309.0113588839139 L 537.5428571428572 -301.8685017410567 L 530.4 -294.7256445981996 Z"/> + </clipPath> + <clipPath id="clip21"> + <path d="M 561.6571428571428 -301.8433172101567 L 568.8 -308.9861743530139 L 575.9428571428572 -301.8433172101567 L 568.8 -294.70046006729956 Z"/> + </clipPath> + <clipPath id="clip22"> + <path d="M 600.0571428571428 -301.85208108626455 L 607.2 -308.9949382291217 L 614.3428571428572 -301.85208108626455 L 607.2 -294.70922394340744 Z"/> + </clipPath> + <clipPath id="clip23"> + <path d="M 638.4571428571428 -301.8905817540069 L 645.6 -309.033438896864 L 652.7428571428572 -301.8905817540069 L 645.6 -294.74772461114975 Z"/> + </clipPath> + <clipPath id="clip24"> + <path d="M 676.8571428571429 -301.9354850061496 L 684.0 -309.0783421490067 L 691.1428571428571 -301.9354850061496 L 684.0 -294.7926278632924 Z"/> + </clipPath> + <clipPath id="clip25"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip26"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip27"> + <path d="M 338.4 -301.2731620370452 M 342.4 -301.2731620370452 L 342.4 -301.273 M 342.4 -301.273 A 4 4 0 1 0 334.4 -301.273 A 4 4 0 1 0 342.4 -301.273 Z"/> + </clipPath> + <clipPath id="clip28"> + <path d="M 376.8 -301.4949221671098 M 380.8 -301.4949221671098 L 380.8 -301.495 M 380.8 -301.495 A 4 4 0 1 0 372.8 -301.495 A 4 4 0 1 0 380.8 -301.495 Z"/> + </clipPath> + <clipPath id="clip29"> + <path d="M 415.2 -301.63795450906423 M 419.2 -301.63795450906423 L 419.2 -301.638 M 419.2 -301.638 A 4 4 0 1 0 411.2 -301.638 A 4 4 0 1 0 419.2 -301.638 Z"/> + </clipPath> + <clipPath id="clip30"> + <path d="M 453.6 -301.66493517004994 M 457.6 -301.66493517004994 L 457.6 -301.665 M 457.6 -301.665 A 4 4 0 1 0 449.6 -301.665 A 4 4 0 1 0 457.6 -301.665 Z"/> + </clipPath> + <clipPath id="clip31"> + <path d="M 492.0 -301.7576294179645 M 496.0 -301.7576294179645 L 496 -301.758 M 496 -301.758 A 4 4 0 1 0 488 -301.758 A 4 4 0 1 0 496 -301.758 Z"/> + </clipPath> + <clipPath id="clip32"> + <path d="M 530.4 -301.8388655946426 M 534.4 -301.8388655946426 L 534.4 -301.839 M 534.4 -301.839 A 4 4 0 1 0 526.4 -301.839 A 4 4 0 1 0 534.4 -301.839 Z"/> + </clipPath> + <clipPath id="clip33"> + <path d="M 568.8 -301.83923333679377 M 572.8 -301.83923333679377 L 572.8 -301.839 M 572.8 -301.839 A 4 4 0 1 0 564.8 -301.839 A 4 4 0 1 0 572.8 -301.839 Z"/> + </clipPath> + <clipPath id="clip34"> + <path d="M 607.2 -301.8618359306956 M 611.2 -301.8618359306956 L 611.2 -301.862 M 611.2 -301.862 A 4 4 0 1 0 603.2 -301.862 A 4 4 0 1 0 611.2 -301.862 Z"/> + </clipPath> + <clipPath id="clip35"> + <path d="M 645.6 -301.9368204908038 M 649.6 -301.9368204908038 L 649.6 -301.937 M 649.6 -301.937 A 4 4 0 1 0 641.6 -301.937 A 4 4 0 1 0 649.6 -301.937 Z"/> + </clipPath> + <clipPath id="clip36"> + <path d="M 684.0 -302.0126024707346 M 688.0 -302.0126024707346 L 688 -302.013 M 688 -302.013 A 4 4 0 1 0 680 -302.013 A 4 4 0 1 0 688 -302.013 Z"/> + </clipPath> + <clipPath id="clip37"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip38"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip39"> + <path d="M 332.15 -296.21855426308167 L 344.65 -296.21855426308167 L 338.4 -306.21855426308167 Z"/> + </clipPath> + <clipPath id="clip40"> + <path d="M 370.55 -296.3938666239687 L 383.05 -296.3938666239687 L 376.8 -306.3938666239687 Z"/> + </clipPath> + <clipPath id="clip41"> + <path d="M 408.95 -296.5214034729639 L 421.45 -296.5214034729639 L 415.2 -306.5214034729639 Z"/> + </clipPath> + <clipPath id="clip42"> + <path d="M 447.35 -296.5967751300734 L 459.85 -296.5967751300734 L 453.6 -306.5967751300734 Z"/> + </clipPath> + <clipPath id="clip43"> + <path d="M 485.75 -296.64746548238446 L 498.25 -296.64746548238446 L 492.0 -306.64746548238446 Z"/> + </clipPath> + <clipPath id="clip44"> + <path d="M 524.15 -296.6999480938112 L 536.65 -296.6999480938112 L 530.4 -306.6999480938112 Z"/> + </clipPath> + <clipPath id="clip45"> + <path d="M 562.55 -296.70047067476287 L 575.05 -296.70047067476287 L 568.8 -306.70047067476287 Z"/> + </clipPath> + <clipPath id="clip46"> + <path d="M 600.95 -296.737020373619 L 613.45 -296.737020373619 L 607.2 -306.737020373619 Z"/> + </clipPath> + <clipPath id="clip47"> + <path d="M 639.35 -296.7630836147118 L 651.85 -296.7630836147118 L 645.6 -306.7630836147118 Z"/> + </clipPath> + <clipPath id="clip48"> + <path d="M 677.75 -296.8078707377541 L 690.25 -296.8078707377541 L 684.0 -306.8078707377541 Z"/> + </clipPath> + <clipPath id="clip49"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip50"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip51"> + <path d="M 338.4 -301.145958091471 M 342.4 -301.145958091471 L 342.4 -301.146 M 342.4 -301.146 A 4 4 0 1 0 334.4 -301.146 A 4 4 0 1 0 342.4 -301.146 Z"/> + </clipPath> + <clipPath id="clip52"> + <path d="M 376.8 -301.301416247165 M 380.8 -301.301416247165 L 380.8 -301.301 M 380.8 -301.301 A 4 4 0 1 0 372.8 -301.301 A 4 4 0 1 0 380.8 -301.301 Z"/> + </clipPath> + <clipPath id="clip53"> + <path d="M 415.2 -301.37377628960485 M 419.2 -301.37377628960485 L 419.2 -301.374 M 419.2 -301.374 A 4 4 0 1 0 411.2 -301.374 A 4 4 0 1 0 419.2 -301.374 Z"/> + </clipPath> + <clipPath id="clip54"> + <path d="M 453.6 -301.4568163383087 M 457.6 -301.4568163383087 L 457.6 -301.457 M 457.6 -301.457 A 4 4 0 1 0 449.6 -301.457 A 4 4 0 1 0 457.6 -301.457 Z"/> + </clipPath> + <clipPath id="clip55"> + <path d="M 492.0 -301.46844860319567 M 496.0 -301.46844860319567 L 496 -301.468 M 496 -301.468 A 4 4 0 1 0 488 -301.468 A 4 4 0 1 0 496 -301.468 Z"/> + </clipPath> + <clipPath id="clip56"> + <path d="M 530.4 -301.521113150213 M 534.4 -301.521113150213 L 534.4 -301.521 M 534.4 -301.521 A 4 4 0 1 0 526.4 -301.521 A 4 4 0 1 0 534.4 -301.521 Z"/> + </clipPath> + <clipPath id="clip57"> + <path d="M 568.8 -301.56170027079196 M 572.8 -301.56170027079196 L 572.8 -301.562 M 572.8 -301.562 A 4 4 0 1 0 564.8 -301.562 A 4 4 0 1 0 572.8 -301.562 Z"/> + </clipPath> + <clipPath id="clip58"> + <path d="M 607.2 -301.61290546211467 M 611.2 -301.61290546211467 L 611.2 -301.613 M 611.2 -301.613 A 4 4 0 1 0 603.2 -301.613 A 4 4 0 1 0 611.2 -301.613 Z"/> + </clipPath> + <clipPath id="clip59"> + <path d="M 645.6 -301.609247395453 M 649.6 -301.609247395453 L 649.6 -301.609 M 649.6 -301.609 A 4 4 0 1 0 641.6 -301.609 A 4 4 0 1 0 649.6 -301.609 Z"/> + </clipPath> + <clipPath id="clip60"> + <path d="M 684.0 -301.6830319548574 M 688.0 -301.6830319548574 L 688 -301.683 M 688 -301.683 A 4 4 0 1 0 680 -301.683 A 4 4 0 1 0 688 -301.683 Z"/> + </clipPath> + <clipPath id="clip61"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip62"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip63"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip64"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip65"> + <path d="M 334.4 -296.99423155086896 L 334.4 -304.99423155086896 L 342.4 -304.99423155086896 L 342.4 -296.99423155086896 Z"/> + </clipPath> + <clipPath id="clip66"> + <path d="M 372.8 -297.0555283610137 L 372.8 -305.0555283610137 L 380.8 -305.0555283610137 L 380.8 -297.0555283610137 Z"/> + </clipPath> + <clipPath id="clip67"> + <path d="M 411.2 -297.08683289550316 L 411.2 -305.08683289550316 L 419.2 -305.08683289550316 L 419.2 -297.08683289550316 Z"/> + </clipPath> + <clipPath id="clip68"> + <path d="M 449.6 -297.1250471114646 L 449.6 -305.1250471114646 L 457.6 -305.1250471114646 L 457.6 -297.1250471114646 Z"/> + </clipPath> + <clipPath id="clip69"> + <path d="M 488.0 -297.16545229645294 L 488.0 -305.16545229645294 L 496.0 -305.16545229645294 L 496.0 -297.16545229645294 Z"/> + </clipPath> + <clipPath id="clip70"> + <path d="M 526.4 -297.18212843526595 L 526.4 -305.18212843526595 L 534.4 -305.18212843526595 L 534.4 -297.18212843526595 Z"/> + </clipPath> + <clipPath id="clip71"> + <path d="M 564.8 -297.1972948957741 L 564.8 -305.1972948957741 L 572.8 -305.1972948957741 L 572.8 -297.1972948957741 Z"/> + </clipPath> + <clipPath id="clip72"> + <path d="M 603.2 -297.20967812884345 L 603.2 -305.20967812884345 L 611.2 -305.20967812884345 L 611.2 -297.20967812884345 Z"/> + </clipPath> + <clipPath id="clip73"> + <path d="M 641.6 -297.24566653704784 L 641.6 -305.24566653704784 L 649.6 -305.24566653704784 L 649.6 -297.24566653704784 Z"/> + </clipPath> + <clipPath id="clip74"> + <path d="M 680.0 -297.24731169930305 L 680.0 -305.24731169930305 L 688.0 -305.24731169930305 L 688.0 -297.24731169930305 Z"/> + </clipPath> + <clipPath id="clip75"> + <path d="M 290 -54 L 290 -182 L 324 -182 L 324 -54 Z"/> + </clipPath> + <clipPath id="clip76"> + <path d="M 307.0 -167.66666666666669 L 300.75 -177.66666666666669 L 313.25 -177.66666666666669 Z"/> + </clipPath> + <clipPath id="clip77"> + <path d="M 299.85714285714283 -154.66666666666666 L 307.0 -161.8095238095238 L 314.14285714285717 -154.66666666666666 L 307.0 -147.52380952380952 Z"/> + </clipPath> + <clipPath id="clip78"> + <path d="M 307.0 -136.66666666666666 M 311.0 -136.66666666666666 L 311 -136.667 M 311 -136.667 A 4 4 0 1 0 303 -136.667 A 4 4 0 1 0 311 -136.667 Z"/> + </clipPath> + <clipPath id="clip79"> + <path d="M 300.75 -113.66666666666666 L 313.25 -113.66666666666666 L 307.0 -123.66666666666666 Z"/> + </clipPath> + <clipPath id="clip80"> + <path d="M 307.0 -100.66666666666666 M 311.0 -100.66666666666666 L 311 -100.667 M 311 -100.667 A 4 4 0 1 0 303 -100.667 A 4 4 0 1 0 311 -100.667 Z"/> + </clipPath> + <clipPath id="clip81"> + <path d="M 303.0 -60.66666666666666 L 303.0 -68.66666666666666 L 311.0 -68.66666666666666 L 311.0 -60.66666666666666 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 1.14e-05 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.50048673219425"> + 2.27e-05 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.5004867321942"> + 3.41e-05 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.50048673219425"> + 4.55e-05 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321942"> + 5.68e-05 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 338.4 -324.02358828362946 L 376.8 -343.8708644403897 L 415.2 -366.666619745818 L 453.6 -385.4837920726053 L 492.0 -403.22599602697716 L 530.4 -424.73116993030493 L 568.8 -451.15208865225145 L 607.2 -470.9679712422119 L 645.6 -492.8315969686786 L 684.0 -520.0" style="stroke:rgb(205,0,0);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip3);"> + <path d="M 332.15 -319.02358828362946 L 332.15 -329.02358828362946 L 344.65 -329.02358828362946 L 344.65 -319.02358828362946 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -319.02358828362946 L 332.15 -329.02358828362946 L 344.65 -329.02358828362946 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip4);"> + <path d="M 370.55 -338.8708644403897 L 370.55 -348.8708644403897 L 383.05 -348.8708644403897 L 383.05 -338.8708644403897 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -338.8708644403897 L 370.55 -348.8708644403897 L 383.05 -348.8708644403897 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 408.95 -361.666619745818 L 408.95 -371.666619745818 L 421.45 -371.666619745818 L 421.45 -361.666619745818 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -361.666619745818 L 408.95 -371.666619745818 L 421.45 -371.666619745818 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 447.35 -380.4837920726053 L 447.35 -390.4837920726053 L 459.85 -390.4837920726053 L 459.85 -380.4837920726053 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -380.4837920726053 L 447.35 -390.4837920726053 L 459.85 -390.4837920726053 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 485.75 -398.22599602697716 L 485.75 -408.22599602697716 L 498.25 -408.22599602697716 L 498.25 -398.22599602697716 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -398.22599602697716 L 485.75 -408.22599602697716 L 498.25 -408.22599602697716 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 524.15 -419.73116993030493 L 524.15 -429.73116993030493 L 536.65 -429.73116993030493 L 536.65 -419.73116993030493 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -419.73116993030493 L 524.15 -429.73116993030493 L 536.65 -429.73116993030493 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 562.55 -446.15208865225145 L 562.55 -456.15208865225145 L 575.05 -456.15208865225145 L 575.05 -446.15208865225145 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -446.15208865225145 L 562.55 -456.15208865225145 L 575.05 -456.15208865225145 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip10);"> + <path d="M 600.95 -465.9679712422119 L 600.95 -475.9679712422119 L 613.45 -475.9679712422119 L 613.45 -465.9679712422119 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -465.9679712422119 L 600.95 -475.9679712422119 L 613.45 -475.9679712422119 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip11);"> + <path d="M 639.35 -487.8315969686786 L 639.35 -497.8315969686786 L 651.85 -497.8315969686786 L 651.85 -487.8315969686786 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -487.8315969686786 L 639.35 -497.8315969686786 L 651.85 -497.8315969686786 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 677.75 -515.0 L 677.75 -525.0 L 690.25 -525.0 L 690.25 -515.0 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -515.0 L 677.75 -525.0 L 690.25 -525.0 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip13);"> + <path d="M 338.4 -301.34638143482783 L 376.8 -301.53403057714405 L 415.2 -301.65685258466425 L 453.6 -301.709954551293 L 492.0 -301.8004500882405 L 530.4 -301.8685017410567 L 568.8 -301.8433172101567 L 607.2 -301.85208108626455 L 645.6 -301.8905817540069 L 684.0 -301.9354850061496" style="stroke:rgb(126,126,126);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip14);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip15);"> + <path d="M 331.25714285714287 -294.20352429197067 L 331.25714285714287 -308.48923857768494 L 345.54285714285714 -308.48923857768494 L 345.54285714285714 -294.20352429197067 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 331.25714285714287 -301.34638143482783 L 338.4 -308.48923857768494 L 345.54285714285714 -301.34638143482783 L 338.4 -294.20352429197067 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip16);"> + <path d="M 369.65714285714284 -294.3911734342869 L 369.65714285714284 -308.67688772000116 L 383.9428571428571 -308.67688772000116 L 383.9428571428571 -294.3911734342869 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 369.65714285714284 -301.53403057714405 L 376.8 -308.67688772000116 L 383.9428571428571 -301.53403057714405 L 376.8 -294.3911734342869 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip17);"> + <path d="M 408.0571428571429 -294.51399544180714 L 408.0571428571429 -308.7997097275214 L 422.34285714285716 -308.7997097275214 L 422.34285714285716 -294.51399544180714 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 408.0571428571429 -301.65685258466425 L 415.2 -308.7997097275214 L 422.34285714285716 -301.65685258466425 L 415.2 -294.51399544180714 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip18);"> + <path d="M 446.45714285714286 -294.56709740843587 L 446.45714285714286 -308.85281169415015 L 460.74285714285713 -308.85281169415015 L 460.74285714285713 -294.56709740843587 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 446.45714285714286 -301.709954551293 L 453.6 -308.85281169415015 L 460.74285714285713 -301.709954551293 L 453.6 -294.56709740843587 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip19);"> + <path d="M 484.8571428571429 -294.6575929453834 L 484.8571428571429 -308.94330723109766 L 499.1428571428571 -308.94330723109766 L 499.1428571428571 -294.6575929453834 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 484.8571428571429 -301.8004500882405 L 492.0 -308.94330723109766 L 499.1428571428571 -301.8004500882405 L 492.0 -294.6575929453834 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip20);"> + <path d="M 523.2571428571429 -294.7256445981996 L 523.2571428571429 -309.0113588839139 L 537.5428571428572 -309.0113588839139 L 537.5428571428572 -294.7256445981996 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 523.2571428571429 -301.8685017410567 L 530.4 -309.0113588839139 L 537.5428571428572 -301.8685017410567 L 530.4 -294.7256445981996 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip21);"> + <path d="M 561.6571428571428 -294.70046006729956 L 561.6571428571428 -308.9861743530139 L 575.9428571428572 -308.9861743530139 L 575.9428571428572 -294.70046006729956 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 561.6571428571428 -301.8433172101567 L 568.8 -308.9861743530139 L 575.9428571428572 -301.8433172101567 L 568.8 -294.70046006729956 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip22);"> + <path d="M 600.0571428571428 -294.70922394340744 L 600.0571428571428 -308.9949382291217 L 614.3428571428572 -308.9949382291217 L 614.3428571428572 -294.70922394340744 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.0571428571428 -301.85208108626455 L 607.2 -308.9949382291217 L 614.3428571428572 -301.85208108626455 L 607.2 -294.70922394340744 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip23);"> + <path d="M 638.4571428571428 -294.74772461114975 L 638.4571428571428 -309.033438896864 L 652.7428571428572 -309.033438896864 L 652.7428571428572 -294.74772461114975 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 638.4571428571428 -301.8905817540069 L 645.6 -309.033438896864 L 652.7428571428572 -301.8905817540069 L 645.6 -294.74772461114975 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip24);"> + <path d="M 676.8571428571429 -294.7926278632924 L 676.8571428571429 -309.0783421490067 L 691.1428571428571 -309.0783421490067 L 691.1428571428571 -294.7926278632924 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 676.8571428571429 -301.9354850061496 L 684.0 -309.0783421490067 L 691.1428571428571 -301.9354850061496 L 684.0 -294.7926278632924 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip25);"> + <path d="M 338.4 -301.2731620370452 L 376.8 -301.4949221671098 L 415.2 -301.63795450906423 L 453.6 -301.66493517004994 L 492.0 -301.7576294179645 L 530.4 -301.8388655946426 L 568.8 -301.83923333679377 L 607.2 -301.8618359306956 L 645.6 -301.9368204908038 L 684.0 -302.0126024707346" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip26);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip27);"> + <path d="M 330.4 -293.2731620370452 L 330.4 -309.27316203704515 L 346.4 -309.27316203704515 L 346.4 -293.2731620370452 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -301.2731620370452 M 342.4 -301.2731620370452 L 342.4 -301.273 M 342.4 -301.273 A 4 4 0 1 0 334.4 -301.273 A 4 4 0 1 0 342.4 -301.273 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip28);"> + <path d="M 368.8 -293.4949221671098 L 368.8 -309.4949221671098 L 384.8 -309.4949221671098 L 384.8 -293.4949221671098 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -301.4949221671098 M 380.8 -301.4949221671098 L 380.8 -301.495 M 380.8 -301.495 A 4 4 0 1 0 372.8 -301.495 A 4 4 0 1 0 380.8 -301.495 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip29);"> + <path d="M 407.2 -293.63795450906423 L 407.2 -309.63795450906423 L 423.2 -309.63795450906423 L 423.2 -293.63795450906423 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -301.63795450906423 M 419.2 -301.63795450906423 L 419.2 -301.638 M 419.2 -301.638 A 4 4 0 1 0 411.2 -301.638 A 4 4 0 1 0 419.2 -301.638 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip30);"> + <path d="M 445.6 -293.66493517004994 L 445.6 -309.66493517004994 L 461.6 -309.66493517004994 L 461.6 -293.66493517004994 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -301.66493517004994 M 457.6 -301.66493517004994 L 457.6 -301.665 M 457.6 -301.665 A 4 4 0 1 0 449.6 -301.665 A 4 4 0 1 0 457.6 -301.665 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip31);"> + <path d="M 484.0 -293.7576294179645 L 484.0 -309.7576294179645 L 500.0 -309.7576294179645 L 500.0 -293.7576294179645 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -301.7576294179645 M 496.0 -301.7576294179645 L 496 -301.758 M 496 -301.758 A 4 4 0 1 0 488 -301.758 A 4 4 0 1 0 496 -301.758 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip32);"> + <path d="M 522.4 -293.8388655946426 L 522.4 -309.8388655946426 L 538.4 -309.8388655946426 L 538.4 -293.8388655946426 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -301.8388655946426 M 534.4 -301.8388655946426 L 534.4 -301.839 M 534.4 -301.839 A 4 4 0 1 0 526.4 -301.839 A 4 4 0 1 0 534.4 -301.839 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip33);"> + <path d="M 560.8 -293.83923333679377 L 560.8 -309.83923333679377 L 576.8 -309.83923333679377 L 576.8 -293.83923333679377 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -301.83923333679377 M 572.8 -301.83923333679377 L 572.8 -301.839 M 572.8 -301.839 A 4 4 0 1 0 564.8 -301.839 A 4 4 0 1 0 572.8 -301.839 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip34);"> + <path d="M 599.2 -293.8618359306956 L 599.2 -309.8618359306956 L 615.2 -309.8618359306956 L 615.2 -293.8618359306956 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -301.8618359306956 M 611.2 -301.8618359306956 L 611.2 -301.862 M 611.2 -301.862 A 4 4 0 1 0 603.2 -301.862 A 4 4 0 1 0 611.2 -301.862 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip35);"> + <path d="M 637.6 -293.9368204908038 L 637.6 -309.9368204908038 L 653.6 -309.9368204908038 L 653.6 -293.9368204908038 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -301.9368204908038 M 649.6 -301.9368204908038 L 649.6 -301.937 M 649.6 -301.937 A 4 4 0 1 0 641.6 -301.937 A 4 4 0 1 0 649.6 -301.937 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip36);"> + <path d="M 676.0 -294.0126024707346 L 676.0 -310.0126024707346 L 692.0 -310.0126024707346 L 692.0 -294.0126024707346 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -302.0126024707346 M 688.0 -302.0126024707346 L 688 -302.013 M 688 -302.013 A 4 4 0 1 0 680 -302.013 A 4 4 0 1 0 688 -302.013 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip37);"> + <path d="M 338.4 -301.21855426308167 L 376.8 -301.3938666239687 L 415.2 -301.5214034729639 L 453.6 -301.5967751300734 L 492.0 -301.64746548238446 L 530.4 -301.6999480938112 L 568.8 -301.70047067476287 L 607.2 -301.737020373619 L 645.6 -301.7630836147118 L 684.0 -301.8078707377541" style="stroke:rgb(147,147,147);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip38);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip39);"> + <path d="M 332.15 -296.21855426308167 L 332.15 -306.21855426308167 L 344.65 -306.21855426308167 L 344.65 -296.21855426308167 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 332.15 -296.21855426308167 L 344.65 -296.21855426308167 L 338.4 -306.21855426308167 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip40);"> + <path d="M 370.55 -296.3938666239687 L 370.55 -306.3938666239687 L 383.05 -306.3938666239687 L 383.05 -296.3938666239687 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 370.55 -296.3938666239687 L 383.05 -296.3938666239687 L 376.8 -306.3938666239687 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip41);"> + <path d="M 408.95 -296.5214034729639 L 408.95 -306.5214034729639 L 421.45 -306.5214034729639 L 421.45 -296.5214034729639 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 408.95 -296.5214034729639 L 421.45 -296.5214034729639 L 415.2 -306.5214034729639 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip42);"> + <path d="M 447.35 -296.5967751300734 L 447.35 -306.5967751300734 L 459.85 -306.5967751300734 L 459.85 -296.5967751300734 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 447.35 -296.5967751300734 L 459.85 -296.5967751300734 L 453.6 -306.5967751300734 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip43);"> + <path d="M 485.75 -296.64746548238446 L 485.75 -306.64746548238446 L 498.25 -306.64746548238446 L 498.25 -296.64746548238446 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 485.75 -296.64746548238446 L 498.25 -296.64746548238446 L 492.0 -306.64746548238446 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip44);"> + <path d="M 524.15 -296.6999480938112 L 524.15 -306.6999480938112 L 536.65 -306.6999480938112 L 536.65 -296.6999480938112 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 524.15 -296.6999480938112 L 536.65 -296.6999480938112 L 530.4 -306.6999480938112 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip45);"> + <path d="M 562.55 -296.70047067476287 L 562.55 -306.70047067476287 L 575.05 -306.70047067476287 L 575.05 -296.70047067476287 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 562.55 -296.70047067476287 L 575.05 -296.70047067476287 L 568.8 -306.70047067476287 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip46);"> + <path d="M 600.95 -296.737020373619 L 600.95 -306.737020373619 L 613.45 -306.737020373619 L 613.45 -296.737020373619 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.95 -296.737020373619 L 613.45 -296.737020373619 L 607.2 -306.737020373619 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip47);"> + <path d="M 639.35 -296.7630836147118 L 639.35 -306.7630836147118 L 651.85 -306.7630836147118 L 651.85 -296.7630836147118 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 639.35 -296.7630836147118 L 651.85 -296.7630836147118 L 645.6 -306.7630836147118 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip48);"> + <path d="M 677.75 -296.8078707377541 L 677.75 -306.8078707377541 L 690.25 -306.8078707377541 L 690.25 -296.8078707377541 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 677.75 -296.8078707377541 L 690.25 -296.8078707377541 L 684.0 -306.8078707377541 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip49);"> + <path d="M 338.4 -301.145958091471 L 376.8 -301.301416247165 L 415.2 -301.37377628960485 L 453.6 -301.4568163383087 L 492.0 -301.46844860319567 L 530.4 -301.521113150213 L 568.8 -301.56170027079196 L 607.2 -301.61290546211467 L 645.6 -301.609247395453 L 684.0 -301.6830319548574" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip50);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip51);"> + <path d="M 330.4 -293.145958091471 L 330.4 -309.145958091471 L 346.4 -309.145958091471 L 346.4 -293.145958091471 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -301.145958091471 M 342.4 -301.145958091471 L 342.4 -301.146 M 342.4 -301.146 A 4 4 0 1 0 334.4 -301.146 A 4 4 0 1 0 342.4 -301.146 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip52);"> + <path d="M 368.8 -293.301416247165 L 368.8 -309.301416247165 L 384.8 -309.301416247165 L 384.8 -293.301416247165 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -301.301416247165 M 380.8 -301.301416247165 L 380.8 -301.301 M 380.8 -301.301 A 4 4 0 1 0 372.8 -301.301 A 4 4 0 1 0 380.8 -301.301 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip53);"> + <path d="M 407.2 -293.37377628960485 L 407.2 -309.37377628960485 L 423.2 -309.37377628960485 L 423.2 -293.37377628960485 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -301.37377628960485 M 419.2 -301.37377628960485 L 419.2 -301.374 M 419.2 -301.374 A 4 4 0 1 0 411.2 -301.374 A 4 4 0 1 0 419.2 -301.374 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip54);"> + <path d="M 445.6 -293.4568163383087 L 445.6 -309.4568163383087 L 461.6 -309.4568163383087 L 461.6 -293.4568163383087 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -301.4568163383087 M 457.6 -301.4568163383087 L 457.6 -301.457 M 457.6 -301.457 A 4 4 0 1 0 449.6 -301.457 A 4 4 0 1 0 457.6 -301.457 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip55);"> + <path d="M 484.0 -293.46844860319567 L 484.0 -309.46844860319567 L 500.0 -309.46844860319567 L 500.0 -293.46844860319567 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -301.46844860319567 M 496.0 -301.46844860319567 L 496 -301.468 M 496 -301.468 A 4 4 0 1 0 488 -301.468 A 4 4 0 1 0 496 -301.468 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip56);"> + <path d="M 522.4 -293.521113150213 L 522.4 -309.521113150213 L 538.4 -309.521113150213 L 538.4 -293.521113150213 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -301.521113150213 M 534.4 -301.521113150213 L 534.4 -301.521 M 534.4 -301.521 A 4 4 0 1 0 526.4 -301.521 A 4 4 0 1 0 534.4 -301.521 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip57);"> + <path d="M 560.8 -293.56170027079196 L 560.8 -309.56170027079196 L 576.8 -309.56170027079196 L 576.8 -293.56170027079196 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -301.56170027079196 M 572.8 -301.56170027079196 L 572.8 -301.562 M 572.8 -301.562 A 4 4 0 1 0 564.8 -301.562 A 4 4 0 1 0 572.8 -301.562 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip58);"> + <path d="M 599.2 -293.61290546211467 L 599.2 -309.61290546211467 L 615.2 -309.61290546211467 L 615.2 -293.61290546211467 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -301.61290546211467 M 611.2 -301.61290546211467 L 611.2 -301.613 M 611.2 -301.613 A 4 4 0 1 0 603.2 -301.613 A 4 4 0 1 0 611.2 -301.613 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip59);"> + <path d="M 637.6 -293.609247395453 L 637.6 -309.609247395453 L 653.6 -309.609247395453 L 653.6 -293.609247395453 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -301.609247395453 M 649.6 -301.609247395453 L 649.6 -301.609 M 649.6 -301.609 A 4 4 0 1 0 641.6 -301.609 A 4 4 0 1 0 649.6 -301.609 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip60);"> + <path d="M 676.0 -293.6830319548574 L 676.0 -309.6830319548574 L 692.0 -309.6830319548574 L 692.0 -293.6830319548574 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -301.6830319548574 M 688.0 -301.6830319548574 L 688 -301.683 M 688 -301.683 A 4 4 0 1 0 680 -301.683 A 4 4 0 1 0 688 -301.683 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip61);"> + <path d="M 338.4 -300.95331152686896 L 376.8 -301.1261735637382 L 415.2 -301.23934524301774 L 453.6 -301.3144227064063 L 492.0 -301.2903220471097 L 530.4 -301.3784640342898 L 568.8 -301.430160838804 L 607.2 -301.4448937506708 L 645.6 -301.4848963547779 L 684.0 -301.51435830754156" style="stroke:rgb(137,42,226);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip62);"> + <path d="M 331.25714285714287 -300.95331152686896 L 345.54285714285714 -300.95331152686896" style="stroke-width:1;"/> + <path d="M 338.4 -293.8104543840118 L 338.4 -308.09616866972607" style="stroke-width:1;"/> + <path d="M 369.65714285714284 -301.1261735637382 L 383.9428571428571 -301.1261735637382" style="stroke-width:1;"/> + <path d="M 376.8 -293.983316420881 L 376.8 -308.2690307065953" style="stroke-width:1;"/> + <path d="M 408.0571428571429 -301.23934524301774 L 422.34285714285716 -301.23934524301774" style="stroke-width:1;"/> + <path d="M 415.2 -294.09648810016057 L 415.2 -308.3822023858749" style="stroke-width:1;"/> + <path d="M 446.45714285714286 -301.3144227064063 L 460.74285714285713 -301.3144227064063" style="stroke-width:1;"/> + <path d="M 453.6 -294.1715655635491 L 453.6 -308.45727984926344" style="stroke-width:1;"/> + <path d="M 484.8571428571429 -301.2903220471097 L 499.1428571428571 -301.2903220471097" style="stroke-width:1;"/> + <path d="M 492.0 -294.14746490425256 L 492.0 -308.43317918996684" style="stroke-width:1;"/> + <path d="M 523.2571428571429 -301.3784640342898 L 537.5428571428572 -301.3784640342898" style="stroke-width:1;"/> + <path d="M 530.4 -294.2356068914326 L 530.4 -308.5213211771469" style="stroke-width:1;"/> + <path d="M 561.6571428571428 -301.430160838804 L 575.9428571428572 -301.430160838804" style="stroke-width:1;"/> + <path d="M 568.8 -294.2873036959469 L 568.8 -308.57301798166117" style="stroke-width:1;"/> + <path d="M 600.0571428571428 -301.4448937506708 L 614.3428571428572 -301.4448937506708" style="stroke-width:1;"/> + <path d="M 607.2 -294.3020366078137 L 607.2 -308.587750893528" style="stroke-width:1;"/> + <path d="M 638.4571428571428 -301.4848963547779 L 652.7428571428572 -301.4848963547779" style="stroke-width:1;"/> + <path d="M 645.6 -294.3420392119208 L 645.6 -308.62775349763507" style="stroke-width:1;"/> + <path d="M 676.8571428571429 -301.51435830754156 L 691.1428571428571 -301.51435830754156" style="stroke-width:1;"/> + <path d="M 684.0 -294.3715011646844 L 684.0 -308.65721545039867" style="stroke-width:1;"/> + </g> + <g style="clip-path:url(#clip63);"> + <path d="M 338.4 -300.99423155086896 L 376.8 -301.0555283610137 L 415.2 -301.08683289550316 L 453.6 -301.1250471114646 L 492.0 -301.16545229645294 L 530.4 -301.18212843526595 L 568.8 -301.1972948957741 L 607.2 -301.20967812884345 L 645.6 -301.24566653704784 L 684.0 -301.24731169930305" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip64);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip65);"> + <path d="M 334.4 -296.99423155086896 L 334.4 -304.99423155086896 L 342.4 -304.99423155086896 L 342.4 -296.99423155086896 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 334.4 -296.99423155086896 L 334.4 -304.99423155086896 L 342.4 -304.99423155086896 L 342.4 -296.99423155086896 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip66);"> + <path d="M 372.8 -297.0555283610137 L 372.8 -305.0555283610137 L 380.8 -305.0555283610137 L 380.8 -297.0555283610137 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 372.8 -297.0555283610137 L 372.8 -305.0555283610137 L 380.8 -305.0555283610137 L 380.8 -297.0555283610137 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip67);"> + <path d="M 411.2 -297.08683289550316 L 411.2 -305.08683289550316 L 419.2 -305.08683289550316 L 419.2 -297.08683289550316 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 411.2 -297.08683289550316 L 411.2 -305.08683289550316 L 419.2 -305.08683289550316 L 419.2 -297.08683289550316 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip68);"> + <path d="M 449.6 -297.1250471114646 L 449.6 -305.1250471114646 L 457.6 -305.1250471114646 L 457.6 -297.1250471114646 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 449.6 -297.1250471114646 L 449.6 -305.1250471114646 L 457.6 -305.1250471114646 L 457.6 -297.1250471114646 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip69);"> + <path d="M 488.0 -297.16545229645294 L 488.0 -305.16545229645294 L 496.0 -305.16545229645294 L 496.0 -297.16545229645294 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 488.0 -297.16545229645294 L 488.0 -305.16545229645294 L 496.0 -305.16545229645294 L 496.0 -297.16545229645294 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip70);"> + <path d="M 526.4 -297.18212843526595 L 526.4 -305.18212843526595 L 534.4 -305.18212843526595 L 534.4 -297.18212843526595 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 526.4 -297.18212843526595 L 526.4 -305.18212843526595 L 534.4 -305.18212843526595 L 534.4 -297.18212843526595 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip71);"> + <path d="M 564.8 -297.1972948957741 L 564.8 -305.1972948957741 L 572.8 -305.1972948957741 L 572.8 -297.1972948957741 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 564.8 -297.1972948957741 L 564.8 -305.1972948957741 L 572.8 -305.1972948957741 L 572.8 -297.1972948957741 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip72);"> + <path d="M 603.2 -297.20967812884345 L 603.2 -305.20967812884345 L 611.2 -305.20967812884345 L 611.2 -297.20967812884345 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 603.2 -297.20967812884345 L 603.2 -305.20967812884345 L 611.2 -305.20967812884345 L 611.2 -297.20967812884345 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip73);"> + <path d="M 641.6 -297.24566653704784 L 641.6 -305.24566653704784 L 649.6 -305.24566653704784 L 649.6 -297.24566653704784 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 641.6 -297.24566653704784 L 641.6 -305.24566653704784 L 649.6 -305.24566653704784 L 649.6 -297.24566653704784 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip74);"> + <path d="M 680.0 -297.24731169930305 L 680.0 -305.24731169930305 L 688.0 -305.24731169930305 L 688.0 -297.24731169930305 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 680.0 -297.24731169930305 L 680.0 -305.24731169930305 L 688.0 -305.24731169930305 L 688.0 -297.24731169930305 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip75);"> + <path d="M 290 -54 L 290 -182 L 324 -182 L 324 -54 Z" style="stroke:none;"/> + </g> + <path d="M 300 -172.66666666666669 L 314 -172.66666666666669" style="stroke:rgb(205,0,0);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip76);"> + <path d="M 300.75 -167.66666666666669 L 300.75 -177.66666666666669 L 313.25 -177.66666666666669 L 313.25 -167.66666666666669 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -167.66666666666669 L 300.75 -177.66666666666669 L 313.25 -177.66666666666669 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-168.0"> + binary_heap + </text> + <path d="M 300 -154.66666666666666 L 314 -154.66666666666666" style="stroke:rgb(126,126,126);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip77);"> + <path d="M 299.85714285714283 -147.52380952380952 L 299.85714285714283 -161.8095238095238 L 314.14285714285717 -161.8095238095238 L 314.14285714285717 -147.52380952380952 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 299.85714285714283 -154.66666666666666 L 307.0 -161.8095238095238 L 314.14285714285717 -154.66666666666666 L 307.0 -147.52380952380952 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-150.0"> + rc_binomial_heap + </text> + <path d="M 300 -136.66666666666666 L 314 -136.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip78);"> + <path d="M 299.0 -128.66666666666666 L 299.0 -144.66666666666666 L 315.0 -144.66666666666666 L 315.0 -128.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -136.66666666666666 M 311.0 -136.66666666666666 L 311 -136.667 M 311 -136.667 A 4 4 0 1 0 303 -136.667 A 4 4 0 1 0 311 -136.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-132.0"> + thin_heap + </text> + <path d="M 300 -118.66666666666666 L 314 -118.66666666666666" style="stroke:rgb(147,147,147);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip79);"> + <path d="M 300.75 -113.66666666666666 L 300.75 -123.66666666666666 L 313.25 -123.66666666666666 L 313.25 -113.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 300.75 -113.66666666666666 L 313.25 -113.66666666666666 L 307.0 -123.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-114.0"> + binomial_heap + </text> + <path d="M 300 -100.66666666666666 L 314 -100.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip80);"> + <path d="M 299.0 -92.66666666666666 L 299.0 -108.66666666666666 L 315.0 -108.66666666666666 L 315.0 -92.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -100.66666666666666 M 311.0 -100.66666666666666 L 311 -100.667 M 311 -100.667 A 4 4 0 1 0 303 -100.667 A 4 4 0 1 0 311 -100.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-96.0"> + n_pq_deque + </text> + <path d="M 300 -82.66666666666666 L 314 -82.66666666666666" style="stroke:rgb(137,42,226);stroke-width:2;"/> + <path d="M 299.85714285714283 -82.66666666666666 L 314.14285714285717 -82.66666666666666" style="stroke-width:1;"/> + <path d="M 307.0 -75.52380952380952 L 307.0 -89.8095238095238" style="stroke-width:1;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-78.0"> + pairing_heap + </text> + <path d="M 300 -64.66666666666666 L 314 -64.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip81);"> + <path d="M 303.0 -60.66666666666666 L 303.0 -68.66666666666666 L 311.0 -68.66666666666666 L 311.0 -60.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 303.0 -60.66666666666666 L 303.0 -68.66666666666666 L 311.0 -68.66666666666666 L 311.0 -60.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-60.0"> + n_pq_vector + </text> + </g> + </g> + </g> + </g> + </g> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_push_timing_test_local.pdf b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_push_timing_test_local.pdf Binary files differnew file mode 100644 index 00000000000..1217db04d62 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_push_timing_test_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_push_timing_test_local.png b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_push_timing_test_local.png Binary files differnew file mode 100644 index 00000000000..09bd6b013a6 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_push_timing_test_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_push_timing_test_local.svg b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_push_timing_test_local.svg new file mode 100644 index 00000000000..169e2b434d3 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_push_timing_test_local.svg @@ -0,0 +1,825 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 496.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 338.4 -318.16773343074505 L 332.15 -328.16773343074505 L 344.65 -328.16773343074505 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 376.8 -337.0586693772533 L 370.55 -347.0586693772533 L 383.05 -347.0586693772533 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 415.2 -361.86261949257675 L 408.95 -371.86261949257675 L 421.45 -371.86261949257675 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 453.6 -380.73511427346216 L 447.35 -390.73511427346216 L 459.85 -390.73511427346216 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 492.0 -399.82346775090133 L 485.75 -409.82346775090133 L 498.25 -409.82346775090133 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 530.4 -421.17639636682566 L 524.15 -431.17639636682566 L 536.65 -431.17639636682566 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 568.8 -447.52086322302165 L 562.55 -457.52086322302165 L 575.05 -457.52086322302165 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 607.2 -468.08800406587994 L 600.95 -478.08800406587994 L 613.45 -478.08800406587994 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 645.6 -490.55555555555554 L 639.35 -500.55555555555554 L 651.85 -500.55555555555554 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 684.0 -515.0 L 677.75 -525.0 L 690.25 -525.0 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 331.25714285714287 -300.4027472925016 L 338.4 -307.5456044353587 L 345.54285714285714 -300.4027472925016 L 338.4 -293.25989014964443 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 369.65714285714284 -300.41168834606566 L 376.8 -307.5545454889228 L 383.9428571428571 -300.41168834606566 L 376.8 -293.26883120320855 Z"/> + </clipPath> + <clipPath id="clip17"> + <path d="M 408.0571428571429 -300.4143128151101 L 415.2 -307.55716995796723 L 422.34285714285716 -300.4143128151101 L 415.2 -293.27145567225296 Z"/> + </clipPath> + <clipPath id="clip18"> + <path d="M 446.45714285714286 -300.4191036358214 L 453.6 -307.56196077867855 L 460.74285714285713 -300.4191036358214 L 453.6 -293.2762464929642 Z"/> + </clipPath> + <clipPath id="clip19"> + <path d="M 484.8571428571429 -300.4206915172403 L 492.0 -307.5635486600974 L 499.1428571428571 -300.4206915172403 L 492.0 -293.27783437438313 Z"/> + </clipPath> + <clipPath id="clip20"> + <path d="M 523.2571428571429 -300.416048225854 L 530.4 -307.5589053687111 L 537.5428571428572 -300.416048225854 L 530.4 -293.27319108299685 Z"/> + </clipPath> + <clipPath id="clip21"> + <path d="M 561.6571428571428 -300.4108303465704 L 568.8 -307.55368748942755 L 575.9428571428572 -300.4108303465704 L 568.8 -293.26797320371327 Z"/> + </clipPath> + <clipPath id="clip22"> + <path d="M 600.0571428571428 -300.4126434043274 L 607.2 -307.5555005471846 L 614.3428571428572 -300.4126434043274 L 607.2 -293.26978626147024 Z"/> + </clipPath> + <clipPath id="clip23"> + <path d="M 638.4571428571428 -300.41230175746955 L 645.6 -307.5551589003267 L 652.7428571428572 -300.41230175746955 L 645.6 -293.26944461461244 Z"/> + </clipPath> + <clipPath id="clip24"> + <path d="M 676.8571428571429 -300.4164131668158 L 684.0 -307.5592703096729 L 691.1428571428571 -300.4164131668158 L 684.0 -293.27355602395863 Z"/> + </clipPath> + <clipPath id="clip25"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip26"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip27"> + <path d="M 338.4 -300.3679350306264 M 342.4 -300.3679350306264 L 342.4 -300.368 M 342.4 -300.368 A 4 4 0 1 0 334.4 -300.368 A 4 4 0 1 0 342.4 -300.368 Z"/> + </clipPath> + <clipPath id="clip28"> + <path d="M 376.8 -300.36275092779357 M 380.8 -300.36275092779357 L 380.8 -300.363 M 380.8 -300.363 A 4 4 0 1 0 372.8 -300.363 A 4 4 0 1 0 380.8 -300.363 Z"/> + </clipPath> + <clipPath id="clip29"> + <path d="M 415.2 -300.3657911965934 M 419.2 -300.3657911965934 L 419.2 -300.366 M 419.2 -300.366 A 4 4 0 1 0 411.2 -300.366 A 4 4 0 1 0 419.2 -300.366 Z"/> + </clipPath> + <clipPath id="clip30"> + <path d="M 453.6 -300.3609735876626 M 457.6 -300.3609735876626 L 457.6 -300.361 M 457.6 -300.361 A 4 4 0 1 0 449.6 -300.361 A 4 4 0 1 0 457.6 -300.361 Z"/> + </clipPath> + <clipPath id="clip31"> + <path d="M 492.0 -300.3548728618395 M 496.0 -300.3548728618395 L 496 -300.355 M 496 -300.355 A 4 4 0 1 0 488 -300.355 A 4 4 0 1 0 496 -300.355 Z"/> + </clipPath> + <clipPath id="clip32"> + <path d="M 530.4 -300.3528784983068 M 534.4 -300.3528784983068 L 534.4 -300.353 M 534.4 -300.353 A 4 4 0 1 0 526.4 -300.353 A 4 4 0 1 0 534.4 -300.353 Z"/> + </clipPath> + <clipPath id="clip33"> + <path d="M 568.8 -300.3554109556406 M 572.8 -300.3554109556406 L 572.8 -300.355 M 572.8 -300.355 A 4 4 0 1 0 564.8 -300.355 A 4 4 0 1 0 572.8 -300.355 Z"/> + </clipPath> + <clipPath id="clip34"> + <path d="M 607.2 -300.3563928021219 M 611.2 -300.3563928021219 L 611.2 -300.356 M 611.2 -300.356 A 4 4 0 1 0 603.2 -300.356 A 4 4 0 1 0 611.2 -300.356 Z"/> + </clipPath> + <clipPath id="clip35"> + <path d="M 645.6 -300.35528244983385 M 649.6 -300.35528244983385 L 649.6 -300.355 M 649.6 -300.355 A 4 4 0 1 0 641.6 -300.355 A 4 4 0 1 0 649.6 -300.355 Z"/> + </clipPath> + <clipPath id="clip36"> + <path d="M 684.0 -300.35782034245864 M 688.0 -300.35782034245864 L 688 -300.358 M 688 -300.358 A 4 4 0 1 0 680 -300.358 A 4 4 0 1 0 688 -300.358 Z"/> + </clipPath> + <clipPath id="clip37"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip38"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip39"> + <path d="M 332.15 -295.3071230546335 L 344.65 -295.3071230546335 L 338.4 -305.3071230546335 Z"/> + </clipPath> + <clipPath id="clip40"> + <path d="M 370.55 -295.3156382143305 L 383.05 -295.3156382143305 L 376.8 -305.3156382143305 Z"/> + </clipPath> + <clipPath id="clip41"> + <path d="M 408.95 -295.3187052713498 L 421.45 -295.3187052713498 L 415.2 -305.3187052713498 Z"/> + </clipPath> + <clipPath id="clip42"> + <path d="M 447.35 -295.32374145662266 L 459.85 -295.32374145662266 L 453.6 -305.32374145662266 Z"/> + </clipPath> + <clipPath id="clip43"> + <path d="M 485.75 -295.3164057550554 L 498.25 -295.3164057550554 L 492.0 -305.3164057550554 Z"/> + </clipPath> + <clipPath id="clip44"> + <path d="M 524.15 -295.31882174186956 L 536.65 -295.31882174186956 L 530.4 -305.31882174186956 Z"/> + </clipPath> + <clipPath id="clip45"> + <path d="M 562.55 -295.3207601995528 L 575.05 -295.3207601995528 L 568.8 -305.3207601995528 Z"/> + </clipPath> + <clipPath id="clip46"> + <path d="M 600.95 -295.3191455299144 L 613.45 -295.3191455299144 L 607.2 -305.3191455299144 Z"/> + </clipPath> + <clipPath id="clip47"> + <path d="M 639.35 -295.3245854796556 L 651.85 -295.3245854796556 L 645.6 -305.3245854796556 Z"/> + </clipPath> + <clipPath id="clip48"> + <path d="M 677.75 -295.3206068467019 L 690.25 -295.3206068467019 L 684.0 -305.3206068467019 Z"/> + </clipPath> + <clipPath id="clip49"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip50"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip51"> + <path d="M 334.4 -296.3438396095061 L 334.4 -304.3438396095061 L 342.4 -304.3438396095061 L 342.4 -296.3438396095061 Z"/> + </clipPath> + <clipPath id="clip52"> + <path d="M 372.8 -296.3338794388944 L 372.8 -304.3338794388944 L 380.8 -304.3338794388944 L 380.8 -296.3338794388944 Z"/> + </clipPath> + <clipPath id="clip53"> + <path d="M 411.2 -296.3238121154046 L 411.2 -304.3238121154046 L 419.2 -304.3238121154046 L 419.2 -296.3238121154046 Z"/> + </clipPath> + <clipPath id="clip54"> + <path d="M 449.6 -296.3146878148895 L 449.6 -304.3146878148895 L 457.6 -304.3146878148895 L 457.6 -296.3146878148895 Z"/> + </clipPath> + <clipPath id="clip55"> + <path d="M 488.0 -296.30504172644606 L 488.0 -304.30504172644606 L 496.0 -304.30504172644606 L 496.0 -296.30504172644606 Z"/> + </clipPath> + <clipPath id="clip56"> + <path d="M 526.4 -296.3073451250911 L 526.4 -304.3073451250911 L 534.4 -304.3073451250911 L 534.4 -296.3073451250911 Z"/> + </clipPath> + <clipPath id="clip57"> + <path d="M 564.8 -296.3064995491179 L 564.8 -304.3064995491179 L 572.8 -304.3064995491179 L 572.8 -296.3064995491179 Z"/> + </clipPath> + <clipPath id="clip58"> + <path d="M 603.2 -296.3029930100041 L 603.2 -304.3029930100041 L 611.2 -304.3029930100041 L 611.2 -296.3029930100041 Z"/> + </clipPath> + <clipPath id="clip59"> + <path d="M 641.6 -296.3028559630259 L 641.6 -304.3028559630259 L 649.6 -304.3028559630259 L 649.6 -296.3028559630259 Z"/> + </clipPath> + <clipPath id="clip60"> + <path d="M 680.0 -296.29986344713916 L 680.0 -304.29986344713916 L 688.0 -304.29986344713916 L 688.0 -296.29986344713916 Z"/> + </clipPath> + <clipPath id="clip61"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip62"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip63"> + <path d="M 338.4 -300.25016353519794 M 342.4 -300.25016353519794 L 342.4 -300.25 M 342.4 -300.25 A 4 4 0 1 0 334.4 -300.25 A 4 4 0 1 0 342.4 -300.25 Z"/> + </clipPath> + <clipPath id="clip64"> + <path d="M 376.8 -300.2512482639716 M 380.8 -300.2512482639716 L 380.8 -300.251 M 380.8 -300.251 A 4 4 0 1 0 372.8 -300.251 A 4 4 0 1 0 380.8 -300.251 Z"/> + </clipPath> + <clipPath id="clip65"> + <path d="M 415.2 -300.24567087901715 M 419.2 -300.24567087901715 L 419.2 -300.246 M 419.2 -300.246 A 4 4 0 1 0 411.2 -300.246 A 4 4 0 1 0 419.2 -300.246 Z"/> + </clipPath> + <clipPath id="clip66"> + <path d="M 453.6 -300.242859280671 M 457.6 -300.242859280671 L 457.6 -300.243 M 457.6 -300.243 A 4 4 0 1 0 449.6 -300.243 A 4 4 0 1 0 457.6 -300.243 Z"/> + </clipPath> + <clipPath id="clip67"> + <path d="M 492.0 -300.24525158514615 M 496.0 -300.24525158514615 L 496 -300.245 M 496 -300.245 A 4 4 0 1 0 488 -300.245 A 4 4 0 1 0 496 -300.245 Z"/> + </clipPath> + <clipPath id="clip68"> + <path d="M 530.4 -300.2462559492612 M 534.4 -300.2462559492612 L 534.4 -300.246 M 534.4 -300.246 A 4 4 0 1 0 526.4 -300.246 A 4 4 0 1 0 534.4 -300.246 Z"/> + </clipPath> + <clipPath id="clip69"> + <path d="M 568.8 -300.2437681389599 M 572.8 -300.2437681389599 L 572.8 -300.244 M 572.8 -300.244 A 4 4 0 1 0 564.8 -300.244 A 4 4 0 1 0 572.8 -300.244 Z"/> + </clipPath> + <clipPath id="clip70"> + <path d="M 607.2 -300.2443268092195 M 611.2 -300.2443268092195 L 611.2 -300.244 M 611.2 -300.244 A 4 4 0 1 0 603.2 -300.244 A 4 4 0 1 0 611.2 -300.244 Z"/> + </clipPath> + <clipPath id="clip71"> + <path d="M 645.6 -300.2448517030284 M 649.6 -300.2448517030284 L 649.6 -300.245 M 649.6 -300.245 A 4 4 0 1 0 641.6 -300.245 A 4 4 0 1 0 649.6 -300.245 Z"/> + </clipPath> + <clipPath id="clip72"> + <path d="M 684.0 -300.2464985961773 M 688.0 -300.2464985961773 L 688 -300.246 M 688 -300.246 A 4 4 0 1 0 680 -300.246 A 4 4 0 1 0 688 -300.246 Z"/> + </clipPath> + <clipPath id="clip73"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip74"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip75"> + <path d="M 290 -54 L 290 -182 L 324 -182 L 324 -54 Z"/> + </clipPath> + <clipPath id="clip76"> + <path d="M 307.0 -167.66666666666669 L 300.75 -177.66666666666669 L 313.25 -177.66666666666669 Z"/> + </clipPath> + <clipPath id="clip77"> + <path d="M 299.85714285714283 -154.66666666666666 L 307.0 -161.8095238095238 L 314.14285714285717 -154.66666666666666 L 307.0 -147.52380952380952 Z"/> + </clipPath> + <clipPath id="clip78"> + <path d="M 307.0 -136.66666666666666 M 311.0 -136.66666666666666 L 311 -136.667 M 311 -136.667 A 4 4 0 1 0 303 -136.667 A 4 4 0 1 0 311 -136.667 Z"/> + </clipPath> + <clipPath id="clip79"> + <path d="M 300.75 -113.66666666666666 L 313.25 -113.66666666666666 L 307.0 -123.66666666666666 Z"/> + </clipPath> + <clipPath id="clip80"> + <path d="M 303.0 -96.66666666666666 L 303.0 -104.66666666666666 L 311.0 -104.66666666666666 L 311.0 -96.66666666666666 Z"/> + </clipPath> + <clipPath id="clip81"> + <path d="M 307.0 -82.66666666666666 M 311.0 -82.66666666666666 L 311 -82.6667 M 311 -82.6667 A 4 4 0 1 0 303 -82.6667 A 4 4 0 1 0 311 -82.6667 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 1.13e-05 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.50048673219425"> + 2.27e-05 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.5004867321942"> + 3.40e-05 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.50048673219425"> + 4.53e-05 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321942"> + 5.67e-05 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 338.4 -323.16773343074505 L 376.8 -342.0586693772533 L 415.2 -366.86261949257675 L 453.6 -385.73511427346216 L 492.0 -404.82346775090133 L 530.4 -426.17639636682566 L 568.8 -452.52086322302165 L 607.2 -473.08800406587994 L 645.6 -495.55555555555554 L 684.0 -520.0" style="stroke:rgb(205,0,0);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip3);"> + <path d="M 332.15 -318.16773343074505 L 332.15 -328.16773343074505 L 344.65 -328.16773343074505 L 344.65 -318.16773343074505 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -318.16773343074505 L 332.15 -328.16773343074505 L 344.65 -328.16773343074505 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip4);"> + <path d="M 370.55 -337.0586693772533 L 370.55 -347.0586693772533 L 383.05 -347.0586693772533 L 383.05 -337.0586693772533 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -337.0586693772533 L 370.55 -347.0586693772533 L 383.05 -347.0586693772533 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 408.95 -361.86261949257675 L 408.95 -371.86261949257675 L 421.45 -371.86261949257675 L 421.45 -361.86261949257675 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -361.86261949257675 L 408.95 -371.86261949257675 L 421.45 -371.86261949257675 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 447.35 -380.73511427346216 L 447.35 -390.73511427346216 L 459.85 -390.73511427346216 L 459.85 -380.73511427346216 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -380.73511427346216 L 447.35 -390.73511427346216 L 459.85 -390.73511427346216 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 485.75 -399.82346775090133 L 485.75 -409.82346775090133 L 498.25 -409.82346775090133 L 498.25 -399.82346775090133 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -399.82346775090133 L 485.75 -409.82346775090133 L 498.25 -409.82346775090133 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 524.15 -421.17639636682566 L 524.15 -431.17639636682566 L 536.65 -431.17639636682566 L 536.65 -421.17639636682566 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -421.17639636682566 L 524.15 -431.17639636682566 L 536.65 -431.17639636682566 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 562.55 -447.52086322302165 L 562.55 -457.52086322302165 L 575.05 -457.52086322302165 L 575.05 -447.52086322302165 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -447.52086322302165 L 562.55 -457.52086322302165 L 575.05 -457.52086322302165 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip10);"> + <path d="M 600.95 -468.08800406587994 L 600.95 -478.08800406587994 L 613.45 -478.08800406587994 L 613.45 -468.08800406587994 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -468.08800406587994 L 600.95 -478.08800406587994 L 613.45 -478.08800406587994 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip11);"> + <path d="M 639.35 -490.55555555555554 L 639.35 -500.55555555555554 L 651.85 -500.55555555555554 L 651.85 -490.55555555555554 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -490.55555555555554 L 639.35 -500.55555555555554 L 651.85 -500.55555555555554 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 677.75 -515.0 L 677.75 -525.0 L 690.25 -525.0 L 690.25 -515.0 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -515.0 L 677.75 -525.0 L 690.25 -525.0 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip13);"> + <path d="M 338.4 -300.4027472925016 L 376.8 -300.41168834606566 L 415.2 -300.4143128151101 L 453.6 -300.4191036358214 L 492.0 -300.4206915172403 L 530.4 -300.416048225854 L 568.8 -300.4108303465704 L 607.2 -300.4126434043274 L 645.6 -300.41230175746955 L 684.0 -300.4164131668158" style="stroke:rgb(126,126,126);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip14);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip15);"> + <path d="M 331.25714285714287 -293.25989014964443 L 331.25714285714287 -307.5456044353587 L 345.54285714285714 -307.5456044353587 L 345.54285714285714 -293.25989014964443 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 331.25714285714287 -300.4027472925016 L 338.4 -307.5456044353587 L 345.54285714285714 -300.4027472925016 L 338.4 -293.25989014964443 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip16);"> + <path d="M 369.65714285714284 -293.26883120320855 L 369.65714285714284 -307.5545454889228 L 383.9428571428571 -307.5545454889228 L 383.9428571428571 -293.26883120320855 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 369.65714285714284 -300.41168834606566 L 376.8 -307.5545454889228 L 383.9428571428571 -300.41168834606566 L 376.8 -293.26883120320855 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip17);"> + <path d="M 408.0571428571429 -293.27145567225296 L 408.0571428571429 -307.55716995796723 L 422.34285714285716 -307.55716995796723 L 422.34285714285716 -293.27145567225296 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 408.0571428571429 -300.4143128151101 L 415.2 -307.55716995796723 L 422.34285714285716 -300.4143128151101 L 415.2 -293.27145567225296 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip18);"> + <path d="M 446.45714285714286 -293.2762464929642 L 446.45714285714286 -307.56196077867855 L 460.74285714285713 -307.56196077867855 L 460.74285714285713 -293.2762464929642 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 446.45714285714286 -300.4191036358214 L 453.6 -307.56196077867855 L 460.74285714285713 -300.4191036358214 L 453.6 -293.2762464929642 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip19);"> + <path d="M 484.8571428571429 -293.27783437438313 L 484.8571428571429 -307.5635486600974 L 499.1428571428571 -307.5635486600974 L 499.1428571428571 -293.27783437438313 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 484.8571428571429 -300.4206915172403 L 492.0 -307.5635486600974 L 499.1428571428571 -300.4206915172403 L 492.0 -293.27783437438313 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip20);"> + <path d="M 523.2571428571429 -293.27319108299685 L 523.2571428571429 -307.5589053687111 L 537.5428571428572 -307.5589053687111 L 537.5428571428572 -293.27319108299685 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 523.2571428571429 -300.416048225854 L 530.4 -307.5589053687111 L 537.5428571428572 -300.416048225854 L 530.4 -293.27319108299685 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip21);"> + <path d="M 561.6571428571428 -293.26797320371327 L 561.6571428571428 -307.55368748942755 L 575.9428571428572 -307.55368748942755 L 575.9428571428572 -293.26797320371327 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 561.6571428571428 -300.4108303465704 L 568.8 -307.55368748942755 L 575.9428571428572 -300.4108303465704 L 568.8 -293.26797320371327 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip22);"> + <path d="M 600.0571428571428 -293.26978626147024 L 600.0571428571428 -307.5555005471846 L 614.3428571428572 -307.5555005471846 L 614.3428571428572 -293.26978626147024 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.0571428571428 -300.4126434043274 L 607.2 -307.5555005471846 L 614.3428571428572 -300.4126434043274 L 607.2 -293.26978626147024 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip23);"> + <path d="M 638.4571428571428 -293.26944461461244 L 638.4571428571428 -307.5551589003267 L 652.7428571428572 -307.5551589003267 L 652.7428571428572 -293.26944461461244 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 638.4571428571428 -300.41230175746955 L 645.6 -307.5551589003267 L 652.7428571428572 -300.41230175746955 L 645.6 -293.26944461461244 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip24);"> + <path d="M 676.8571428571429 -293.27355602395863 L 676.8571428571429 -307.5592703096729 L 691.1428571428571 -307.5592703096729 L 691.1428571428571 -293.27355602395863 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 676.8571428571429 -300.4164131668158 L 684.0 -307.5592703096729 L 691.1428571428571 -300.4164131668158 L 684.0 -293.27355602395863 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip25);"> + <path d="M 338.4 -300.3679350306264 L 376.8 -300.36275092779357 L 415.2 -300.3657911965934 L 453.6 -300.3609735876626 L 492.0 -300.3548728618395 L 530.4 -300.3528784983068 L 568.8 -300.3554109556406 L 607.2 -300.3563928021219 L 645.6 -300.35528244983385 L 684.0 -300.35782034245864" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip26);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip27);"> + <path d="M 330.4 -292.3679350306264 L 330.4 -308.3679350306264 L 346.4 -308.3679350306264 L 346.4 -292.3679350306264 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -300.3679350306264 M 342.4 -300.3679350306264 L 342.4 -300.368 M 342.4 -300.368 A 4 4 0 1 0 334.4 -300.368 A 4 4 0 1 0 342.4 -300.368 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip28);"> + <path d="M 368.8 -292.36275092779357 L 368.8 -308.36275092779357 L 384.8 -308.36275092779357 L 384.8 -292.36275092779357 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -300.36275092779357 M 380.8 -300.36275092779357 L 380.8 -300.363 M 380.8 -300.363 A 4 4 0 1 0 372.8 -300.363 A 4 4 0 1 0 380.8 -300.363 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip29);"> + <path d="M 407.2 -292.3657911965934 L 407.2 -308.3657911965934 L 423.2 -308.3657911965934 L 423.2 -292.3657911965934 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -300.3657911965934 M 419.2 -300.3657911965934 L 419.2 -300.366 M 419.2 -300.366 A 4 4 0 1 0 411.2 -300.366 A 4 4 0 1 0 419.2 -300.366 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip30);"> + <path d="M 445.6 -292.3609735876626 L 445.6 -308.3609735876626 L 461.6 -308.3609735876626 L 461.6 -292.3609735876626 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -300.3609735876626 M 457.6 -300.3609735876626 L 457.6 -300.361 M 457.6 -300.361 A 4 4 0 1 0 449.6 -300.361 A 4 4 0 1 0 457.6 -300.361 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip31);"> + <path d="M 484.0 -292.3548728618395 L 484.0 -308.3548728618395 L 500.0 -308.3548728618395 L 500.0 -292.3548728618395 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -300.3548728618395 M 496.0 -300.3548728618395 L 496 -300.355 M 496 -300.355 A 4 4 0 1 0 488 -300.355 A 4 4 0 1 0 496 -300.355 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip32);"> + <path d="M 522.4 -292.3528784983068 L 522.4 -308.3528784983068 L 538.4 -308.3528784983068 L 538.4 -292.3528784983068 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -300.3528784983068 M 534.4 -300.3528784983068 L 534.4 -300.353 M 534.4 -300.353 A 4 4 0 1 0 526.4 -300.353 A 4 4 0 1 0 534.4 -300.353 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip33);"> + <path d="M 560.8 -292.3554109556406 L 560.8 -308.3554109556406 L 576.8 -308.3554109556406 L 576.8 -292.3554109556406 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -300.3554109556406 M 572.8 -300.3554109556406 L 572.8 -300.355 M 572.8 -300.355 A 4 4 0 1 0 564.8 -300.355 A 4 4 0 1 0 572.8 -300.355 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip34);"> + <path d="M 599.2 -292.3563928021219 L 599.2 -308.3563928021219 L 615.2 -308.3563928021219 L 615.2 -292.3563928021219 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -300.3563928021219 M 611.2 -300.3563928021219 L 611.2 -300.356 M 611.2 -300.356 A 4 4 0 1 0 603.2 -300.356 A 4 4 0 1 0 611.2 -300.356 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip35);"> + <path d="M 637.6 -292.35528244983385 L 637.6 -308.35528244983385 L 653.6 -308.35528244983385 L 653.6 -292.35528244983385 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -300.35528244983385 M 649.6 -300.35528244983385 L 649.6 -300.355 M 649.6 -300.355 A 4 4 0 1 0 641.6 -300.355 A 4 4 0 1 0 649.6 -300.355 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip36);"> + <path d="M 676.0 -292.35782034245864 L 676.0 -308.35782034245864 L 692.0 -308.35782034245864 L 692.0 -292.35782034245864 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -300.35782034245864 M 688.0 -300.35782034245864 L 688 -300.358 M 688 -300.358 A 4 4 0 1 0 680 -300.358 A 4 4 0 1 0 688 -300.358 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip37);"> + <path d="M 338.4 -300.3071230546335 L 376.8 -300.3156382143305 L 415.2 -300.3187052713498 L 453.6 -300.32374145662266 L 492.0 -300.3164057550554 L 530.4 -300.31882174186956 L 568.8 -300.3207601995528 L 607.2 -300.3191455299144 L 645.6 -300.3245854796556 L 684.0 -300.3206068467019" style="stroke:rgb(147,147,147);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip38);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip39);"> + <path d="M 332.15 -295.3071230546335 L 332.15 -305.3071230546335 L 344.65 -305.3071230546335 L 344.65 -295.3071230546335 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 332.15 -295.3071230546335 L 344.65 -295.3071230546335 L 338.4 -305.3071230546335 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip40);"> + <path d="M 370.55 -295.3156382143305 L 370.55 -305.3156382143305 L 383.05 -305.3156382143305 L 383.05 -295.3156382143305 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 370.55 -295.3156382143305 L 383.05 -295.3156382143305 L 376.8 -305.3156382143305 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip41);"> + <path d="M 408.95 -295.3187052713498 L 408.95 -305.3187052713498 L 421.45 -305.3187052713498 L 421.45 -295.3187052713498 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 408.95 -295.3187052713498 L 421.45 -295.3187052713498 L 415.2 -305.3187052713498 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip42);"> + <path d="M 447.35 -295.32374145662266 L 447.35 -305.32374145662266 L 459.85 -305.32374145662266 L 459.85 -295.32374145662266 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 447.35 -295.32374145662266 L 459.85 -295.32374145662266 L 453.6 -305.32374145662266 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip43);"> + <path d="M 485.75 -295.3164057550554 L 485.75 -305.3164057550554 L 498.25 -305.3164057550554 L 498.25 -295.3164057550554 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 485.75 -295.3164057550554 L 498.25 -295.3164057550554 L 492.0 -305.3164057550554 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip44);"> + <path d="M 524.15 -295.31882174186956 L 524.15 -305.31882174186956 L 536.65 -305.31882174186956 L 536.65 -295.31882174186956 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 524.15 -295.31882174186956 L 536.65 -295.31882174186956 L 530.4 -305.31882174186956 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip45);"> + <path d="M 562.55 -295.3207601995528 L 562.55 -305.3207601995528 L 575.05 -305.3207601995528 L 575.05 -295.3207601995528 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 562.55 -295.3207601995528 L 575.05 -295.3207601995528 L 568.8 -305.3207601995528 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip46);"> + <path d="M 600.95 -295.3191455299144 L 600.95 -305.3191455299144 L 613.45 -305.3191455299144 L 613.45 -295.3191455299144 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.95 -295.3191455299144 L 613.45 -295.3191455299144 L 607.2 -305.3191455299144 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip47);"> + <path d="M 639.35 -295.3245854796556 L 639.35 -305.3245854796556 L 651.85 -305.3245854796556 L 651.85 -295.3245854796556 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 639.35 -295.3245854796556 L 651.85 -295.3245854796556 L 645.6 -305.3245854796556 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip48);"> + <path d="M 677.75 -295.3206068467019 L 677.75 -305.3206068467019 L 690.25 -305.3206068467019 L 690.25 -295.3206068467019 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 677.75 -295.3206068467019 L 690.25 -295.3206068467019 L 684.0 -305.3206068467019 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip49);"> + <path d="M 338.4 -300.3438396095061 L 376.8 -300.3338794388944 L 415.2 -300.3238121154046 L 453.6 -300.3146878148895 L 492.0 -300.30504172644606 L 530.4 -300.3073451250911 L 568.8 -300.3064995491179 L 607.2 -300.3029930100041 L 645.6 -300.3028559630259 L 684.0 -300.29986344713916" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip50);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip51);"> + <path d="M 334.4 -296.3438396095061 L 334.4 -304.3438396095061 L 342.4 -304.3438396095061 L 342.4 -296.3438396095061 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 334.4 -296.3438396095061 L 334.4 -304.3438396095061 L 342.4 -304.3438396095061 L 342.4 -296.3438396095061 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip52);"> + <path d="M 372.8 -296.3338794388944 L 372.8 -304.3338794388944 L 380.8 -304.3338794388944 L 380.8 -296.3338794388944 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 372.8 -296.3338794388944 L 372.8 -304.3338794388944 L 380.8 -304.3338794388944 L 380.8 -296.3338794388944 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip53);"> + <path d="M 411.2 -296.3238121154046 L 411.2 -304.3238121154046 L 419.2 -304.3238121154046 L 419.2 -296.3238121154046 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 411.2 -296.3238121154046 L 411.2 -304.3238121154046 L 419.2 -304.3238121154046 L 419.2 -296.3238121154046 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip54);"> + <path d="M 449.6 -296.3146878148895 L 449.6 -304.3146878148895 L 457.6 -304.3146878148895 L 457.6 -296.3146878148895 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 449.6 -296.3146878148895 L 449.6 -304.3146878148895 L 457.6 -304.3146878148895 L 457.6 -296.3146878148895 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip55);"> + <path d="M 488.0 -296.30504172644606 L 488.0 -304.30504172644606 L 496.0 -304.30504172644606 L 496.0 -296.30504172644606 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 488.0 -296.30504172644606 L 488.0 -304.30504172644606 L 496.0 -304.30504172644606 L 496.0 -296.30504172644606 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip56);"> + <path d="M 526.4 -296.3073451250911 L 526.4 -304.3073451250911 L 534.4 -304.3073451250911 L 534.4 -296.3073451250911 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 526.4 -296.3073451250911 L 526.4 -304.3073451250911 L 534.4 -304.3073451250911 L 534.4 -296.3073451250911 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip57);"> + <path d="M 564.8 -296.3064995491179 L 564.8 -304.3064995491179 L 572.8 -304.3064995491179 L 572.8 -296.3064995491179 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 564.8 -296.3064995491179 L 564.8 -304.3064995491179 L 572.8 -304.3064995491179 L 572.8 -296.3064995491179 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip58);"> + <path d="M 603.2 -296.3029930100041 L 603.2 -304.3029930100041 L 611.2 -304.3029930100041 L 611.2 -296.3029930100041 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 603.2 -296.3029930100041 L 603.2 -304.3029930100041 L 611.2 -304.3029930100041 L 611.2 -296.3029930100041 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip59);"> + <path d="M 641.6 -296.3028559630259 L 641.6 -304.3028559630259 L 649.6 -304.3028559630259 L 649.6 -296.3028559630259 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 641.6 -296.3028559630259 L 641.6 -304.3028559630259 L 649.6 -304.3028559630259 L 649.6 -296.3028559630259 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip60);"> + <path d="M 680.0 -296.29986344713916 L 680.0 -304.29986344713916 L 688.0 -304.29986344713916 L 688.0 -296.29986344713916 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 680.0 -296.29986344713916 L 680.0 -304.29986344713916 L 688.0 -304.29986344713916 L 688.0 -296.29986344713916 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip61);"> + <path d="M 338.4 -300.25016353519794 L 376.8 -300.2512482639716 L 415.2 -300.24567087901715 L 453.6 -300.242859280671 L 492.0 -300.24525158514615 L 530.4 -300.2462559492612 L 568.8 -300.2437681389599 L 607.2 -300.2443268092195 L 645.6 -300.2448517030284 L 684.0 -300.2464985961773" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip62);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip63);"> + <path d="M 330.4 -292.25016353519794 L 330.4 -308.25016353519794 L 346.4 -308.25016353519794 L 346.4 -292.25016353519794 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -300.25016353519794 M 342.4 -300.25016353519794 L 342.4 -300.25 M 342.4 -300.25 A 4 4 0 1 0 334.4 -300.25 A 4 4 0 1 0 342.4 -300.25 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip64);"> + <path d="M 368.8 -292.2512482639716 L 368.8 -308.2512482639716 L 384.8 -308.2512482639716 L 384.8 -292.2512482639716 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -300.2512482639716 M 380.8 -300.2512482639716 L 380.8 -300.251 M 380.8 -300.251 A 4 4 0 1 0 372.8 -300.251 A 4 4 0 1 0 380.8 -300.251 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip65);"> + <path d="M 407.2 -292.24567087901715 L 407.2 -308.24567087901715 L 423.2 -308.24567087901715 L 423.2 -292.24567087901715 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -300.24567087901715 M 419.2 -300.24567087901715 L 419.2 -300.246 M 419.2 -300.246 A 4 4 0 1 0 411.2 -300.246 A 4 4 0 1 0 419.2 -300.246 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip66);"> + <path d="M 445.6 -292.242859280671 L 445.6 -308.242859280671 L 461.6 -308.242859280671 L 461.6 -292.242859280671 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -300.242859280671 M 457.6 -300.242859280671 L 457.6 -300.243 M 457.6 -300.243 A 4 4 0 1 0 449.6 -300.243 A 4 4 0 1 0 457.6 -300.243 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip67);"> + <path d="M 484.0 -292.24525158514615 L 484.0 -308.24525158514615 L 500.0 -308.24525158514615 L 500.0 -292.24525158514615 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -300.24525158514615 M 496.0 -300.24525158514615 L 496 -300.245 M 496 -300.245 A 4 4 0 1 0 488 -300.245 A 4 4 0 1 0 496 -300.245 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip68);"> + <path d="M 522.4 -292.2462559492612 L 522.4 -308.2462559492612 L 538.4 -308.2462559492612 L 538.4 -292.2462559492612 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -300.2462559492612 M 534.4 -300.2462559492612 L 534.4 -300.246 M 534.4 -300.246 A 4 4 0 1 0 526.4 -300.246 A 4 4 0 1 0 534.4 -300.246 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip69);"> + <path d="M 560.8 -292.2437681389599 L 560.8 -308.2437681389599 L 576.8 -308.2437681389599 L 576.8 -292.2437681389599 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -300.2437681389599 M 572.8 -300.2437681389599 L 572.8 -300.244 M 572.8 -300.244 A 4 4 0 1 0 564.8 -300.244 A 4 4 0 1 0 572.8 -300.244 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip70);"> + <path d="M 599.2 -292.2443268092195 L 599.2 -308.2443268092195 L 615.2 -308.2443268092195 L 615.2 -292.2443268092195 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -300.2443268092195 M 611.2 -300.2443268092195 L 611.2 -300.244 M 611.2 -300.244 A 4 4 0 1 0 603.2 -300.244 A 4 4 0 1 0 611.2 -300.244 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip71);"> + <path d="M 637.6 -292.2448517030284 L 637.6 -308.2448517030284 L 653.6 -308.2448517030284 L 653.6 -292.2448517030284 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -300.2448517030284 M 649.6 -300.2448517030284 L 649.6 -300.245 M 649.6 -300.245 A 4 4 0 1 0 641.6 -300.245 A 4 4 0 1 0 649.6 -300.245 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip72);"> + <path d="M 676.0 -292.2464985961773 L 676.0 -308.2464985961773 L 692.0 -308.2464985961773 L 692.0 -292.2464985961773 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -300.2464985961773 M 688.0 -300.2464985961773 L 688 -300.246 M 688 -300.246 A 4 4 0 1 0 680 -300.246 A 4 4 0 1 0 688 -300.246 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip73);"> + <path d="M 338.4 -300.23584076715247 L 376.8 -300.2364266138667 L 415.2 -300.23523706162524 L 453.6 -300.23551154381676 L 492.0 -300.23574914367697 L 530.4 -300.2377640836682 L 568.8 -300.23631868451844 L 607.2 -300.23606206114 L 645.6 -300.2364860138318 L 684.0 -300.236227837513" style="stroke:rgb(137,42,226);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip74);"> + <path d="M 331.25714285714287 -300.23584076715247 L 345.54285714285714 -300.23584076715247" style="stroke-width:1;"/> + <path d="M 338.4 -293.09298362429536 L 338.4 -307.37869791000963" style="stroke-width:1;"/> + <path d="M 369.65714285714284 -300.2364266138667 L 383.9428571428571 -300.2364266138667" style="stroke-width:1;"/> + <path d="M 376.8 -293.0935694710096 L 376.8 -307.37928375672385" style="stroke-width:1;"/> + <path d="M 408.0571428571429 -300.23523706162524 L 422.34285714285716 -300.23523706162524" style="stroke-width:1;"/> + <path d="M 415.2 -293.09237991876813 L 415.2 -307.3780942044824" style="stroke-width:1;"/> + <path d="M 446.45714285714286 -300.23551154381676 L 460.74285714285713 -300.23551154381676" style="stroke-width:1;"/> + <path d="M 453.6 -293.0926544009596 L 453.6 -307.37836868667387" style="stroke-width:1;"/> + <path d="M 484.8571428571429 -300.23574914367697 L 499.1428571428571 -300.23574914367697" style="stroke-width:1;"/> + <path d="M 492.0 -293.09289200081986 L 492.0 -307.37860628653414" style="stroke-width:1;"/> + <path d="M 523.2571428571429 -300.2377640836682 L 537.5428571428572 -300.2377640836682" style="stroke-width:1;"/> + <path d="M 530.4 -293.09490694081103 L 530.4 -307.3806212265253" style="stroke-width:1;"/> + <path d="M 561.6571428571428 -300.23631868451844 L 575.9428571428572 -300.23631868451844" style="stroke-width:1;"/> + <path d="M 568.8 -293.09346154166127 L 568.8 -307.37917582737555" style="stroke-width:1;"/> + <path d="M 600.0571428571428 -300.23606206114 L 614.3428571428572 -300.23606206114" style="stroke-width:1;"/> + <path d="M 607.2 -293.0932049182828 L 607.2 -307.3789192039971" style="stroke-width:1;"/> + <path d="M 638.4571428571428 -300.2364860138318 L 652.7428571428572 -300.2364860138318" style="stroke-width:1;"/> + <path d="M 645.6 -293.0936288709746 L 645.6 -307.3793431566889" style="stroke-width:1;"/> + <path d="M 676.8571428571429 -300.236227837513 L 691.1428571428571 -300.236227837513" style="stroke-width:1;"/> + <path d="M 684.0 -293.0933706946559 L 684.0 -307.3790849803702" style="stroke-width:1;"/> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip75);"> + <path d="M 290 -54 L 290 -182 L 324 -182 L 324 -54 Z" style="stroke:none;"/> + </g> + <path d="M 300 -172.66666666666669 L 314 -172.66666666666669" style="stroke:rgb(205,0,0);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip76);"> + <path d="M 300.75 -167.66666666666669 L 300.75 -177.66666666666669 L 313.25 -177.66666666666669 L 313.25 -167.66666666666669 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -167.66666666666669 L 300.75 -177.66666666666669 L 313.25 -177.66666666666669 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-168.0"> + binary_heap + </text> + <path d="M 300 -154.66666666666666 L 314 -154.66666666666666" style="stroke:rgb(126,126,126);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip77);"> + <path d="M 299.85714285714283 -147.52380952380952 L 299.85714285714283 -161.8095238095238 L 314.14285714285717 -161.8095238095238 L 314.14285714285717 -147.52380952380952 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 299.85714285714283 -154.66666666666666 L 307.0 -161.8095238095238 L 314.14285714285717 -154.66666666666666 L 307.0 -147.52380952380952 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-150.0"> + rc_binomial_heap + </text> + <path d="M 300 -136.66666666666666 L 314 -136.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip78);"> + <path d="M 299.0 -128.66666666666666 L 299.0 -144.66666666666666 L 315.0 -144.66666666666666 L 315.0 -128.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -136.66666666666666 M 311.0 -136.66666666666666 L 311 -136.667 M 311 -136.667 A 4 4 0 1 0 303 -136.667 A 4 4 0 1 0 311 -136.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-132.0"> + n_pq_deque + </text> + <path d="M 300 -118.66666666666666 L 314 -118.66666666666666" style="stroke:rgb(147,147,147);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip79);"> + <path d="M 300.75 -113.66666666666666 L 300.75 -123.66666666666666 L 313.25 -123.66666666666666 L 313.25 -113.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 300.75 -113.66666666666666 L 313.25 -113.66666666666666 L 307.0 -123.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-114.0"> + binomial_heap + </text> + <path d="M 300 -100.66666666666666 L 314 -100.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip80);"> + <path d="M 303.0 -96.66666666666666 L 303.0 -104.66666666666666 L 311.0 -104.66666666666666 L 311.0 -96.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 303.0 -96.66666666666666 L 303.0 -104.66666666666666 L 311.0 -104.66666666666666 L 311.0 -96.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-96.0"> + n_pq_vector + </text> + <path d="M 300 -82.66666666666666 L 314 -82.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip81);"> + <path d="M 299.0 -74.66666666666666 L 299.0 -90.66666666666666 L 315.0 -90.66666666666666 L 315.0 -74.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -82.66666666666666 M 311.0 -82.66666666666666 L 311 -82.6667 M 311 -82.6667 A 4 4 0 1 0 303 -82.6667 A 4 4 0 1 0 311 -82.6667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-78.0"> + thin_heap + </text> + <path d="M 300 -64.66666666666666 L 314 -64.66666666666666" style="stroke:rgb(137,42,226);stroke-width:2;"/> + <path d="M 299.85714285714283 -64.66666666666666 L 314.14285714285717 -64.66666666666666" style="stroke-width:1;"/> + <path d="M 307.0 -57.52380952380952 L 307.0 -71.8095238095238" style="stroke-width:1;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-60.0"> + pairing_heap + </text> + </g> + </g> + </g> + </g> + </g> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/rationale_null_node_updator.png b/libstdc++-v3/doc/xml/images/pbds_rationale_null_node_updator.png Binary files differindex 43874891517..43874891517 100644 --- a/libstdc++-v3/doc/html/ext/pb_ds/rationale_null_node_updator.png +++ b/libstdc++-v3/doc/xml/images/pbds_rationale_null_node_updator.png diff --git a/libstdc++-v3/doc/html/ext/pb_ds/resize_policy_cd.png b/libstdc++-v3/doc/xml/images/pbds_resize_policy_cd.png Binary files differindex 338e33c15cc..338e33c15cc 100644 --- a/libstdc++-v3/doc/html/ext/pb_ds/resize_policy_cd.png +++ b/libstdc++-v3/doc/xml/images/pbds_resize_policy_cd.png diff --git a/libstdc++-v3/doc/html/ext/pb_ds/restoring_node_invariants.png b/libstdc++-v3/doc/xml/images/pbds_restoring_node_invariants.png Binary files differindex 33ba84bfe33..33ba84bfe33 100644 --- a/libstdc++-v3/doc/html/ext/pb_ds/restoring_node_invariants.png +++ b/libstdc++-v3/doc/xml/images/pbds_restoring_node_invariants.png diff --git a/libstdc++-v3/doc/html/ext/pb_ds/simple_list.png b/libstdc++-v3/doc/xml/images/pbds_simple_list.png Binary files differindex 9a05d3f5e4f..9a05d3f5e4f 100644 --- a/libstdc++-v3/doc/html/ext/pb_ds/simple_list.png +++ b/libstdc++-v3/doc/xml/images/pbds_simple_list.png diff --git a/libstdc++-v3/doc/xml/images/pbds_text_find_timing_test_hash_local.pdf b/libstdc++-v3/doc/xml/images/pbds_text_find_timing_test_hash_local.pdf Binary files differnew file mode 100644 index 00000000000..7f1614766a0 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_text_find_timing_test_hash_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_text_find_timing_test_hash_local.png b/libstdc++-v3/doc/xml/images/pbds_text_find_timing_test_hash_local.png Binary files differnew file mode 100644 index 00000000000..1909c1b3c12 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_text_find_timing_test_hash_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_text_find_timing_test_hash_local.svg b/libstdc++-v3/doc/xml/images/pbds_text_find_timing_test_hash_local.svg new file mode 100644 index 00000000000..578056dd2df --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_text_find_timing_test_hash_local.svg @@ -0,0 +1,483 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 436.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 338.4 -496.38583390432836 L 332.15 -506.38583390432836 L 344.65 -506.38583390432836 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 376.8 -501.14870645437264 L 370.55 -511.14870645437264 L 383.05 -511.14870645437264 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 415.2 -503.9233937620248 L 408.95 -513.9233937620247 L 421.45 -513.9233937620247 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 453.6 -498.9791190031008 L 447.35 -508.9791190031008 L 459.85 -508.9791190031008 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 492.0 -502.67912790675166 L 485.75 -512.6791279067517 L 498.25 -512.6791279067517 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 530.4 -507.3547059666074 L 524.15 -517.3547059666074 L 536.65 -517.3547059666074 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 568.8 -512.2585271812977 L 562.55 -522.2585271812977 L 575.05 -522.2585271812977 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 607.2 -515.0 L 600.95 -525.0 L 613.45 -525.0 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 645.6 -495.34426159700524 L 639.35 -505.34426159700524 L 651.85 -505.34426159700524 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 684.0 -502.64250680355065 L 677.75 -512.6425068035506 L 690.25 -512.6425068035506 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 331.25714285714287 -455.5362126966062 L 338.4 -462.6790698394633 L 345.54285714285714 -455.5362126966062 L 338.4 -448.393355553749 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 369.65714285714284 -468.721513156112 L 376.8 -475.8643702989691 L 383.9428571428571 -468.721513156112 L 376.8 -461.57865601325483 Z"/> + </clipPath> + <clipPath id="clip17"> + <path d="M 408.0571428571429 -461.8588887469466 L 415.2 -469.0017458898038 L 422.34285714285716 -461.8588887469466 L 415.2 -454.7160316040895 Z"/> + </clipPath> + <clipPath id="clip18"> + <path d="M 446.45714285714286 -471.6609954281688 L 453.6 -478.80385257102597 L 460.74285714285713 -471.6609954281688 L 453.6 -464.5181382853117 Z"/> + </clipPath> + <clipPath id="clip19"> + <path d="M 484.8571428571429 -461.42454542991084 L 492.0 -468.56740257276795 L 499.1428571428571 -461.42454542991084 L 492.0 -454.2816882870537 Z"/> + </clipPath> + <clipPath id="clip20"> + <path d="M 523.2571428571429 -464.7826154280914 L 530.4 -471.9254725709485 L 537.5428571428572 -464.7826154280914 L 530.4 -457.6397582852343 Z"/> + </clipPath> + <clipPath id="clip21"> + <path d="M 561.6571428571428 -466.54724161024455 L 568.8 -473.6900987531017 L 575.9428571428572 -466.54724161024455 L 568.8 -459.40438446738744 Z"/> + </clipPath> + <clipPath id="clip22"> + <path d="M 600.0571428571428 -468.4081046449959 L 607.2 -475.55096178785305 L 614.3428571428572 -468.4081046449959 L 607.2 -461.2652475021388 Z"/> + </clipPath> + <clipPath id="clip23"> + <path d="M 638.4571428571428 -471.27051226961805 L 645.6 -478.41336941247516 L 652.7428571428572 -471.27051226961805 L 645.6 -464.1276551267609 Z"/> + </clipPath> + <clipPath id="clip24"> + <path d="M 676.8571428571429 -476.00017033071254 L 684.0 -483.1430274735697 L 691.1428571428571 -476.00017033071254 L 684.0 -468.8573131878554 Z"/> + </clipPath> + <clipPath id="clip25"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip26"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip27"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip28"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip29"> + <path d="M 331.25714285714287 -450.31046643517175 L 338.4 -457.45332357802886 L 345.54285714285714 -450.31046643517175 L 338.4 -443.1676092923146 Z"/> + </clipPath> + <clipPath id="clip30"> + <path d="M 369.65714285714284 -461.6353296867076 L 376.8 -468.7781868295648 L 383.9428571428571 -461.6353296867076 L 376.8 -454.49247254385045 Z"/> + </clipPath> + <clipPath id="clip31"> + <path d="M 408.0571428571429 -455.21599095698764 L 415.2 -462.35884809984475 L 422.34285714285716 -455.21599095698764 L 415.2 -448.0731338141305 Z"/> + </clipPath> + <clipPath id="clip32"> + <path d="M 446.45714285714286 -459.3839834934055 L 453.6 -466.5268406362626 L 460.74285714285713 -459.3839834934055 L 453.6 -452.24112635054837 Z"/> + </clipPath> + <clipPath id="clip33"> + <path d="M 484.8571428571429 -455.7793597887899 L 492.0 -462.9222169316471 L 499.1428571428571 -455.7793597887899 L 492.0 -448.63650264593275 Z"/> + </clipPath> + <clipPath id="clip34"> + <path d="M 523.2571428571429 -461.76605850859977 L 530.4 -468.90891565145694 L 537.5428571428572 -461.76605850859977 L 530.4 -454.6232013657426 Z"/> + </clipPath> + <clipPath id="clip35"> + <path d="M 561.6571428571428 -461.75498701228315 L 568.8 -468.8978441551403 L 575.9428571428572 -461.75498701228315 L 568.8 -454.612129869426 Z"/> + </clipPath> + <clipPath id="clip36"> + <path d="M 600.0571428571428 -463.8381316269293 L 607.2 -470.98098876978645 L 614.3428571428572 -463.8381316269293 L 607.2 -456.6952744840721 Z"/> + </clipPath> + <clipPath id="clip37"> + <path d="M 638.4571428571428 -464.7826154280914 L 645.6 -471.9254725709485 L 652.7428571428572 -464.7826154280914 L 645.6 -457.6397582852343 Z"/> + </clipPath> + <clipPath id="clip38"> + <path d="M 676.8571428571429 -468.12535566214126 L 684.0 -475.2682128049984 L 691.1428571428571 -468.12535566214126 L 684.0 -460.98249851928415 Z"/> + </clipPath> + <clipPath id="clip39"> + <path d="M 290 -114 L 290 -188 L 324 -188 L 324 -114 Z"/> + </clipPath> + <clipPath id="clip40"> + <path d="M 307.0 -173.66666666666669 L 300.75 -183.66666666666669 L 313.25 -183.66666666666669 Z"/> + </clipPath> + <clipPath id="clip41"> + <path d="M 299.85714285714283 -160.66666666666666 L 307.0 -167.8095238095238 L 314.14285714285717 -160.66666666666666 L 307.0 -153.52380952380952 Z"/> + </clipPath> + <clipPath id="clip42"> + <path d="M 299.85714285714283 -124.66666666666666 L 307.0 -131.8095238095238 L 314.14285714285717 -124.66666666666666 L 307.0 -117.52380952380952 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 1.03e-08 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.5004867321942"> + 2.07e-08 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.50048673219425"> + 3.10e-08 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.5004867321942"> + 4.13e-08 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321942"> + 5.17e-08 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 338.4 -501.38583390432836 L 376.8 -506.14870645437264 L 415.2 -508.9233937620248 L 453.6 -503.9791190031008 L 492.0 -507.67912790675166 L 530.4 -512.3547059666074 L 568.8 -517.2585271812977 L 607.2 -520.0 L 645.6 -500.34426159700524 L 684.0 -507.64250680355065" style="stroke:rgb(0,138,0);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip3);"> + <path d="M 332.15 -496.38583390432836 L 332.15 -506.38583390432836 L 344.65 -506.38583390432836 L 344.65 -496.38583390432836 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -496.38583390432836 L 332.15 -506.38583390432836 L 344.65 -506.38583390432836 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip4);"> + <path d="M 370.55 -501.14870645437264 L 370.55 -511.14870645437264 L 383.05 -511.14870645437264 L 383.05 -501.14870645437264 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -501.14870645437264 L 370.55 -511.14870645437264 L 383.05 -511.14870645437264 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 408.95 -503.9233937620248 L 408.95 -513.9233937620247 L 421.45 -513.9233937620247 L 421.45 -503.9233937620248 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -503.9233937620248 L 408.95 -513.9233937620247 L 421.45 -513.9233937620247 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 447.35 -498.9791190031008 L 447.35 -508.9791190031008 L 459.85 -508.9791190031008 L 459.85 -498.9791190031008 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -498.9791190031008 L 447.35 -508.9791190031008 L 459.85 -508.9791190031008 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 485.75 -502.67912790675166 L 485.75 -512.6791279067517 L 498.25 -512.6791279067517 L 498.25 -502.67912790675166 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -502.67912790675166 L 485.75 -512.6791279067517 L 498.25 -512.6791279067517 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 524.15 -507.3547059666074 L 524.15 -517.3547059666074 L 536.65 -517.3547059666074 L 536.65 -507.3547059666074 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -507.3547059666074 L 524.15 -517.3547059666074 L 536.65 -517.3547059666074 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 562.55 -512.2585271812977 L 562.55 -522.2585271812977 L 575.05 -522.2585271812977 L 575.05 -512.2585271812977 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -512.2585271812977 L 562.55 -522.2585271812977 L 575.05 -522.2585271812977 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip10);"> + <path d="M 600.95 -515.0 L 600.95 -525.0 L 613.45 -525.0 L 613.45 -515.0 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -515.0 L 600.95 -525.0 L 613.45 -525.0 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip11);"> + <path d="M 639.35 -495.34426159700524 L 639.35 -505.34426159700524 L 651.85 -505.34426159700524 L 651.85 -495.34426159700524 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -495.34426159700524 L 639.35 -505.34426159700524 L 651.85 -505.34426159700524 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 677.75 -502.64250680355065 L 677.75 -512.6425068035506 L 690.25 -512.6425068035506 L 690.25 -502.64250680355065 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -502.64250680355065 L 677.75 -512.6425068035506 L 690.25 -512.6425068035506 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip13);"> + <path d="M 338.4 -455.5362126966062 L 376.8 -468.721513156112 L 415.2 -461.8588887469466 L 453.6 -471.6609954281688 L 492.0 -461.42454542991084 L 530.4 -464.7826154280914 L 568.8 -466.54724161024455 L 607.2 -468.4081046449959 L 645.6 -471.27051226961805 L 684.0 -476.00017033071254" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip14);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip15);"> + <path d="M 331.25714285714287 -448.393355553749 L 331.25714285714287 -462.6790698394633 L 345.54285714285714 -462.6790698394633 L 345.54285714285714 -448.393355553749 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 331.25714285714287 -455.5362126966062 L 338.4 -462.6790698394633 L 345.54285714285714 -455.5362126966062 L 338.4 -448.393355553749 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip16);"> + <path d="M 369.65714285714284 -461.57865601325483 L 369.65714285714284 -475.8643702989691 L 383.9428571428571 -475.8643702989691 L 383.9428571428571 -461.57865601325483 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 369.65714285714284 -468.721513156112 L 376.8 -475.8643702989691 L 383.9428571428571 -468.721513156112 L 376.8 -461.57865601325483 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip17);"> + <path d="M 408.0571428571429 -454.7160316040895 L 408.0571428571429 -469.0017458898038 L 422.34285714285716 -469.0017458898038 L 422.34285714285716 -454.7160316040895 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 408.0571428571429 -461.8588887469466 L 415.2 -469.0017458898038 L 422.34285714285716 -461.8588887469466 L 415.2 -454.7160316040895 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip18);"> + <path d="M 446.45714285714286 -464.5181382853117 L 446.45714285714286 -478.80385257102597 L 460.74285714285713 -478.80385257102597 L 460.74285714285713 -464.5181382853117 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 446.45714285714286 -471.6609954281688 L 453.6 -478.80385257102597 L 460.74285714285713 -471.6609954281688 L 453.6 -464.5181382853117 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip19);"> + <path d="M 484.8571428571429 -454.2816882870537 L 484.8571428571429 -468.56740257276795 L 499.1428571428571 -468.56740257276795 L 499.1428571428571 -454.2816882870537 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 484.8571428571429 -461.42454542991084 L 492.0 -468.56740257276795 L 499.1428571428571 -461.42454542991084 L 492.0 -454.2816882870537 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip20);"> + <path d="M 523.2571428571429 -457.6397582852343 L 523.2571428571429 -471.9254725709485 L 537.5428571428572 -471.9254725709485 L 537.5428571428572 -457.6397582852343 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 523.2571428571429 -464.7826154280914 L 530.4 -471.9254725709485 L 537.5428571428572 -464.7826154280914 L 530.4 -457.6397582852343 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip21);"> + <path d="M 561.6571428571428 -459.40438446738744 L 561.6571428571428 -473.6900987531017 L 575.9428571428572 -473.6900987531017 L 575.9428571428572 -459.40438446738744 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 561.6571428571428 -466.54724161024455 L 568.8 -473.6900987531017 L 575.9428571428572 -466.54724161024455 L 568.8 -459.40438446738744 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip22);"> + <path d="M 600.0571428571428 -461.2652475021388 L 600.0571428571428 -475.55096178785305 L 614.3428571428572 -475.55096178785305 L 614.3428571428572 -461.2652475021388 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.0571428571428 -468.4081046449959 L 607.2 -475.55096178785305 L 614.3428571428572 -468.4081046449959 L 607.2 -461.2652475021388 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip23);"> + <path d="M 638.4571428571428 -464.1276551267609 L 638.4571428571428 -478.41336941247516 L 652.7428571428572 -478.41336941247516 L 652.7428571428572 -464.1276551267609 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 638.4571428571428 -471.27051226961805 L 645.6 -478.41336941247516 L 652.7428571428572 -471.27051226961805 L 645.6 -464.1276551267609 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip24);"> + <path d="M 676.8571428571429 -468.8573131878554 L 676.8571428571429 -483.1430274735697 L 691.1428571428571 -483.1430274735697 L 691.1428571428571 -468.8573131878554 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 676.8571428571429 -476.00017033071254 L 684.0 -483.1430274735697 L 691.1428571428571 -476.00017033071254 L 684.0 -468.8573131878554 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip25);"> + <path d="M 338.4 -450.6179133713481 L 376.8 -459.85665122076796 L 415.2 -456.44024295353455 L 453.6 -462.55767049523655 L 492.0 -459.1502045904127 L 530.4 -463.2419741329586 L 568.8 -461.3444899950062 L 607.2 -464.93165480158405 L 645.6 -463.6831306784969 L 684.0 -468.5511824435489" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip26);"> + <path d="M 333.4 -445.6179133713481 L 343.4 -455.6179133713481" style="stroke-width:0.7;"/> + <path d="M 343.4 -445.6179133713481 L 333.4 -455.6179133713481" style="stroke-width:0.7;"/> + <path d="M 371.8 -454.85665122076796 L 381.8 -464.85665122076796" style="stroke-width:0.7;"/> + <path d="M 381.8 -454.85665122076796 L 371.8 -464.85665122076796" style="stroke-width:0.7;"/> + <path d="M 410.2 -451.44024295353455 L 420.2 -461.44024295353455" style="stroke-width:0.7;"/> + <path d="M 420.2 -451.44024295353455 L 410.2 -461.44024295353455" style="stroke-width:0.7;"/> + <path d="M 448.6 -457.55767049523655 L 458.6 -467.55767049523655" style="stroke-width:0.7;"/> + <path d="M 458.6 -457.55767049523655 L 448.6 -467.55767049523655" style="stroke-width:0.7;"/> + <path d="M 487.0 -454.1502045904127 L 497.0 -464.1502045904127" style="stroke-width:0.7;"/> + <path d="M 497.0 -454.1502045904127 L 487.0 -464.1502045904127" style="stroke-width:0.7;"/> + <path d="M 525.4 -458.2419741329586 L 535.4 -468.2419741329586" style="stroke-width:0.7;"/> + <path d="M 535.4 -458.2419741329586 L 525.4 -468.2419741329586" style="stroke-width:0.7;"/> + <path d="M 563.8 -456.3444899950062 L 573.8 -466.3444899950062" style="stroke-width:0.7;"/> + <path d="M 573.8 -456.3444899950062 L 563.8 -466.3444899950062" style="stroke-width:0.7;"/> + <path d="M 602.2 -459.93165480158405 L 612.2 -469.93165480158405" style="stroke-width:0.7;"/> + <path d="M 612.2 -459.93165480158405 L 602.2 -469.93165480158405" style="stroke-width:0.7;"/> + <path d="M 640.6 -458.6831306784969 L 650.6 -468.6831306784969" style="stroke-width:0.7;"/> + <path d="M 650.6 -458.6831306784969 L 640.6 -468.6831306784969" style="stroke-width:0.7;"/> + <path d="M 679.0 -463.5511824435489 L 689.0 -473.5511824435489" style="stroke-width:0.7;"/> + <path d="M 689.0 -463.5511824435489 L 679.0 -473.5511824435489" style="stroke-width:0.7;"/> + </g> + <g style="clip-path:url(#clip27);"> + <path d="M 338.4 -450.31046643517175 L 376.8 -461.6353296867076 L 415.2 -455.21599095698764 L 453.6 -459.3839834934055 L 492.0 -455.7793597887899 L 530.4 -461.76605850859977 L 568.8 -461.75498701228315 L 607.2 -463.8381316269293 L 645.6 -464.7826154280914 L 684.0 -468.12535566214126" style="stroke:rgb(0,0,128);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip28);"> + <g style="fill:rgb(179,179,179);clip-path:url(#clip29);"> + <path d="M 331.25714285714287 -443.1676092923146 L 331.25714285714287 -457.45332357802886 L 345.54285714285714 -457.45332357802886 L 345.54285714285714 -443.1676092923146 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 331.25714285714287 -450.31046643517175 L 338.4 -457.45332357802886 L 345.54285714285714 -450.31046643517175 L 338.4 -443.1676092923146 Z"/> + <g style="fill:rgb(179,179,179);clip-path:url(#clip30);"> + <path d="M 369.65714285714284 -454.49247254385045 L 369.65714285714284 -468.7781868295648 L 383.9428571428571 -468.7781868295648 L 383.9428571428571 -454.49247254385045 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 369.65714285714284 -461.6353296867076 L 376.8 -468.7781868295648 L 383.9428571428571 -461.6353296867076 L 376.8 -454.49247254385045 Z"/> + <g style="fill:rgb(179,179,179);clip-path:url(#clip31);"> + <path d="M 408.0571428571429 -448.0731338141305 L 408.0571428571429 -462.35884809984475 L 422.34285714285716 -462.35884809984475 L 422.34285714285716 -448.0731338141305 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 408.0571428571429 -455.21599095698764 L 415.2 -462.35884809984475 L 422.34285714285716 -455.21599095698764 L 415.2 -448.0731338141305 Z"/> + <g style="fill:rgb(179,179,179);clip-path:url(#clip32);"> + <path d="M 446.45714285714286 -452.24112635054837 L 446.45714285714286 -466.5268406362626 L 460.74285714285713 -466.5268406362626 L 460.74285714285713 -452.24112635054837 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 446.45714285714286 -459.3839834934055 L 453.6 -466.5268406362626 L 460.74285714285713 -459.3839834934055 L 453.6 -452.24112635054837 Z"/> + <g style="fill:rgb(179,179,179);clip-path:url(#clip33);"> + <path d="M 484.8571428571429 -448.63650264593275 L 484.8571428571429 -462.9222169316471 L 499.1428571428571 -462.9222169316471 L 499.1428571428571 -448.63650264593275 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 484.8571428571429 -455.7793597887899 L 492.0 -462.9222169316471 L 499.1428571428571 -455.7793597887899 L 492.0 -448.63650264593275 Z"/> + <g style="fill:rgb(179,179,179);clip-path:url(#clip34);"> + <path d="M 523.2571428571429 -454.6232013657426 L 523.2571428571429 -468.90891565145694 L 537.5428571428572 -468.90891565145694 L 537.5428571428572 -454.6232013657426 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 523.2571428571429 -461.76605850859977 L 530.4 -468.90891565145694 L 537.5428571428572 -461.76605850859977 L 530.4 -454.6232013657426 Z"/> + <g style="fill:rgb(179,179,179);clip-path:url(#clip35);"> + <path d="M 561.6571428571428 -454.612129869426 L 561.6571428571428 -468.8978441551403 L 575.9428571428572 -468.8978441551403 L 575.9428571428572 -454.612129869426 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 561.6571428571428 -461.75498701228315 L 568.8 -468.8978441551403 L 575.9428571428572 -461.75498701228315 L 568.8 -454.612129869426 Z"/> + <g style="fill:rgb(179,179,179);clip-path:url(#clip36);"> + <path d="M 600.0571428571428 -456.6952744840721 L 600.0571428571428 -470.98098876978645 L 614.3428571428572 -470.98098876978645 L 614.3428571428572 -456.6952744840721 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.0571428571428 -463.8381316269293 L 607.2 -470.98098876978645 L 614.3428571428572 -463.8381316269293 L 607.2 -456.6952744840721 Z"/> + <g style="fill:rgb(179,179,179);clip-path:url(#clip37);"> + <path d="M 638.4571428571428 -457.6397582852343 L 638.4571428571428 -471.9254725709485 L 652.7428571428572 -471.9254725709485 L 652.7428571428572 -457.6397582852343 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 638.4571428571428 -464.7826154280914 L 645.6 -471.9254725709485 L 652.7428571428572 -464.7826154280914 L 645.6 -457.6397582852343 Z"/> + <g style="fill:rgb(179,179,179);clip-path:url(#clip38);"> + <path d="M 676.8571428571429 -460.98249851928415 L 676.8571428571429 -475.2682128049984 L 691.1428571428571 -475.2682128049984 L 691.1428571428571 -460.98249851928415 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 676.8571428571429 -468.12535566214126 L 684.0 -475.2682128049984 L 691.1428571428571 -468.12535566214126 L 684.0 -460.98249851928415 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip39);"> + <path d="M 290 -114 L 290 -188 L 324 -188 L 324 -114 Z" style="stroke:none;"/> + </g> + <path d="M 300 -178.66666666666669 L 314 -178.66666666666669" style="stroke:rgb(0,138,0);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip40);"> + <path d="M 300.75 -173.66666666666669 L 300.75 -183.66666666666669 L 313.25 -183.66666666666669 L 313.25 -173.66666666666669 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -173.66666666666669 L 300.75 -183.66666666666669 L 313.25 -183.66666666666669 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-174.0"> + cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map + </text> + <path d="M 300 -160.66666666666666 L 314 -160.66666666666666" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip41);"> + <path d="M 299.85714285714283 -153.52380952380952 L 299.85714285714283 -167.8095238095238 L 314.14285714285717 -167.8095238095238 L 314.14285714285717 -153.52380952380952 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 299.85714285714283 -160.66666666666666 L 307.0 -167.8095238095238 L 314.14285714285717 -160.66666666666666 L 307.0 -153.52380952380952 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-156.0"> + cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map + </text> + <path d="M 300 -142.66666666666666 L 314 -142.66666666666666" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <path d="M 302.0 -137.66666666666666 L 312.0 -147.66666666666666" style="stroke-width:0.7;"/> + <path d="M 312.0 -137.66666666666666 L 302.0 -147.66666666666666" style="stroke-width:0.7;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-138.0"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map + </text> + <path d="M 300 -124.66666666666666 L 314 -124.66666666666666" style="stroke:rgb(0,0,128);stroke-width:2;"/> + <g style="fill:rgb(179,179,179);clip-path:url(#clip42);"> + <path d="M 299.85714285714283 -117.52380952380952 L 299.85714285714283 -131.8095238095238 L 314.14285714285717 -131.8095238095238 L 314.14285714285717 -117.52380952380952 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 299.85714285714283 -124.66666666666666 L 307.0 -131.8095238095238 L 314.14285714285717 -124.66666666666666 L 307.0 -117.52380952380952 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-120.0"> + cc_hash_mask_exp_nea_lc_1div8_1div2_sth_map + </text> + </g> + </g> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_text_find_timing_test_tree_like_local.pdf b/libstdc++-v3/doc/xml/images/pbds_text_find_timing_test_tree_like_local.pdf Binary files differnew file mode 100644 index 00000000000..cc094f788aa --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_text_find_timing_test_tree_like_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_text_find_timing_test_tree_like_local.png b/libstdc++-v3/doc/xml/images/pbds_text_find_timing_test_tree_like_local.png Binary files differnew file mode 100644 index 00000000000..937b343e8f9 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_text_find_timing_test_tree_like_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_text_find_timing_test_tree_like_local.svg b/libstdc++-v3/doc/xml/images/pbds_text_find_timing_test_tree_like_local.svg new file mode 100644 index 00000000000..a12fbdaefef --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_text_find_timing_test_tree_like_local.svg @@ -0,0 +1,542 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 456.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 332.15 -468.622253854465 L 344.65 -468.622253854465 L 338.4 -478.622253854465 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 370.55 -482.62170995411145 L 383.05 -482.62170995411145 L 376.8 -492.62170995411145 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 408.95 -489.1856562206765 L 421.45 -489.1856562206765 L 415.2 -499.1856562206765 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 447.35 -505.09425156126355 L 459.85 -505.09425156126355 L 453.6 -515.0942515612635 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 485.75 -501.21560504014326 L 498.25 -501.21560504014326 L 492.0 -511.21560504014326 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 524.15 -502.36798778919206 L 536.65 -502.36798778919206 L 530.4 -512.3679877891921 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 562.55 -506.37276039229425 L 575.05 -506.37276039229425 L 568.8 -516.3727603922943 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 600.95 -506.75006063753943 L 613.45 -506.75006063753943 L 607.2 -516.7500606375395 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 639.35 -507.93855641006166 L 651.85 -507.93855641006166 L 645.6 -517.9385564100617 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 677.75 -515.0 L 690.25 -515.0 L 684.0 -525.0 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 338.4 -403.52687529246896 M 342.4 -403.52687529246896 L 342.4 -403.527 M 342.4 -403.527 A 4 4 0 1 0 334.4 -403.527 A 4 4 0 1 0 342.4 -403.527 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 376.8 -413.02082746353784 M 380.8 -413.02082746353784 L 380.8 -413.021 M 380.8 -413.021 A 4 4 0 1 0 372.8 -413.021 A 4 4 0 1 0 380.8 -413.021 Z"/> + </clipPath> + <clipPath id="clip17"> + <path d="M 415.2 -418.247513860884 M 419.2 -418.247513860884 L 419.2 -418.248 M 419.2 -418.248 A 4 4 0 1 0 411.2 -418.248 A 4 4 0 1 0 419.2 -418.248 Z"/> + </clipPath> + <clipPath id="clip18"> + <path d="M 453.6 -422.1644294068791 M 457.6 -422.1644294068791 L 457.6 -422.164 M 457.6 -422.164 A 4 4 0 1 0 449.6 -422.164 A 4 4 0 1 0 457.6 -422.164 Z"/> + </clipPath> + <clipPath id="clip19"> + <path d="M 492.0 -425.3224324595811 M 496.0 -425.3224324595811 L 496 -425.322 M 496 -425.322 A 4 4 0 1 0 488 -425.322 A 4 4 0 1 0 496 -425.322 Z"/> + </clipPath> + <clipPath id="clip20"> + <path d="M 530.4 -429.79936936959007 M 534.4 -429.79936936959007 L 534.4 -429.799 M 534.4 -429.799 A 4 4 0 1 0 526.4 -429.799 A 4 4 0 1 0 534.4 -429.799 Z"/> + </clipPath> + <clipPath id="clip21"> + <path d="M 568.8 -428.9951808468676 M 572.8 -428.9951808468676 L 572.8 -428.995 M 572.8 -428.995 A 4 4 0 1 0 564.8 -428.995 A 4 4 0 1 0 572.8 -428.995 Z"/> + </clipPath> + <clipPath id="clip22"> + <path d="M 607.2 -431.82062068340343 M 611.2 -431.82062068340343 L 611.2 -431.821 M 611.2 -431.821 A 4 4 0 1 0 603.2 -431.821 A 4 4 0 1 0 611.2 -431.821 Z"/> + </clipPath> + <clipPath id="clip23"> + <path d="M 645.6 -433.77234095202164 M 649.6 -433.77234095202164 L 649.6 -433.772 M 649.6 -433.772 A 4 4 0 1 0 641.6 -433.772 A 4 4 0 1 0 649.6 -433.772 Z"/> + </clipPath> + <clipPath id="clip24"> + <path d="M 684.0 -438.55650806173026 M 688.0 -438.55650806173026 L 688 -438.557 M 688 -438.557 A 4 4 0 1 0 680 -438.557 A 4 4 0 1 0 688 -438.557 Z"/> + </clipPath> + <clipPath id="clip25"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip26"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip27"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip28"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip29"> + <path d="M 338.4 -393.9971163481256 L 332.15 -403.9971163481256 L 344.65 -403.9971163481256 Z"/> + </clipPath> + <clipPath id="clip30"> + <path d="M 376.8 -403.633364611687 L 370.55 -413.633364611687 L 383.05 -413.633364611687 Z"/> + </clipPath> + <clipPath id="clip31"> + <path d="M 415.2 -408.16797455918345 L 408.95 -418.16797455918345 L 421.45 -418.16797455918345 Z"/> + </clipPath> + <clipPath id="clip32"> + <path d="M 453.6 -413.2480528612343 L 447.35 -423.2480528612343 L 459.85 -423.2480528612343 Z"/> + </clipPath> + <clipPath id="clip33"> + <path d="M 492.0 -415.9101755916141 L 485.75 -425.9101755916141 L 498.25 -425.9101755916141 Z"/> + </clipPath> + <clipPath id="clip34"> + <path d="M 530.4 -419.83032513971136 L 524.15 -429.83032513971136 L 536.65 -429.83032513971136 Z"/> + </clipPath> + <clipPath id="clip35"> + <path d="M 568.8 -419.63143401043214 L 562.55 -429.63143401043214 L 575.05 -429.63143401043214 Z"/> + </clipPath> + <clipPath id="clip36"> + <path d="M 607.2 -422.79321006558655 L 600.95 -432.79321006558655 L 613.45 -432.79321006558655 Z"/> + </clipPath> + <clipPath id="clip37"> + <path d="M 645.6 -425.52701984256294 L 639.35 -435.52701984256294 L 651.85 -435.52701984256294 Z"/> + </clipPath> + <clipPath id="clip38"> + <path d="M 684.0 -432.30656624926803 L 677.75 -442.30656624926803 L 690.25 -442.30656624926803 Z"/> + </clipPath> + <clipPath id="clip39"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip40"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip41"> + <path d="M 290 -94 L 290 -186 L 324 -186 L 324 -94 Z"/> + </clipPath> + <clipPath id="clip42"> + <path d="M 300.75 -171.66666666666669 L 313.25 -171.66666666666669 L 307.0 -181.66666666666669 Z"/> + </clipPath> + <clipPath id="clip43"> + <path d="M 307.0 -158.66666666666666 M 311.0 -158.66666666666666 L 311 -158.667 M 311 -158.667 A 4 4 0 1 0 303 -158.667 A 4 4 0 1 0 311 -158.667 Z"/> + </clipPath> + <clipPath id="clip44"> + <path d="M 307.0 -117.66666666666666 L 300.75 -127.66666666666666 L 313.25 -127.66666666666666 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 8.16e-08 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.50048673219425"> + 1.63e-07 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.50048673219425"> + 2.45e-07 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.50048673219425"> + 3.27e-07 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321942"> + 4.08e-07 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 338.4 -473.622253854465 L 376.8 -487.62170995411145 L 415.2 -494.1856562206765 L 453.6 -510.09425156126355 L 492.0 -506.21560504014326 L 530.4 -507.36798778919206 L 568.8 -511.37276039229425 L 607.2 -511.75006063753943 L 645.6 -512.9385564100617 L 684.0 -520.0" style="stroke:rgb(147,147,147);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip3);"> + <path d="M 332.15 -468.622253854465 L 332.15 -478.622253854465 L 344.65 -478.622253854465 L 344.65 -468.622253854465 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 332.15 -468.622253854465 L 344.65 -468.622253854465 L 338.4 -478.622253854465 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip4);"> + <path d="M 370.55 -482.62170995411145 L 370.55 -492.62170995411145 L 383.05 -492.62170995411145 L 383.05 -482.62170995411145 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 370.55 -482.62170995411145 L 383.05 -482.62170995411145 L 376.8 -492.62170995411145 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 408.95 -489.1856562206765 L 408.95 -499.1856562206765 L 421.45 -499.1856562206765 L 421.45 -489.1856562206765 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 408.95 -489.1856562206765 L 421.45 -489.1856562206765 L 415.2 -499.1856562206765 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 447.35 -505.09425156126355 L 447.35 -515.0942515612635 L 459.85 -515.0942515612635 L 459.85 -505.09425156126355 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 447.35 -505.09425156126355 L 459.85 -505.09425156126355 L 453.6 -515.0942515612635 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 485.75 -501.21560504014326 L 485.75 -511.21560504014326 L 498.25 -511.21560504014326 L 498.25 -501.21560504014326 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 485.75 -501.21560504014326 L 498.25 -501.21560504014326 L 492.0 -511.21560504014326 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 524.15 -502.36798778919206 L 524.15 -512.3679877891921 L 536.65 -512.3679877891921 L 536.65 -502.36798778919206 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 524.15 -502.36798778919206 L 536.65 -502.36798778919206 L 530.4 -512.3679877891921 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 562.55 -506.37276039229425 L 562.55 -516.3727603922943 L 575.05 -516.3727603922943 L 575.05 -506.37276039229425 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 562.55 -506.37276039229425 L 575.05 -506.37276039229425 L 568.8 -516.3727603922943 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip10);"> + <path d="M 600.95 -506.75006063753943 L 600.95 -516.7500606375395 L 613.45 -516.7500606375395 L 613.45 -506.75006063753943 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.95 -506.75006063753943 L 613.45 -506.75006063753943 L 607.2 -516.7500606375395 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip11);"> + <path d="M 639.35 -507.93855641006166 L 639.35 -517.9385564100617 L 651.85 -517.9385564100617 L 651.85 -507.93855641006166 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 639.35 -507.93855641006166 L 651.85 -507.93855641006166 L 645.6 -517.9385564100617 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 677.75 -515.0 L 677.75 -525.0 L 690.25 -525.0 L 690.25 -515.0 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 677.75 -515.0 L 690.25 -515.0 L 684.0 -525.0 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip13);"> + <path d="M 338.4 -403.52687529246896 L 376.8 -413.02082746353784 L 415.2 -418.247513860884 L 453.6 -422.1644294068791 L 492.0 -425.3224324595811 L 530.4 -429.79936936959007 L 568.8 -428.9951808468676 L 607.2 -431.82062068340343 L 645.6 -433.77234095202164 L 684.0 -438.55650806173026" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip14);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip15);"> + <path d="M 330.4 -395.52687529246896 L 330.4 -411.52687529246896 L 346.4 -411.52687529246896 L 346.4 -395.52687529246896 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -403.52687529246896 M 342.4 -403.52687529246896 L 342.4 -403.527 M 342.4 -403.527 A 4 4 0 1 0 334.4 -403.527 A 4 4 0 1 0 342.4 -403.527 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip16);"> + <path d="M 368.8 -405.02082746353784 L 368.8 -421.02082746353784 L 384.8 -421.02082746353784 L 384.8 -405.02082746353784 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -413.02082746353784 M 380.8 -413.02082746353784 L 380.8 -413.021 M 380.8 -413.021 A 4 4 0 1 0 372.8 -413.021 A 4 4 0 1 0 380.8 -413.021 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip17);"> + <path d="M 407.2 -410.247513860884 L 407.2 -426.247513860884 L 423.2 -426.247513860884 L 423.2 -410.247513860884 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -418.247513860884 M 419.2 -418.247513860884 L 419.2 -418.248 M 419.2 -418.248 A 4 4 0 1 0 411.2 -418.248 A 4 4 0 1 0 419.2 -418.248 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip18);"> + <path d="M 445.6 -414.1644294068791 L 445.6 -430.1644294068791 L 461.6 -430.1644294068791 L 461.6 -414.1644294068791 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -422.1644294068791 M 457.6 -422.1644294068791 L 457.6 -422.164 M 457.6 -422.164 A 4 4 0 1 0 449.6 -422.164 A 4 4 0 1 0 457.6 -422.164 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip19);"> + <path d="M 484.0 -417.3224324595811 L 484.0 -433.3224324595811 L 500.0 -433.3224324595811 L 500.0 -417.3224324595811 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -425.3224324595811 M 496.0 -425.3224324595811 L 496 -425.322 M 496 -425.322 A 4 4 0 1 0 488 -425.322 A 4 4 0 1 0 496 -425.322 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip20);"> + <path d="M 522.4 -421.79936936959007 L 522.4 -437.79936936959007 L 538.4 -437.79936936959007 L 538.4 -421.79936936959007 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -429.79936936959007 M 534.4 -429.79936936959007 L 534.4 -429.799 M 534.4 -429.799 A 4 4 0 1 0 526.4 -429.799 A 4 4 0 1 0 534.4 -429.799 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip21);"> + <path d="M 560.8 -420.9951808468676 L 560.8 -436.9951808468676 L 576.8 -436.9951808468676 L 576.8 -420.9951808468676 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -428.9951808468676 M 572.8 -428.9951808468676 L 572.8 -428.995 M 572.8 -428.995 A 4 4 0 1 0 564.8 -428.995 A 4 4 0 1 0 572.8 -428.995 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip22);"> + <path d="M 599.2 -423.82062068340343 L 599.2 -439.82062068340343 L 615.2 -439.82062068340343 L 615.2 -423.82062068340343 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -431.82062068340343 M 611.2 -431.82062068340343 L 611.2 -431.821 M 611.2 -431.821 A 4 4 0 1 0 603.2 -431.821 A 4 4 0 1 0 611.2 -431.821 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip23);"> + <path d="M 637.6 -425.77234095202164 L 637.6 -441.77234095202164 L 653.6 -441.77234095202164 L 653.6 -425.77234095202164 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -433.77234095202164 M 649.6 -433.77234095202164 L 649.6 -433.772 M 649.6 -433.772 A 4 4 0 1 0 641.6 -433.772 A 4 4 0 1 0 649.6 -433.772 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip24);"> + <path d="M 676.0 -430.55650806173026 L 676.0 -446.55650806173026 L 692.0 -446.55650806173026 L 692.0 -430.55650806173026 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -438.55650806173026 M 688.0 -438.55650806173026 L 688 -438.557 M 688 -438.557 A 4 4 0 1 0 680 -438.557 A 4 4 0 1 0 688 -438.557 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip25);"> + <path d="M 338.4 -402.5658376677945 L 376.8 -409.8191653824575 L 415.2 -415.3277489630368 L 453.6 -420.7436244833559 L 492.0 -424.83032513971136 L 530.4 -426.7313793753966 L 568.8 -430.35992973395435 L 607.2 -431.82062068340343 L 645.6 -434.12646418220174 L 684.0 -436.1536444998689" style="stroke:rgb(255,68,0);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip26);"> + <path d="M 333.4 -397.5658376677945 L 343.4 -407.5658376677945" style="stroke-width:1;"/> + <path d="M 343.4 -397.5658376677945 L 333.4 -407.5658376677945" style="stroke-width:1;"/> + <path d="M 338.4 -395.4958376677945 L 338.4 -409.6358376677945" style="stroke-width:1;"/> + <path d="M 331.33 -402.5658376677945 L 345.47 -402.5658376677945" style="stroke-width:1;"/> + <path d="M 371.8 -404.8191653824575 L 381.8 -414.8191653824575" style="stroke-width:1;"/> + <path d="M 381.8 -404.8191653824575 L 371.8 -414.8191653824575" style="stroke-width:1;"/> + <path d="M 376.8 -402.7491653824575 L 376.8 -416.88916538245746" style="stroke-width:1;"/> + <path d="M 369.73 -409.8191653824575 L 383.87 -409.8191653824575" style="stroke-width:1;"/> + <path d="M 410.2 -410.3277489630368 L 420.2 -420.3277489630368" style="stroke-width:1;"/> + <path d="M 420.2 -410.3277489630368 L 410.2 -420.3277489630368" style="stroke-width:1;"/> + <path d="M 415.2 -408.2577489630368 L 415.2 -422.3977489630368" style="stroke-width:1;"/> + <path d="M 408.13 -415.3277489630368 L 422.27 -415.3277489630368" style="stroke-width:1;"/> + <path d="M 448.6 -415.7436244833559 L 458.6 -425.7436244833559" style="stroke-width:1;"/> + <path d="M 458.6 -415.7436244833559 L 448.6 -425.7436244833559" style="stroke-width:1;"/> + <path d="M 453.6 -413.6736244833559 L 453.6 -427.8136244833559" style="stroke-width:1;"/> + <path d="M 446.53 -420.7436244833559 L 460.66999999999996 -420.7436244833559" style="stroke-width:1;"/> + <path d="M 487.0 -419.83032513971136 L 497.0 -429.83032513971136" style="stroke-width:1;"/> + <path d="M 497.0 -419.83032513971136 L 487.0 -429.83032513971136" style="stroke-width:1;"/> + <path d="M 492.0 -417.76032513971137 L 492.0 -431.90032513971136" style="stroke-width:1;"/> + <path d="M 484.93 -424.83032513971136 L 499.07 -424.83032513971136" style="stroke-width:1;"/> + <path d="M 525.4 -421.7313793753966 L 535.4 -431.7313793753966" style="stroke-width:1;"/> + <path d="M 535.4 -421.7313793753966 L 525.4 -431.7313793753966" style="stroke-width:1;"/> + <path d="M 530.4 -419.66137937539656 L 530.4 -433.80137937539655" style="stroke-width:1;"/> + <path d="M 523.33 -426.7313793753966 L 537.47 -426.7313793753966" style="stroke-width:1;"/> + <path d="M 563.8 -425.35992973395435 L 573.8 -435.35992973395435" style="stroke-width:1;"/> + <path d="M 573.8 -425.35992973395435 L 563.8 -435.35992973395435" style="stroke-width:1;"/> + <path d="M 568.8 -423.2899297339543 L 568.8 -437.4299297339543" style="stroke-width:1;"/> + <path d="M 561.73 -430.35992973395435 L 575.87 -430.35992973395435" style="stroke-width:1;"/> + <path d="M 602.2 -426.82062068340343 L 612.2 -436.82062068340343" style="stroke-width:1;"/> + <path d="M 612.2 -426.82062068340343 L 602.2 -436.82062068340343" style="stroke-width:1;"/> + <path d="M 607.2 -424.75062068340344 L 607.2 -438.8906206834034" style="stroke-width:1;"/> + <path d="M 600.13 -431.82062068340343 L 614.27 -431.82062068340343" style="stroke-width:1;"/> + <path d="M 640.6 -429.12646418220174 L 650.6 -439.12646418220174" style="stroke-width:1;"/> + <path d="M 650.6 -429.12646418220174 L 640.6 -439.12646418220174" style="stroke-width:1;"/> + <path d="M 645.6 -427.0564641822017 L 645.6 -441.1964641822017" style="stroke-width:1;"/> + <path d="M 638.53 -434.12646418220174 L 652.6700000000001 -434.12646418220174" style="stroke-width:1;"/> + <path d="M 679.0 -431.1536444998689 L 689.0 -441.1536444998689" style="stroke-width:1;"/> + <path d="M 689.0 -431.1536444998689 L 679.0 -441.1536444998689" style="stroke-width:1;"/> + <path d="M 684.0 -429.0836444998689 L 684.0 -443.2236444998689" style="stroke-width:1;"/> + <path d="M 676.9300000000001 -436.1536444998689 L 691.0699999999999 -436.1536444998689" style="stroke-width:1;"/> + </g> + <g style="clip-path:url(#clip27);"> + <path d="M 338.4 -398.9971163481256 L 376.8 -408.633364611687 L 415.2 -413.16797455918345 L 453.6 -418.2480528612343 L 492.0 -420.9101755916141 L 530.4 -424.83032513971136 L 568.8 -424.63143401043214 L 607.2 -427.79321006558655 L 645.6 -430.52701984256294 L 684.0 -437.30656624926803" style="stroke:rgb(205,0,0);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip28);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip29);"> + <path d="M 332.15 -393.9971163481256 L 332.15 -403.9971163481256 L 344.65 -403.9971163481256 L 344.65 -393.9971163481256 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -393.9971163481256 L 332.15 -403.9971163481256 L 344.65 -403.9971163481256 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip30);"> + <path d="M 370.55 -403.633364611687 L 370.55 -413.633364611687 L 383.05 -413.633364611687 L 383.05 -403.633364611687 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -403.633364611687 L 370.55 -413.633364611687 L 383.05 -413.633364611687 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip31);"> + <path d="M 408.95 -408.16797455918345 L 408.95 -418.16797455918345 L 421.45 -418.16797455918345 L 421.45 -408.16797455918345 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -408.16797455918345 L 408.95 -418.16797455918345 L 421.45 -418.16797455918345 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip32);"> + <path d="M 447.35 -413.2480528612343 L 447.35 -423.2480528612343 L 459.85 -423.2480528612343 L 459.85 -413.2480528612343 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -413.2480528612343 L 447.35 -423.2480528612343 L 459.85 -423.2480528612343 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip33);"> + <path d="M 485.75 -415.9101755916141 L 485.75 -425.9101755916141 L 498.25 -425.9101755916141 L 498.25 -415.9101755916141 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -415.9101755916141 L 485.75 -425.9101755916141 L 498.25 -425.9101755916141 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip34);"> + <path d="M 524.15 -419.83032513971136 L 524.15 -429.83032513971136 L 536.65 -429.83032513971136 L 536.65 -419.83032513971136 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -419.83032513971136 L 524.15 -429.83032513971136 L 536.65 -429.83032513971136 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip35);"> + <path d="M 562.55 -419.63143401043214 L 562.55 -429.63143401043214 L 575.05 -429.63143401043214 L 575.05 -419.63143401043214 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -419.63143401043214 L 562.55 -429.63143401043214 L 575.05 -429.63143401043214 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip36);"> + <path d="M 600.95 -422.79321006558655 L 600.95 -432.79321006558655 L 613.45 -432.79321006558655 L 613.45 -422.79321006558655 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -422.79321006558655 L 600.95 -432.79321006558655 L 613.45 -432.79321006558655 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip37);"> + <path d="M 639.35 -425.52701984256294 L 639.35 -435.52701984256294 L 651.85 -435.52701984256294 L 651.85 -425.52701984256294 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -425.52701984256294 L 639.35 -435.52701984256294 L 651.85 -435.52701984256294 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip38);"> + <path d="M 677.75 -432.30656624926803 L 677.75 -442.30656624926803 L 690.25 -442.30656624926803 L 690.25 -432.30656624926803 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -432.30656624926803 L 677.75 -442.30656624926803 L 690.25 -442.30656624926803 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip39);"> + <path d="M 338.4 -322.3193038075475 L 376.8 -324.7628079958252 L 415.2 -326.1047571680922 L 453.6 -327.0899959084973 L 492.0 -327.74984013739606 L 530.4 -328.4702680056742 L 568.8 -329.30447884791124 L 607.2 -330.3272859127358 L 645.6 -331.0778978006336 L 684.0 -332.3542506302629" style="stroke:rgb(137,42,226);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip40);"> + <path d="M 331.25714285714287 -322.3193038075475 L 345.54285714285714 -322.3193038075475" style="stroke-width:1;"/> + <path d="M 338.4 -315.17644666469033 L 338.4 -329.4621609504046" style="stroke-width:1;"/> + <path d="M 369.65714285714284 -324.7628079958252 L 383.9428571428571 -324.7628079958252" style="stroke-width:1;"/> + <path d="M 376.8 -317.61995085296803 L 376.8 -331.90566513868237" style="stroke-width:1;"/> + <path d="M 408.0571428571429 -326.1047571680922 L 422.34285714285716 -326.1047571680922" style="stroke-width:1;"/> + <path d="M 415.2 -318.961900025235 L 415.2 -333.2476143109493" style="stroke-width:1;"/> + <path d="M 446.45714285714286 -327.0899959084973 L 460.74285714285713 -327.0899959084973" style="stroke-width:1;"/> + <path d="M 453.6 -319.9471387656402 L 453.6 -334.2328530513545" style="stroke-width:1;"/> + <path d="M 484.8571428571429 -327.74984013739606 L 499.1428571428571 -327.74984013739606" style="stroke-width:1;"/> + <path d="M 492.0 -320.60698299453895 L 492.0 -334.89269728025323" style="stroke-width:1;"/> + <path d="M 523.2571428571429 -328.4702680056742 L 537.5428571428572 -328.4702680056742" style="stroke-width:1;"/> + <path d="M 530.4 -321.3274108628171 L 530.4 -335.61312514853137" style="stroke-width:1;"/> + <path d="M 561.6571428571428 -329.30447884791124 L 575.9428571428572 -329.30447884791124" style="stroke-width:1;"/> + <path d="M 568.8 -322.16162170505413 L 568.8 -336.4473359907684" style="stroke-width:1;"/> + <path d="M 600.0571428571428 -330.3272859127358 L 614.3428571428572 -330.3272859127358" style="stroke-width:1;"/> + <path d="M 607.2 -323.1844287698787 L 607.2 -337.470143055593" style="stroke-width:1;"/> + <path d="M 638.4571428571428 -331.0778978006336 L 652.7428571428572 -331.0778978006336" style="stroke-width:1;"/> + <path d="M 645.6 -323.9350406577764 L 645.6 -338.2207549434907" style="stroke-width:1;"/> + <path d="M 676.8571428571429 -332.3542506302629 L 691.1428571428571 -332.3542506302629" style="stroke-width:1;"/> + <path d="M 684.0 -325.21139348740576 L 684.0 -339.49710777312004" style="stroke-width:1;"/> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip41);"> + <path d="M 290 -94 L 290 -186 L 324 -186 L 324 -94 Z" style="stroke:none;"/> + </g> + <path d="M 300 -176.66666666666669 L 314 -176.66666666666669" style="stroke:rgb(147,147,147);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip42);"> + <path d="M 300.75 -171.66666666666669 L 300.75 -181.66666666666669 L 313.25 -181.66666666666669 L 313.25 -171.66666666666669 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 300.75 -171.66666666666669 L 313.25 -171.66666666666669 L 307.0 -181.66666666666669 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-172.0"> + splay_tree_map + </text> + <path d="M 300 -158.66666666666666 L 314 -158.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip43);"> + <path d="M 299.0 -150.66666666666666 L 299.0 -166.66666666666666 L 315.0 -166.66666666666666 L 315.0 -150.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -158.66666666666666 M 311.0 -158.66666666666666 L 311 -158.667 M 311 -158.667 A 4 4 0 1 0 303 -158.667 A 4 4 0 1 0 311 -158.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-154.0"> + n_map + </text> + <path d="M 300 -140.66666666666666 L 314 -140.66666666666666" style="stroke:rgb(255,68,0);stroke-width:2;"/> + <path d="M 302.0 -135.66666666666666 L 312.0 -145.66666666666666" style="stroke-width:1;"/> + <path d="M 312.0 -135.66666666666666 L 302.0 -145.66666666666666" style="stroke-width:1;"/> + <path d="M 307.0 -133.59666666666666 L 307.0 -147.73666666666665" style="stroke-width:1;"/> + <path d="M 299.93 -140.66666666666666 L 314.07 -140.66666666666666" style="stroke-width:1;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-136.0"> + ov_tree_map + </text> + <path d="M 300 -122.66666666666666 L 314 -122.66666666666666" style="stroke:rgb(205,0,0);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip44);"> + <path d="M 300.75 -117.66666666666666 L 300.75 -127.66666666666666 L 313.25 -127.66666666666666 L 313.25 -117.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -117.66666666666666 L 300.75 -127.66666666666666 L 313.25 -127.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-118.0"> + rb_tree_map + </text> + <path d="M 300 -104.66666666666666 L 314 -104.66666666666666" style="stroke:rgb(137,42,226);stroke-width:2;"/> + <path d="M 299.85714285714283 -104.66666666666666 L 314.14285714285717 -104.66666666666666" style="stroke-width:1;"/> + <path d="M 307.0 -97.52380952380952 L 307.0 -111.8095238095238" style="stroke-width:1;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-100.0"> + pat_trie_map + </text> + </g> + </g> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/node_invariant_invalidations.png b/libstdc++-v3/doc/xml/images/pbds_tree_node_invalidations.png Binary files differindex bbd91842ba8..bbd91842ba8 100644 --- a/libstdc++-v3/doc/html/ext/pb_ds/node_invariant_invalidations.png +++ b/libstdc++-v3/doc/xml/images/pbds_tree_node_invalidations.png diff --git a/libstdc++-v3/doc/xml/images/pbds_tree_node_invariants.png b/libstdc++-v3/doc/xml/images/pbds_tree_node_invariants.png Binary files differnew file mode 100644 index 00000000000..b375f5168d7 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_tree_node_invariants.png diff --git a/libstdc++-v3/doc/html/ext/pb_ds/tree_node_updator_policy_cd.png b/libstdc++-v3/doc/xml/images/pbds_tree_node_updator_policy_cd.png Binary files differindex 5cae5781a18..5cae5781a18 100644 --- a/libstdc++-v3/doc/html/ext/pb_ds/tree_node_updator_policy_cd.png +++ b/libstdc++-v3/doc/xml/images/pbds_tree_node_updator_policy_cd.png diff --git a/libstdc++-v3/doc/xml/images/pbds_tree_order_statistics_timing_test_local.pdf b/libstdc++-v3/doc/xml/images/pbds_tree_order_statistics_timing_test_local.pdf Binary files differnew file mode 100644 index 00000000000..bf8bf8a47f4 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_tree_order_statistics_timing_test_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_tree_order_statistics_timing_test_local.png b/libstdc++-v3/doc/xml/images/pbds_tree_order_statistics_timing_test_local.png Binary files differnew file mode 100644 index 00000000000..ea82ea03e11 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_tree_order_statistics_timing_test_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_tree_order_statistics_timing_test_local.svg b/libstdc++-v3/doc/xml/images/pbds_tree_order_statistics_timing_test_local.svg new file mode 100644 index 00000000000..323dd9a3e97 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_tree_order_statistics_timing_test_local.svg @@ -0,0 +1,446 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 416.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 338.4 -322.06561176470586 M 342.4 -322.06561176470586 L 342.4 -322.066 M 342.4 -322.066 A 4 4 0 1 0 334.4 -322.066 A 4 4 0 1 0 342.4 -322.066 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 376.8 -344.57510588235294 M 380.8 -344.57510588235294 L 380.8 -344.575 M 380.8 -344.575 A 4 4 0 1 0 372.8 -344.575 A 4 4 0 1 0 380.8 -344.575 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 415.2 -365.5832941176471 M 419.2 -365.5832941176471 L 419.2 -365.583 M 419.2 -365.583 A 4 4 0 1 0 411.2 -365.583 A 4 4 0 1 0 419.2 -365.583 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 453.6 -388.23527058823527 M 457.6 -388.23527058823527 L 457.6 -388.235 M 457.6 -388.235 A 4 4 0 1 0 449.6 -388.235 A 4 4 0 1 0 457.6 -388.235 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 492.0 -409.1637411764706 M 496.0 -409.1637411764706 L 496 -409.164 M 496 -409.164 A 4 4 0 1 0 488 -409.164 A 4 4 0 1 0 496 -409.164 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 530.4 -432.1948941176471 M 534.4 -432.1948941176471 L 534.4 -432.195 M 534.4 -432.195 A 4 4 0 1 0 526.4 -432.195 A 4 4 0 1 0 534.4 -432.195 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 568.8 -454.4516470588235 M 572.8 -454.4516470588235 L 572.8 -454.452 M 572.8 -454.452 A 4 4 0 1 0 564.8 -454.452 A 4 4 0 1 0 572.8 -454.452 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 607.2 -477.41938823529415 M 611.2 -477.41938823529415 L 611.2 -477.419 M 611.2 -477.419 A 4 4 0 1 0 603.2 -477.419 A 4 4 0 1 0 611.2 -477.419 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 645.6 -498.4314588235294 M 649.6 -498.4314588235294 L 649.6 -498.431 M 649.6 -498.431 A 4 4 0 1 0 641.6 -498.431 A 4 4 0 1 0 649.6 -498.431 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 684.0 -520.0 M 688.0 -520.0 L 688 -520 M 688 -520 A 4 4 0 1 0 680 -520 A 4 4 0 1 0 688 -520 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 332.15 -298.8908164705882 L 344.65 -298.8908164705882 L 338.4 -308.8908164705882 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 370.55 -302.3455670588235 L 383.05 -302.3455670588235 L 376.8 -312.3455670588235 Z"/> + </clipPath> + <clipPath id="clip17"> + <path d="M 408.95 -305.83665647058825 L 421.45 -305.83665647058825 L 415.2 -315.83665647058825 Z"/> + </clipPath> + <clipPath id="clip18"> + <path d="M 447.35 -313.0193717647059 L 459.85 -313.0193717647059 L 453.6 -323.0193717647059 Z"/> + </clipPath> + <clipPath id="clip19"> + <path d="M 485.75 -323.3473882352941 L 498.25 -323.3473882352941 L 492.0 -333.34738823529415 Z"/> + </clipPath> + <clipPath id="clip20"> + <path d="M 524.15 -332.54545882352943 L 536.65 -332.54545882352943 L 530.4 -342.54545882352943 Z"/> + </clipPath> + <clipPath id="clip21"> + <path d="M 562.55 -341.8346352941177 L 575.05 -341.8346352941177 L 568.8 -351.8346352941177 Z"/> + </clipPath> + <clipPath id="clip22"> + <path d="M 600.95 -350.7190117647059 L 613.45 -350.7190117647059 L 607.2 -360.7190117647059 Z"/> + </clipPath> + <clipPath id="clip23"> + <path d="M 639.35 -358.2678588235294 L 651.85 -358.2678588235294 L 645.6 -368.2678588235294 Z"/> + </clipPath> + <clipPath id="clip24"> + <path d="M 677.75 -367.45376470588235 L 690.25 -367.45376470588235 L 684.0 -377.45376470588235 Z"/> + </clipPath> + <clipPath id="clip25"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip26"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip27"> + <path d="M 338.4 -296.21275647058826 L 332.15 -306.21275647058826 L 344.65 -306.21275647058826 Z"/> + </clipPath> + <clipPath id="clip28"> + <path d="M 376.8 -296.2785778823529 L 370.55 -306.2785778823529 L 383.05 -306.2785778823529 Z"/> + </clipPath> + <clipPath id="clip29"> + <path d="M 415.2 -296.3372143529412 L 408.95 -306.3372143529412 L 421.45 -306.3372143529412 Z"/> + </clipPath> + <clipPath id="clip30"> + <path d="M 453.6 -296.40190211764707 L 447.35 -306.40190211764707 L 459.85 -306.40190211764707 Z"/> + </clipPath> + <clipPath id="clip31"> + <path d="M 492.0 -296.4520621176471 L 485.75 -306.4520621176471 L 498.25 -306.4520621176471 Z"/> + </clipPath> + <clipPath id="clip32"> + <path d="M 530.4 -296.46631811764706 L 524.15 -306.46631811764706 L 536.65 -306.46631811764706 Z"/> + </clipPath> + <clipPath id="clip33"> + <path d="M 568.8 -296.4786277647059 L 562.55 -306.4786277647059 L 575.05 -306.4786277647059 Z"/> + </clipPath> + <clipPath id="clip34"> + <path d="M 607.2 -296.51428070588236 L 600.95 -306.51428070588236 L 613.45 -306.51428070588236 Z"/> + </clipPath> + <clipPath id="clip35"> + <path d="M 645.6 -296.51739952941176 L 639.35 -306.51739952941176 L 651.85 -306.51739952941176 Z"/> + </clipPath> + <clipPath id="clip36"> + <path d="M 684.0 -296.52937011764703 L 677.75 -306.52937011764703 L 690.25 -306.52937011764703 Z"/> + </clipPath> + <clipPath id="clip37"> + <path d="M 290 -134 L 290 -190 L 324 -190 L 324 -134 Z"/> + </clipPath> + <clipPath id="clip38"> + <path d="M 307.0 -180.66666666666669 M 311.0 -180.66666666666669 L 311 -180.667 M 311 -180.667 A 4 4 0 1 0 303 -180.667 A 4 4 0 1 0 311 -180.667 Z"/> + </clipPath> + <clipPath id="clip39"> + <path d="M 300.75 -157.66666666666666 L 313.25 -157.66666666666666 L 307.0 -167.66666666666666 Z"/> + </clipPath> + <clipPath id="clip40"> + <path d="M 307.0 -139.66666666666666 L 300.75 -149.66666666666666 L 313.25 -149.66666666666666 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 1.70e-06 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.5004867321942"> + 3.40e-06 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.50048673219425"> + 5.10e-06 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.5004867321942"> + 6.80e-06 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321942"> + 8.50e-06 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 338.4 -322.06561176470586 L 376.8 -344.57510588235294 L 415.2 -365.5832941176471 L 453.6 -388.23527058823527 L 492.0 -409.1637411764706 L 530.4 -432.1948941176471 L 568.8 -454.4516470588235 L 607.2 -477.41938823529415 L 645.6 -498.4314588235294 L 684.0 -520.0" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip3);"> + <path d="M 330.4 -314.06561176470586 L 330.4 -330.06561176470586 L 346.4 -330.06561176470586 L 346.4 -314.06561176470586 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -322.06561176470586 M 342.4 -322.06561176470586 L 342.4 -322.066 M 342.4 -322.066 A 4 4 0 1 0 334.4 -322.066 A 4 4 0 1 0 342.4 -322.066 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip4);"> + <path d="M 368.8 -336.57510588235294 L 368.8 -352.57510588235294 L 384.8 -352.57510588235294 L 384.8 -336.57510588235294 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -344.57510588235294 M 380.8 -344.57510588235294 L 380.8 -344.575 M 380.8 -344.575 A 4 4 0 1 0 372.8 -344.575 A 4 4 0 1 0 380.8 -344.575 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 407.2 -357.5832941176471 L 407.2 -373.5832941176471 L 423.2 -373.5832941176471 L 423.2 -357.5832941176471 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -365.5832941176471 M 419.2 -365.5832941176471 L 419.2 -365.583 M 419.2 -365.583 A 4 4 0 1 0 411.2 -365.583 A 4 4 0 1 0 419.2 -365.583 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 445.6 -380.23527058823527 L 445.6 -396.23527058823527 L 461.6 -396.23527058823527 L 461.6 -380.23527058823527 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -388.23527058823527 M 457.6 -388.23527058823527 L 457.6 -388.235 M 457.6 -388.235 A 4 4 0 1 0 449.6 -388.235 A 4 4 0 1 0 457.6 -388.235 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 484.0 -401.1637411764706 L 484.0 -417.1637411764706 L 500.0 -417.1637411764706 L 500.0 -401.1637411764706 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -409.1637411764706 M 496.0 -409.1637411764706 L 496 -409.164 M 496 -409.164 A 4 4 0 1 0 488 -409.164 A 4 4 0 1 0 496 -409.164 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 522.4 -424.1948941176471 L 522.4 -440.1948941176471 L 538.4 -440.1948941176471 L 538.4 -424.1948941176471 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -432.1948941176471 M 534.4 -432.1948941176471 L 534.4 -432.195 M 534.4 -432.195 A 4 4 0 1 0 526.4 -432.195 A 4 4 0 1 0 534.4 -432.195 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 560.8 -446.4516470588235 L 560.8 -462.4516470588235 L 576.8 -462.4516470588235 L 576.8 -446.4516470588235 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -454.4516470588235 M 572.8 -454.4516470588235 L 572.8 -454.452 M 572.8 -454.452 A 4 4 0 1 0 564.8 -454.452 A 4 4 0 1 0 572.8 -454.452 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip10);"> + <path d="M 599.2 -469.41938823529415 L 599.2 -485.41938823529415 L 615.2 -485.41938823529415 L 615.2 -469.41938823529415 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -477.41938823529415 M 611.2 -477.41938823529415 L 611.2 -477.419 M 611.2 -477.419 A 4 4 0 1 0 603.2 -477.419 A 4 4 0 1 0 611.2 -477.419 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip11);"> + <path d="M 637.6 -490.4314588235294 L 637.6 -506.4314588235294 L 653.6 -506.4314588235294 L 653.6 -490.4314588235294 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -498.4314588235294 M 649.6 -498.4314588235294 L 649.6 -498.431 M 649.6 -498.431 A 4 4 0 1 0 641.6 -498.431 A 4 4 0 1 0 649.6 -498.431 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 676.0 -512.0 L 676.0 -528.0 L 692.0 -528.0 L 692.0 -512.0 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -520.0 M 688.0 -520.0 L 688 -520 M 688 -520 A 4 4 0 1 0 680 -520 A 4 4 0 1 0 688 -520 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip13);"> + <path d="M 338.4 -303.8908164705882 L 376.8 -307.3455670588235 L 415.2 -310.83665647058825 L 453.6 -318.0193717647059 L 492.0 -328.3473882352941 L 530.4 -337.54545882352943 L 568.8 -346.8346352941177 L 607.2 -355.7190117647059 L 645.6 -363.2678588235294 L 684.0 -372.45376470588235" style="stroke:rgb(147,147,147);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip14);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip15);"> + <path d="M 332.15 -298.8908164705882 L 332.15 -308.8908164705882 L 344.65 -308.8908164705882 L 344.65 -298.8908164705882 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 332.15 -298.8908164705882 L 344.65 -298.8908164705882 L 338.4 -308.8908164705882 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip16);"> + <path d="M 370.55 -302.3455670588235 L 370.55 -312.3455670588235 L 383.05 -312.3455670588235 L 383.05 -302.3455670588235 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 370.55 -302.3455670588235 L 383.05 -302.3455670588235 L 376.8 -312.3455670588235 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip17);"> + <path d="M 408.95 -305.83665647058825 L 408.95 -315.83665647058825 L 421.45 -315.83665647058825 L 421.45 -305.83665647058825 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 408.95 -305.83665647058825 L 421.45 -305.83665647058825 L 415.2 -315.83665647058825 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip18);"> + <path d="M 447.35 -313.0193717647059 L 447.35 -323.0193717647059 L 459.85 -323.0193717647059 L 459.85 -313.0193717647059 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 447.35 -313.0193717647059 L 459.85 -313.0193717647059 L 453.6 -323.0193717647059 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip19);"> + <path d="M 485.75 -323.3473882352941 L 485.75 -333.34738823529415 L 498.25 -333.34738823529415 L 498.25 -323.3473882352941 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 485.75 -323.3473882352941 L 498.25 -323.3473882352941 L 492.0 -333.34738823529415 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip20);"> + <path d="M 524.15 -332.54545882352943 L 524.15 -342.54545882352943 L 536.65 -342.54545882352943 L 536.65 -332.54545882352943 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 524.15 -332.54545882352943 L 536.65 -332.54545882352943 L 530.4 -342.54545882352943 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip21);"> + <path d="M 562.55 -341.8346352941177 L 562.55 -351.8346352941177 L 575.05 -351.8346352941177 L 575.05 -341.8346352941177 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 562.55 -341.8346352941177 L 575.05 -341.8346352941177 L 568.8 -351.8346352941177 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip22);"> + <path d="M 600.95 -350.7190117647059 L 600.95 -360.7190117647059 L 613.45 -360.7190117647059 L 613.45 -350.7190117647059 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.95 -350.7190117647059 L 613.45 -350.7190117647059 L 607.2 -360.7190117647059 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip23);"> + <path d="M 639.35 -358.2678588235294 L 639.35 -368.2678588235294 L 651.85 -368.2678588235294 L 651.85 -358.2678588235294 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 639.35 -358.2678588235294 L 651.85 -358.2678588235294 L 645.6 -368.2678588235294 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip24);"> + <path d="M 677.75 -367.45376470588235 L 677.75 -377.45376470588235 L 690.25 -377.45376470588235 L 690.25 -367.45376470588235 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 677.75 -367.45376470588235 L 690.25 -367.45376470588235 L 684.0 -377.45376470588235 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip25);"> + <path d="M 338.4 -301.21275647058826 L 376.8 -301.2785778823529 L 415.2 -301.3372143529412 L 453.6 -301.40190211764707 L 492.0 -301.4520621176471 L 530.4 -301.46631811764706 L 568.8 -301.4786277647059 L 607.2 -301.51428070588236 L 645.6 -301.51739952941176 L 684.0 -301.52937011764703" style="stroke:rgb(205,0,0);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip26);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip27);"> + <path d="M 332.15 -296.21275647058826 L 332.15 -306.21275647058826 L 344.65 -306.21275647058826 L 344.65 -296.21275647058826 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -296.21275647058826 L 332.15 -306.21275647058826 L 344.65 -306.21275647058826 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip28);"> + <path d="M 370.55 -296.2785778823529 L 370.55 -306.2785778823529 L 383.05 -306.2785778823529 L 383.05 -296.2785778823529 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -296.2785778823529 L 370.55 -306.2785778823529 L 383.05 -306.2785778823529 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip29);"> + <path d="M 408.95 -296.3372143529412 L 408.95 -306.3372143529412 L 421.45 -306.3372143529412 L 421.45 -296.3372143529412 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -296.3372143529412 L 408.95 -306.3372143529412 L 421.45 -306.3372143529412 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip30);"> + <path d="M 447.35 -296.40190211764707 L 447.35 -306.40190211764707 L 459.85 -306.40190211764707 L 459.85 -296.40190211764707 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -296.40190211764707 L 447.35 -306.40190211764707 L 459.85 -306.40190211764707 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip31);"> + <path d="M 485.75 -296.4520621176471 L 485.75 -306.4520621176471 L 498.25 -306.4520621176471 L 498.25 -296.4520621176471 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -296.4520621176471 L 485.75 -306.4520621176471 L 498.25 -306.4520621176471 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip32);"> + <path d="M 524.15 -296.46631811764706 L 524.15 -306.46631811764706 L 536.65 -306.46631811764706 L 536.65 -296.46631811764706 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -296.46631811764706 L 524.15 -306.46631811764706 L 536.65 -306.46631811764706 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip33);"> + <path d="M 562.55 -296.4786277647059 L 562.55 -306.4786277647059 L 575.05 -306.4786277647059 L 575.05 -296.4786277647059 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -296.4786277647059 L 562.55 -306.4786277647059 L 575.05 -306.4786277647059 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip34);"> + <path d="M 600.95 -296.51428070588236 L 600.95 -306.51428070588236 L 613.45 -306.51428070588236 L 613.45 -296.51428070588236 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -296.51428070588236 L 600.95 -306.51428070588236 L 613.45 -306.51428070588236 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip35);"> + <path d="M 639.35 -296.51739952941176 L 639.35 -306.51739952941176 L 651.85 -306.51739952941176 L 651.85 -296.51739952941176 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -296.51739952941176 L 639.35 -306.51739952941176 L 651.85 -306.51739952941176 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip36);"> + <path d="M 677.75 -296.52937011764703 L 677.75 -306.52937011764703 L 690.25 -306.52937011764703 L 690.25 -296.52937011764703 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -296.52937011764703 L 677.75 -306.52937011764703 L 690.25 -306.52937011764703 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip37);"> + <path d="M 290 -134 L 290 -190 L 324 -190 L 324 -134 Z" style="stroke:none;"/> + </g> + <path d="M 300 -180.66666666666669 L 314 -180.66666666666669" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip38);"> + <path d="M 299.0 -172.66666666666669 L 299.0 -188.66666666666669 L 315.0 -188.66666666666669 L 315.0 -172.66666666666669 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -180.66666666666669 M 311.0 -180.66666666666669 L 311 -180.667 M 311 -180.667 A 4 4 0 1 0 303 -180.667 A 4 4 0 1 0 311 -180.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-176.0"> + n_set + </text> + <path d="M 300 -162.66666666666666 L 314 -162.66666666666666" style="stroke:rgb(147,147,147);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip39);"> + <path d="M 300.75 -157.66666666666666 L 300.75 -167.66666666666666 L 313.25 -167.66666666666666 L 313.25 -157.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 300.75 -157.66666666666666 L 313.25 -157.66666666666666 L 307.0 -167.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-158.0"> + splay_tree_ost_set + </text> + <path d="M 300 -144.66666666666666 L 314 -144.66666666666666" style="stroke:rgb(205,0,0);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip40);"> + <path d="M 300.75 -139.66666666666666 L 300.75 -149.66666666666666 L 313.25 -149.66666666666666 L 313.25 -139.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -139.66666666666666 L 300.75 -149.66666666666666 L 313.25 -149.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-140.0"> + rb_tree_ost_set + </text> + </g> + </g> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_tree_split_join_timing_test_local.pdf b/libstdc++-v3/doc/xml/images/pbds_tree_split_join_timing_test_local.pdf Binary files differnew file mode 100644 index 00000000000..08ffc543474 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_tree_split_join_timing_test_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_tree_split_join_timing_test_local.png b/libstdc++-v3/doc/xml/images/pbds_tree_split_join_timing_test_local.png Binary files differnew file mode 100644 index 00000000000..4fa7e32445c --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_tree_split_join_timing_test_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_tree_split_join_timing_test_local.svg b/libstdc++-v3/doc/xml/images/pbds_tree_split_join_timing_test_local.svg new file mode 100644 index 00000000000..e103d8cb2bf --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_tree_split_join_timing_test_local.svg @@ -0,0 +1,505 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 436.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 338.4 -320.7875964323357 M 342.4 -320.7875964323357 L 342.4 -320.788 M 342.4 -320.788 A 4 4 0 1 0 334.4 -320.788 A 4 4 0 1 0 342.4 -320.788 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 376.8 -342.4589692036527 M 380.8 -342.4589692036527 L 380.8 -342.459 M 380.8 -342.459 A 4 4 0 1 0 372.8 -342.459 A 4 4 0 1 0 380.8 -342.459 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 415.2 -366.65452645191004 M 419.2 -366.65452645191004 L 419.2 -366.655 M 419.2 -366.655 A 4 4 0 1 0 411.2 -366.655 A 4 4 0 1 0 419.2 -366.655 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 453.6 -387.27707855415713 M 457.6 -387.27707855415713 L 457.6 -387.277 M 457.6 -387.277 A 4 4 0 1 0 449.6 -387.277 A 4 4 0 1 0 457.6 -387.277 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 492.0 -408.5794885875486 M 496.0 -408.5794885875486 L 496 -408.579 M 496 -408.579 A 4 4 0 1 0 488 -408.579 A 4 4 0 1 0 496 -408.579 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 530.4 -431.02220490155264 M 534.4 -431.02220490155264 L 534.4 -431.022 M 534.4 -431.022 A 4 4 0 1 0 526.4 -431.022 A 4 4 0 1 0 534.4 -431.022 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 568.8 -452.9573173432061 M 572.8 -452.9573173432061 L 572.8 -452.957 M 572.8 -452.957 A 4 4 0 1 0 564.8 -452.957 A 4 4 0 1 0 572.8 -452.957 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 607.2 -472.75971409085673 M 611.2 -472.75971409085673 L 611.2 -472.76 M 611.2 -472.76 A 4 4 0 1 0 603.2 -472.76 A 4 4 0 1 0 611.2 -472.76 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 645.6 -494.29049715242286 M 649.6 -494.29049715242286 L 649.6 -494.29 M 649.6 -494.29 A 4 4 0 1 0 641.6 -494.29 A 4 4 0 1 0 649.6 -494.29 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 684.0 -520.0 M 688.0 -520.0 L 688 -520 M 688 -520 A 4 4 0 1 0 680 -520 A 4 4 0 1 0 688 -520 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 332.15 -296.22444576317724 L 344.65 -296.22444576317724 L 338.4 -306.22444576317724 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 370.55 -297.33312666625335 L 383.05 -297.33312666625335 L 376.8 -307.33312666625335 Z"/> + </clipPath> + <clipPath id="clip17"> + <path d="M 408.95 -298.46445975749094 L 421.45 -298.46445975749094 L 415.2 -308.46445975749094 Z"/> + </clipPath> + <clipPath id="clip18"> + <path d="M 447.35 -299.84986758544943 L 459.85 -299.84986758544943 L 453.6 -309.84986758544943 Z"/> + </clipPath> + <clipPath id="clip19"> + <path d="M 485.75 -301.48649548727667 L 498.25 -301.48649548727667 L 492.0 -311.48649548727667 Z"/> + </clipPath> + <clipPath id="clip20"> + <path d="M 524.15 -302.97635669557053 L 536.65 -302.97635669557053 L 530.4 -312.97635669557053 Z"/> + </clipPath> + <clipPath id="clip21"> + <path d="M 562.55 -304.8998343710973 L 575.05 -304.8998343710973 L 568.8 -314.8998343710973 Z"/> + </clipPath> + <clipPath id="clip22"> + <path d="M 600.95 -307.1955483910968 L 613.45 -307.1955483910968 L 607.2 -317.1955483910968 Z"/> + </clipPath> + <clipPath id="clip23"> + <path d="M 639.35 -308.8781431848578 L 651.85 -308.8781431848578 L 645.6 -318.8781431848578 Z"/> + </clipPath> + <clipPath id="clip24"> + <path d="M 677.75 -310.5510925307565 L 690.25 -310.5510925307565 L 684.0 -320.5510925307565 Z"/> + </clipPath> + <clipPath id="clip25"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip26"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip27"> + <path d="M 338.4 -296.28165593474046 L 332.15 -306.28165593474046 L 344.65 -306.28165593474046 Z"/> + </clipPath> + <clipPath id="clip28"> + <path d="M 376.8 -297.48556371398456 L 370.55 -307.48556371398456 L 383.05 -307.48556371398456 Z"/> + </clipPath> + <clipPath id="clip29"> + <path d="M 415.2 -298.6490190694667 L 408.95 -308.6490190694667 L 421.45 -308.6490190694667 Z"/> + </clipPath> + <clipPath id="clip30"> + <path d="M 453.6 -300.2742672913917 L 447.35 -310.2742672913917 L 459.85 -310.2742672913917 Z"/> + </clipPath> + <clipPath id="clip31"> + <path d="M 492.0 -301.72616050946385 L 485.75 -311.72616050946385 L 498.25 -311.72616050946385 Z"/> + </clipPath> + <clipPath id="clip32"> + <path d="M 530.4 -303.0200632401265 L 524.15 -313.0200632401265 L 536.65 -313.0200632401265 Z"/> + </clipPath> + <clipPath id="clip33"> + <path d="M 568.8 -304.2359547576238 L 562.55 -314.2359547576238 L 575.05 -314.2359547576238 Z"/> + </clipPath> + <clipPath id="clip34"> + <path d="M 607.2 -305.4805098181625 L 600.95 -315.4805098181625 L 613.45 -315.4805098181625 Z"/> + </clipPath> + <clipPath id="clip35"> + <path d="M 645.6 -306.7510783592996 L 639.35 -316.7510783592996 L 651.85 -316.7510783592996 Z"/> + </clipPath> + <clipPath id="clip36"> + <path d="M 684.0 -308.45997891995785 L 677.75 -318.45997891995785 L 690.25 -318.45997891995785 Z"/> + </clipPath> + <clipPath id="clip37"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip38"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip39"> + <path d="M 290 -114 L 290 -188 L 324 -188 L 324 -114 Z"/> + </clipPath> + <clipPath id="clip40"> + <path d="M 307.0 -178.66666666666669 M 311.0 -178.66666666666669 L 311 -178.667 M 311 -178.667 A 4 4 0 1 0 303 -178.667 A 4 4 0 1 0 311 -178.667 Z"/> + </clipPath> + <clipPath id="clip41"> + <path d="M 300.75 -155.66666666666666 L 313.25 -155.66666666666666 L 307.0 -165.66666666666666 Z"/> + </clipPath> + <clipPath id="clip42"> + <path d="M 307.0 -137.66666666666666 L 300.75 -147.66666666666666 L 313.25 -147.66666666666666 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 4.52e-05 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.5004867321942"> + 9.03e-05 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.5004867321942"> + 1.35e-04 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.5004867321942"> + 1.81e-04 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321942"> + 2.26e-04 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 338.4 -320.7875964323357 L 376.8 -342.4589692036527 L 415.2 -366.65452645191004 L 453.6 -387.27707855415713 L 492.0 -408.5794885875486 L 530.4 -431.02220490155264 L 568.8 -452.9573173432061 L 607.2 -472.75971409085673 L 645.6 -494.29049715242286 L 684.0 -520.0" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip3);"> + <path d="M 330.4 -312.7875964323357 L 330.4 -328.7875964323357 L 346.4 -328.7875964323357 L 346.4 -312.7875964323357 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -320.7875964323357 M 342.4 -320.7875964323357 L 342.4 -320.788 M 342.4 -320.788 A 4 4 0 1 0 334.4 -320.788 A 4 4 0 1 0 342.4 -320.788 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip4);"> + <path d="M 368.8 -334.4589692036527 L 368.8 -350.4589692036527 L 384.8 -350.4589692036527 L 384.8 -334.4589692036527 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -342.4589692036527 M 380.8 -342.4589692036527 L 380.8 -342.459 M 380.8 -342.459 A 4 4 0 1 0 372.8 -342.459 A 4 4 0 1 0 380.8 -342.459 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 407.2 -358.65452645191004 L 407.2 -374.65452645191004 L 423.2 -374.65452645191004 L 423.2 -358.65452645191004 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -366.65452645191004 M 419.2 -366.65452645191004 L 419.2 -366.655 M 419.2 -366.655 A 4 4 0 1 0 411.2 -366.655 A 4 4 0 1 0 419.2 -366.655 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 445.6 -379.27707855415713 L 445.6 -395.27707855415713 L 461.6 -395.27707855415713 L 461.6 -379.27707855415713 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -387.27707855415713 M 457.6 -387.27707855415713 L 457.6 -387.277 M 457.6 -387.277 A 4 4 0 1 0 449.6 -387.277 A 4 4 0 1 0 457.6 -387.277 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 484.0 -400.5794885875486 L 484.0 -416.5794885875486 L 500.0 -416.5794885875486 L 500.0 -400.5794885875486 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -408.5794885875486 M 496.0 -408.5794885875486 L 496 -408.579 M 496 -408.579 A 4 4 0 1 0 488 -408.579 A 4 4 0 1 0 496 -408.579 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 522.4 -423.02220490155264 L 522.4 -439.02220490155264 L 538.4 -439.02220490155264 L 538.4 -423.02220490155264 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -431.02220490155264 M 534.4 -431.02220490155264 L 534.4 -431.022 M 534.4 -431.022 A 4 4 0 1 0 526.4 -431.022 A 4 4 0 1 0 534.4 -431.022 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 560.8 -444.9573173432061 L 560.8 -460.9573173432061 L 576.8 -460.9573173432061 L 576.8 -444.9573173432061 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -452.9573173432061 M 572.8 -452.9573173432061 L 572.8 -452.957 M 572.8 -452.957 A 4 4 0 1 0 564.8 -452.957 A 4 4 0 1 0 572.8 -452.957 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip10);"> + <path d="M 599.2 -464.75971409085673 L 599.2 -480.75971409085673 L 615.2 -480.75971409085673 L 615.2 -464.75971409085673 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -472.75971409085673 M 611.2 -472.75971409085673 L 611.2 -472.76 M 611.2 -472.76 A 4 4 0 1 0 603.2 -472.76 A 4 4 0 1 0 611.2 -472.76 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip11);"> + <path d="M 637.6 -486.29049715242286 L 637.6 -502.29049715242286 L 653.6 -502.29049715242286 L 653.6 -486.29049715242286 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -494.29049715242286 M 649.6 -494.29049715242286 L 649.6 -494.29 M 649.6 -494.29 A 4 4 0 1 0 641.6 -494.29 A 4 4 0 1 0 649.6 -494.29 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 676.0 -512.0 L 676.0 -528.0 L 692.0 -528.0 L 692.0 -512.0 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -520.0 M 688.0 -520.0 L 688 -520 M 688 -520 A 4 4 0 1 0 680 -520 A 4 4 0 1 0 688 -520 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip13);"> + <path d="M 338.4 -301.22444576317724 L 376.8 -302.33312666625335 L 415.2 -303.46445975749094 L 453.6 -304.84986758544943 L 492.0 -306.48649548727667 L 530.4 -307.97635669557053 L 568.8 -309.8998343710973 L 607.2 -312.1955483910968 L 645.6 -313.8781431848578 L 684.0 -315.5510925307565" style="stroke:rgb(147,147,147);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip14);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip15);"> + <path d="M 332.15 -296.22444576317724 L 332.15 -306.22444576317724 L 344.65 -306.22444576317724 L 344.65 -296.22444576317724 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 332.15 -296.22444576317724 L 344.65 -296.22444576317724 L 338.4 -306.22444576317724 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip16);"> + <path d="M 370.55 -297.33312666625335 L 370.55 -307.33312666625335 L 383.05 -307.33312666625335 L 383.05 -297.33312666625335 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 370.55 -297.33312666625335 L 383.05 -297.33312666625335 L 376.8 -307.33312666625335 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip17);"> + <path d="M 408.95 -298.46445975749094 L 408.95 -308.46445975749094 L 421.45 -308.46445975749094 L 421.45 -298.46445975749094 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 408.95 -298.46445975749094 L 421.45 -298.46445975749094 L 415.2 -308.46445975749094 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip18);"> + <path d="M 447.35 -299.84986758544943 L 447.35 -309.84986758544943 L 459.85 -309.84986758544943 L 459.85 -299.84986758544943 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 447.35 -299.84986758544943 L 459.85 -299.84986758544943 L 453.6 -309.84986758544943 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip19);"> + <path d="M 485.75 -301.48649548727667 L 485.75 -311.48649548727667 L 498.25 -311.48649548727667 L 498.25 -301.48649548727667 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 485.75 -301.48649548727667 L 498.25 -301.48649548727667 L 492.0 -311.48649548727667 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip20);"> + <path d="M 524.15 -302.97635669557053 L 524.15 -312.97635669557053 L 536.65 -312.97635669557053 L 536.65 -302.97635669557053 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 524.15 -302.97635669557053 L 536.65 -302.97635669557053 L 530.4 -312.97635669557053 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip21);"> + <path d="M 562.55 -304.8998343710973 L 562.55 -314.8998343710973 L 575.05 -314.8998343710973 L 575.05 -304.8998343710973 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 562.55 -304.8998343710973 L 575.05 -304.8998343710973 L 568.8 -314.8998343710973 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip22);"> + <path d="M 600.95 -307.1955483910968 L 600.95 -317.1955483910968 L 613.45 -317.1955483910968 L 613.45 -307.1955483910968 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.95 -307.1955483910968 L 613.45 -307.1955483910968 L 607.2 -317.1955483910968 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip23);"> + <path d="M 639.35 -308.8781431848578 L 639.35 -318.8781431848578 L 651.85 -318.8781431848578 L 651.85 -308.8781431848578 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 639.35 -308.8781431848578 L 651.85 -308.8781431848578 L 645.6 -318.8781431848578 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip24);"> + <path d="M 677.75 -310.5510925307565 L 677.75 -320.5510925307565 L 690.25 -320.5510925307565 L 690.25 -310.5510925307565 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 677.75 -310.5510925307565 L 690.25 -310.5510925307565 L 684.0 -320.5510925307565 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip25);"> + <path d="M 338.4 -301.28165593474046 L 376.8 -302.48556371398456 L 415.2 -303.6490190694667 L 453.6 -305.2742672913917 L 492.0 -306.72616050946385 L 530.4 -308.0200632401265 L 568.8 -309.2359547576238 L 607.2 -310.4805098181625 L 645.6 -311.7510783592996 L 684.0 -313.45997891995785" style="stroke:rgb(205,0,0);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip26);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip27);"> + <path d="M 332.15 -296.28165593474046 L 332.15 -306.28165593474046 L 344.65 -306.28165593474046 L 344.65 -296.28165593474046 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -296.28165593474046 L 332.15 -306.28165593474046 L 344.65 -306.28165593474046 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip28);"> + <path d="M 370.55 -297.48556371398456 L 370.55 -307.48556371398456 L 383.05 -307.48556371398456 L 383.05 -297.48556371398456 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -297.48556371398456 L 370.55 -307.48556371398456 L 383.05 -307.48556371398456 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip29);"> + <path d="M 408.95 -298.6490190694667 L 408.95 -308.6490190694667 L 421.45 -308.6490190694667 L 421.45 -298.6490190694667 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -298.6490190694667 L 408.95 -308.6490190694667 L 421.45 -308.6490190694667 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip30);"> + <path d="M 447.35 -300.2742672913917 L 447.35 -310.2742672913917 L 459.85 -310.2742672913917 L 459.85 -300.2742672913917 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -300.2742672913917 L 447.35 -310.2742672913917 L 459.85 -310.2742672913917 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip31);"> + <path d="M 485.75 -301.72616050946385 L 485.75 -311.72616050946385 L 498.25 -311.72616050946385 L 498.25 -301.72616050946385 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -301.72616050946385 L 485.75 -311.72616050946385 L 498.25 -311.72616050946385 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip32);"> + <path d="M 524.15 -303.0200632401265 L 524.15 -313.0200632401265 L 536.65 -313.0200632401265 L 536.65 -303.0200632401265 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -303.0200632401265 L 524.15 -313.0200632401265 L 536.65 -313.0200632401265 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip33);"> + <path d="M 562.55 -304.2359547576238 L 562.55 -314.2359547576238 L 575.05 -314.2359547576238 L 575.05 -304.2359547576238 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -304.2359547576238 L 562.55 -314.2359547576238 L 575.05 -314.2359547576238 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip34);"> + <path d="M 600.95 -305.4805098181625 L 600.95 -315.4805098181625 L 613.45 -315.4805098181625 L 613.45 -305.4805098181625 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -305.4805098181625 L 600.95 -315.4805098181625 L 613.45 -315.4805098181625 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip35);"> + <path d="M 639.35 -306.7510783592996 L 639.35 -316.7510783592996 L 651.85 -316.7510783592996 L 651.85 -306.7510783592996 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -306.7510783592996 L 639.35 -316.7510783592996 L 651.85 -316.7510783592996 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip36);"> + <path d="M 677.75 -308.45997891995785 L 677.75 -318.45997891995785 L 690.25 -318.45997891995785 L 690.25 -308.45997891995785 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -308.45997891995785 L 677.75 -318.45997891995785 L 690.25 -318.45997891995785 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip37);"> + <path d="M 338.4 -300.6159125089679 L 376.8 -300.9717915378688 L 415.2 -301.37134885698345 L 453.6 -301.759904519809 L 492.0 -302.145303490607 L 530.4 -302.5477817241349 L 568.8 -302.97718926866423 L 607.2 -303.2889320921499 L 645.6 -303.6866460590064 L 684.0 -304.115917203263" style="stroke:rgb(255,68,0);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip38);"> + <path d="M 333.4 -295.6159125089679 L 343.4 -305.6159125089679" style="stroke-width:1;"/> + <path d="M 343.4 -295.6159125089679 L 333.4 -305.6159125089679" style="stroke-width:1;"/> + <path d="M 338.4 -293.5459125089679 L 338.4 -307.6859125089679" style="stroke-width:1;"/> + <path d="M 331.33 -300.6159125089679 L 345.47 -300.6159125089679" style="stroke-width:1;"/> + <path d="M 371.8 -295.9717915378688 L 381.8 -305.9717915378688" style="stroke-width:1;"/> + <path d="M 381.8 -295.9717915378688 L 371.8 -305.9717915378688" style="stroke-width:1;"/> + <path d="M 376.8 -293.9017915378688 L 376.8 -308.0417915378688" style="stroke-width:1;"/> + <path d="M 369.73 -300.9717915378688 L 383.87 -300.9717915378688" style="stroke-width:1;"/> + <path d="M 410.2 -296.37134885698345 L 420.2 -306.37134885698345" style="stroke-width:1;"/> + <path d="M 420.2 -296.37134885698345 L 410.2 -306.37134885698345" style="stroke-width:1;"/> + <path d="M 415.2 -294.30134885698345 L 415.2 -308.44134885698344" style="stroke-width:1;"/> + <path d="M 408.13 -301.37134885698345 L 422.27 -301.37134885698345" style="stroke-width:1;"/> + <path d="M 448.6 -296.759904519809 L 458.6 -306.759904519809" style="stroke-width:1;"/> + <path d="M 458.6 -296.759904519809 L 448.6 -306.759904519809" style="stroke-width:1;"/> + <path d="M 453.6 -294.68990451980903 L 453.6 -308.829904519809" style="stroke-width:1;"/> + <path d="M 446.53 -301.759904519809 L 460.66999999999996 -301.759904519809" style="stroke-width:1;"/> + <path d="M 487.0 -297.145303490607 L 497.0 -307.145303490607" style="stroke-width:1;"/> + <path d="M 497.0 -297.145303490607 L 487.0 -307.145303490607" style="stroke-width:1;"/> + <path d="M 492.0 -295.075303490607 L 492.0 -309.21530349060697" style="stroke-width:1;"/> + <path d="M 484.93 -302.145303490607 L 499.07 -302.145303490607" style="stroke-width:1;"/> + <path d="M 525.4 -297.5477817241349 L 535.4 -307.5477817241349" style="stroke-width:1;"/> + <path d="M 535.4 -297.5477817241349 L 525.4 -307.5477817241349" style="stroke-width:1;"/> + <path d="M 530.4 -295.4777817241349 L 530.4 -309.6177817241349" style="stroke-width:1;"/> + <path d="M 523.33 -302.5477817241349 L 537.47 -302.5477817241349" style="stroke-width:1;"/> + <path d="M 563.8 -297.97718926866423 L 573.8 -307.97718926866423" style="stroke-width:1;"/> + <path d="M 573.8 -297.97718926866423 L 563.8 -307.97718926866423" style="stroke-width:1;"/> + <path d="M 568.8 -295.90718926866424 L 568.8 -310.0471892686642" style="stroke-width:1;"/> + <path d="M 561.73 -302.97718926866423 L 575.87 -302.97718926866423" style="stroke-width:1;"/> + <path d="M 602.2 -298.2889320921499 L 612.2 -308.2889320921499" style="stroke-width:1;"/> + <path d="M 612.2 -298.2889320921499 L 602.2 -308.2889320921499" style="stroke-width:1;"/> + <path d="M 607.2 -296.2189320921499 L 607.2 -310.35893209214987" style="stroke-width:1;"/> + <path d="M 600.13 -303.2889320921499 L 614.27 -303.2889320921499" style="stroke-width:1;"/> + <path d="M 640.6 -298.6866460590064 L 650.6 -308.6866460590064" style="stroke-width:1;"/> + <path d="M 650.6 -298.6866460590064 L 640.6 -308.6866460590064" style="stroke-width:1;"/> + <path d="M 645.6 -296.6166460590064 L 645.6 -310.7566460590064" style="stroke-width:1;"/> + <path d="M 638.53 -303.6866460590064 L 652.6700000000001 -303.6866460590064" style="stroke-width:1;"/> + <path d="M 679.0 -299.115917203263 L 689.0 -309.115917203263" style="stroke-width:1;"/> + <path d="M 689.0 -299.115917203263 L 679.0 -309.115917203263" style="stroke-width:1;"/> + <path d="M 684.0 -297.045917203263 L 684.0 -311.185917203263" style="stroke-width:1;"/> + <path d="M 676.9300000000001 -304.115917203263 L 691.0699999999999 -304.115917203263" style="stroke-width:1;"/> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip39);"> + <path d="M 290 -114 L 290 -188 L 324 -188 L 324 -114 Z" style="stroke:none;"/> + </g> + <path d="M 300 -178.66666666666669 L 314 -178.66666666666669" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip40);"> + <path d="M 299.0 -170.66666666666669 L 299.0 -186.66666666666669 L 315.0 -186.66666666666669 L 315.0 -170.66666666666669 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -178.66666666666669 M 311.0 -178.66666666666669 L 311 -178.667 M 311 -178.667 A 4 4 0 1 0 303 -178.667 A 4 4 0 1 0 311 -178.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-174.0"> + n_set + </text> + <path d="M 300 -160.66666666666666 L 314 -160.66666666666666" style="stroke:rgb(147,147,147);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip41);"> + <path d="M 300.75 -155.66666666666666 L 300.75 -165.66666666666666 L 313.25 -165.66666666666666 L 313.25 -155.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 300.75 -155.66666666666666 L 313.25 -155.66666666666666 L 307.0 -165.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-156.0"> + splay_tree_set + </text> + <path d="M 300 -142.66666666666666 L 314 -142.66666666666666" style="stroke:rgb(205,0,0);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip42);"> + <path d="M 300.75 -137.66666666666666 L 300.75 -147.66666666666666 L 313.25 -147.66666666666666 L 313.25 -137.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -137.66666666666666 L 300.75 -147.66666666666666 L 313.25 -147.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-138.0"> + rb_tree_set + </text> + <path d="M 300 -124.66666666666666 L 314 -124.66666666666666" style="stroke:rgb(255,68,0);stroke-width:2;"/> + <path d="M 302.0 -119.66666666666666 L 312.0 -129.66666666666666" style="stroke-width:1;"/> + <path d="M 312.0 -119.66666666666666 L 302.0 -129.66666666666666" style="stroke-width:1;"/> + <path d="M 307.0 -117.59666666666666 L 307.0 -131.73666666666665" style="stroke-width:1;"/> + <path d="M 299.93 -124.66666666666666 L 314.07 -124.66666666666666" style="stroke-width:1;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-120.0"> + ov_tree_set + </text> + </g> + </g> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_node_tree_local.pdf b/libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_node_tree_local.pdf Binary files differnew file mode 100644 index 00000000000..b5b73a6b343 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_node_tree_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_node_tree_local.png b/libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_node_tree_local.png Binary files differnew file mode 100644 index 00000000000..ac137322d2b --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_node_tree_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_node_tree_local.svg b/libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_node_tree_local.svg new file mode 100644 index 00000000000..5a5fb2b7281 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_node_tree_local.svg @@ -0,0 +1,446 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 416.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 332.15 -455.275456 L 344.65 -455.275456 L 338.4 -465.275456 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 370.55 -477.85695999999996 L 383.05 -477.85695999999996 L 376.8 -487.85695999999996 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 408.95 -485.217984 L 421.45 -485.217984 L 415.2 -495.217984 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 447.35 -495.89344 L 459.85 -495.89344 L 453.6 -505.89344 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 485.75 -495.32179199999996 L 498.25 -495.32179199999996 L 492.0 -505.32179199999996 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 524.15 -500.56968959999995 L 536.65 -500.56968959999995 L 530.4 -510.56968959999995 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 562.55 -504.6759808 L 575.05 -504.6759808 L 568.8 -514.6759807999999 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 600.95 -510.63970559999996 L 613.45 -510.63970559999996 L 607.2 -520.6397056 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 639.35 -510.5456512 L 651.85 -510.5456512 L 645.6 -520.5456512000001 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 677.75 -515.0 L 690.25 -515.0 L 684.0 -525.0 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 338.4 -440.0447488 M 342.4 -440.0447488 L 342.4 -440.045 M 342.4 -440.045 A 4 4 0 1 0 334.4 -440.045 A 4 4 0 1 0 342.4 -440.045 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 376.8 -449.37472 M 380.8 -449.37472 L 380.8 -449.375 M 380.8 -449.375 A 4 4 0 1 0 372.8 -449.375 A 4 4 0 1 0 380.8 -449.375 Z"/> + </clipPath> + <clipPath id="clip17"> + <path d="M 415.2 -452.5714432 M 419.2 -452.5714432 L 419.2 -452.571 M 419.2 -452.571 A 4 4 0 1 0 411.2 -452.571 A 4 4 0 1 0 419.2 -452.571 Z"/> + </clipPath> + <clipPath id="clip18"> + <path d="M 453.6 -455.58005760000003 M 457.6 -455.58005760000003 L 457.6 -455.58 M 457.6 -455.58 A 4 4 0 1 0 449.6 -455.58 A 4 4 0 1 0 457.6 -455.58 Z"/> + </clipPath> + <clipPath id="clip19"> + <path d="M 492.0 -458.12797439999997 M 496.0 -458.12797439999997 L 496 -458.128 M 496 -458.128 A 4 4 0 1 0 488 -458.128 A 4 4 0 1 0 496 -458.128 Z"/> + </clipPath> + <clipPath id="clip20"> + <path d="M 530.4 -456.4445696 M 534.4 -456.4445696 L 534.4 -456.445 M 534.4 -456.445 A 4 4 0 1 0 526.4 -456.445 A 4 4 0 1 0 534.4 -456.445 Z"/> + </clipPath> + <clipPath id="clip21"> + <path d="M 568.8 -461.2571136 M 572.8 -461.2571136 L 572.8 -461.257 M 572.8 -461.257 A 4 4 0 1 0 564.8 -461.257 A 4 4 0 1 0 572.8 -461.257 Z"/> + </clipPath> + <clipPath id="clip22"> + <path d="M 607.2 -464.26685439999994 M 611.2 -464.26685439999994 L 611.2 -464.267 M 611.2 -464.267 A 4 4 0 1 0 603.2 -464.267 A 4 4 0 1 0 611.2 -464.267 Z"/> + </clipPath> + <clipPath id="clip23"> + <path d="M 645.6 -466.06402560000004 M 649.6 -466.06402560000004 L 649.6 -466.064 M 649.6 -466.064 A 4 4 0 1 0 641.6 -466.064 A 4 4 0 1 0 649.6 -466.064 Z"/> + </clipPath> + <clipPath id="clip24"> + <path d="M 684.0 -470.2700032 M 688.0 -470.2700032 L 688 -470.27 M 688 -470.27 A 4 4 0 1 0 680 -470.27 A 4 4 0 1 0 688 -470.27 Z"/> + </clipPath> + <clipPath id="clip25"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip26"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip27"> + <path d="M 338.4 -418.2630784 L 332.15 -428.2630784 L 344.65 -428.2630784 Z"/> + </clipPath> + <clipPath id="clip28"> + <path d="M 376.8 -424.9741696 L 370.55 -434.9741696 L 383.05 -434.9741696 Z"/> + </clipPath> + <clipPath id="clip29"> + <path d="M 415.2 -431.91391999999996 L 408.95 -441.91391999999996 L 421.45 -441.91391999999996 Z"/> + </clipPath> + <clipPath id="clip30"> + <path d="M 453.6 -432.50021119999997 L 447.35 -442.50021119999997 L 459.85 -442.50021119999997 Z"/> + </clipPath> + <clipPath id="clip31"> + <path d="M 492.0 -434.94675199999995 L 485.75 -444.94675199999995 L 498.25 -444.94675199999995 Z"/> + </clipPath> + <clipPath id="clip32"> + <path d="M 530.4 -436.8605056 L 524.15 -446.8605056 L 536.65 -446.8605056 Z"/> + </clipPath> + <clipPath id="clip33"> + <path d="M 568.8 -437.3279616 L 562.55 -447.3279616 L 575.05 -447.3279616 Z"/> + </clipPath> + <clipPath id="clip34"> + <path d="M 607.2 -440.6891392 L 600.95 -450.6891392 L 613.45 -450.6891392 Z"/> + </clipPath> + <clipPath id="clip35"> + <path d="M 645.6 -441.22530559999996 L 639.35 -451.22530559999996 L 651.85 -451.22530559999996 Z"/> + </clipPath> + <clipPath id="clip36"> + <path d="M 684.0 -445.9606912 L 677.75 -455.9606912 L 690.25 -455.9606912 Z"/> + </clipPath> + <clipPath id="clip37"> + <path d="M 290 -134 L 290 -190 L 324 -190 L 324 -134 Z"/> + </clipPath> + <clipPath id="clip38"> + <path d="M 300.75 -175.66666666666669 L 313.25 -175.66666666666669 L 307.0 -185.66666666666669 Z"/> + </clipPath> + <clipPath id="clip39"> + <path d="M 307.0 -162.66666666666666 M 311.0 -162.66666666666666 L 311 -162.667 M 311 -162.667 A 4 4 0 1 0 303 -162.667 A 4 4 0 1 0 311 -162.667 Z"/> + </clipPath> + <clipPath id="clip40"> + <path d="M 307.0 -139.66666666666666 L 300.75 -149.66666666666666 L 313.25 -149.66666666666666 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 7.81e-08 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.5004867321942"> + 1.56e-07 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.5004867321942"> + 2.34e-07 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.5004867321942"> + 3.13e-07 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321942"> + 3.91e-07 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 338.4 -460.275456 L 376.8 -482.85695999999996 L 415.2 -490.217984 L 453.6 -500.89344 L 492.0 -500.32179199999996 L 530.4 -505.56968959999995 L 568.8 -509.6759808 L 607.2 -515.6397056 L 645.6 -515.5456512000001 L 684.0 -520.0" style="stroke:rgb(147,147,147);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip3);"> + <path d="M 332.15 -455.275456 L 332.15 -465.275456 L 344.65 -465.275456 L 344.65 -455.275456 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 332.15 -455.275456 L 344.65 -455.275456 L 338.4 -465.275456 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip4);"> + <path d="M 370.55 -477.85695999999996 L 370.55 -487.85695999999996 L 383.05 -487.85695999999996 L 383.05 -477.85695999999996 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 370.55 -477.85695999999996 L 383.05 -477.85695999999996 L 376.8 -487.85695999999996 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 408.95 -485.217984 L 408.95 -495.217984 L 421.45 -495.217984 L 421.45 -485.217984 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 408.95 -485.217984 L 421.45 -485.217984 L 415.2 -495.217984 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 447.35 -495.89344 L 447.35 -505.89344 L 459.85 -505.89344 L 459.85 -495.89344 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 447.35 -495.89344 L 459.85 -495.89344 L 453.6 -505.89344 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 485.75 -495.32179199999996 L 485.75 -505.32179199999996 L 498.25 -505.32179199999996 L 498.25 -495.32179199999996 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 485.75 -495.32179199999996 L 498.25 -495.32179199999996 L 492.0 -505.32179199999996 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 524.15 -500.56968959999995 L 524.15 -510.56968959999995 L 536.65 -510.56968959999995 L 536.65 -500.56968959999995 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 524.15 -500.56968959999995 L 536.65 -500.56968959999995 L 530.4 -510.56968959999995 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 562.55 -504.6759808 L 562.55 -514.6759807999999 L 575.05 -514.6759807999999 L 575.05 -504.6759808 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 562.55 -504.6759808 L 575.05 -504.6759808 L 568.8 -514.6759807999999 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip10);"> + <path d="M 600.95 -510.63970559999996 L 600.95 -520.6397056 L 613.45 -520.6397056 L 613.45 -510.63970559999996 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.95 -510.63970559999996 L 613.45 -510.63970559999996 L 607.2 -520.6397056 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip11);"> + <path d="M 639.35 -510.5456512 L 639.35 -520.5456512000001 L 651.85 -520.5456512000001 L 651.85 -510.5456512 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 639.35 -510.5456512 L 651.85 -510.5456512 L 645.6 -520.5456512000001 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 677.75 -515.0 L 677.75 -525.0 L 690.25 -525.0 L 690.25 -515.0 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 677.75 -515.0 L 690.25 -515.0 L 684.0 -525.0 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip13);"> + <path d="M 338.4 -440.0447488 L 376.8 -449.37472 L 415.2 -452.5714432 L 453.6 -455.58005760000003 L 492.0 -458.12797439999997 L 530.4 -456.4445696 L 568.8 -461.2571136 L 607.2 -464.26685439999994 L 645.6 -466.06402560000004 L 684.0 -470.2700032" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip14);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip15);"> + <path d="M 330.4 -432.0447488 L 330.4 -448.0447488 L 346.4 -448.0447488 L 346.4 -432.0447488 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -440.0447488 M 342.4 -440.0447488 L 342.4 -440.045 M 342.4 -440.045 A 4 4 0 1 0 334.4 -440.045 A 4 4 0 1 0 342.4 -440.045 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip16);"> + <path d="M 368.8 -441.37472 L 368.8 -457.37472 L 384.8 -457.37472 L 384.8 -441.37472 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -449.37472 M 380.8 -449.37472 L 380.8 -449.375 M 380.8 -449.375 A 4 4 0 1 0 372.8 -449.375 A 4 4 0 1 0 380.8 -449.375 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip17);"> + <path d="M 407.2 -444.5714432 L 407.2 -460.5714432 L 423.2 -460.5714432 L 423.2 -444.5714432 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -452.5714432 M 419.2 -452.5714432 L 419.2 -452.571 M 419.2 -452.571 A 4 4 0 1 0 411.2 -452.571 A 4 4 0 1 0 419.2 -452.571 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip18);"> + <path d="M 445.6 -447.58005760000003 L 445.6 -463.58005760000003 L 461.6 -463.58005760000003 L 461.6 -447.58005760000003 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -455.58005760000003 M 457.6 -455.58005760000003 L 457.6 -455.58 M 457.6 -455.58 A 4 4 0 1 0 449.6 -455.58 A 4 4 0 1 0 457.6 -455.58 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip19);"> + <path d="M 484.0 -450.12797439999997 L 484.0 -466.12797439999997 L 500.0 -466.12797439999997 L 500.0 -450.12797439999997 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -458.12797439999997 M 496.0 -458.12797439999997 L 496 -458.128 M 496 -458.128 A 4 4 0 1 0 488 -458.128 A 4 4 0 1 0 496 -458.128 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip20);"> + <path d="M 522.4 -448.4445696 L 522.4 -464.4445696 L 538.4 -464.4445696 L 538.4 -448.4445696 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -456.4445696 M 534.4 -456.4445696 L 534.4 -456.445 M 534.4 -456.445 A 4 4 0 1 0 526.4 -456.445 A 4 4 0 1 0 534.4 -456.445 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip21);"> + <path d="M 560.8 -453.2571136 L 560.8 -469.2571136 L 576.8 -469.2571136 L 576.8 -453.2571136 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -461.2571136 M 572.8 -461.2571136 L 572.8 -461.257 M 572.8 -461.257 A 4 4 0 1 0 564.8 -461.257 A 4 4 0 1 0 572.8 -461.257 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip22);"> + <path d="M 599.2 -456.26685439999994 L 599.2 -472.26685439999994 L 615.2 -472.26685439999994 L 615.2 -456.26685439999994 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -464.26685439999994 M 611.2 -464.26685439999994 L 611.2 -464.267 M 611.2 -464.267 A 4 4 0 1 0 603.2 -464.267 A 4 4 0 1 0 611.2 -464.267 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip23);"> + <path d="M 637.6 -458.06402560000004 L 637.6 -474.06402560000004 L 653.6 -474.06402560000004 L 653.6 -458.06402560000004 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -466.06402560000004 M 649.6 -466.06402560000004 L 649.6 -466.064 M 649.6 -466.064 A 4 4 0 1 0 641.6 -466.064 A 4 4 0 1 0 649.6 -466.064 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip24);"> + <path d="M 676.0 -462.2700032 L 676.0 -478.2700032 L 692.0 -478.2700032 L 692.0 -462.2700032 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -470.2700032 M 688.0 -470.2700032 L 688 -470.27 M 688 -470.27 A 4 4 0 1 0 680 -470.27 A 4 4 0 1 0 688 -470.27 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip25);"> + <path d="M 338.4 -423.2630784 L 376.8 -429.9741696 L 415.2 -436.91391999999996 L 453.6 -437.50021119999997 L 492.0 -439.94675199999995 L 530.4 -441.8605056 L 568.8 -442.3279616 L 607.2 -445.6891392 L 645.6 -446.22530559999996 L 684.0 -450.9606912" style="stroke:rgb(205,0,0);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip26);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip27);"> + <path d="M 332.15 -418.2630784 L 332.15 -428.2630784 L 344.65 -428.2630784 L 344.65 -418.2630784 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -418.2630784 L 332.15 -428.2630784 L 344.65 -428.2630784 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip28);"> + <path d="M 370.55 -424.9741696 L 370.55 -434.9741696 L 383.05 -434.9741696 L 383.05 -424.9741696 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -424.9741696 L 370.55 -434.9741696 L 383.05 -434.9741696 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip29);"> + <path d="M 408.95 -431.91391999999996 L 408.95 -441.91391999999996 L 421.45 -441.91391999999996 L 421.45 -431.91391999999996 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -431.91391999999996 L 408.95 -441.91391999999996 L 421.45 -441.91391999999996 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip30);"> + <path d="M 447.35 -432.50021119999997 L 447.35 -442.50021119999997 L 459.85 -442.50021119999997 L 459.85 -432.50021119999997 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -432.50021119999997 L 447.35 -442.50021119999997 L 459.85 -442.50021119999997 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip31);"> + <path d="M 485.75 -434.94675199999995 L 485.75 -444.94675199999995 L 498.25 -444.94675199999995 L 498.25 -434.94675199999995 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -434.94675199999995 L 485.75 -444.94675199999995 L 498.25 -444.94675199999995 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip32);"> + <path d="M 524.15 -436.8605056 L 524.15 -446.8605056 L 536.65 -446.8605056 L 536.65 -436.8605056 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -436.8605056 L 524.15 -446.8605056 L 536.65 -446.8605056 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip33);"> + <path d="M 562.55 -437.3279616 L 562.55 -447.3279616 L 575.05 -447.3279616 L 575.05 -437.3279616 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -437.3279616 L 562.55 -447.3279616 L 575.05 -447.3279616 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip34);"> + <path d="M 600.95 -440.6891392 L 600.95 -450.6891392 L 613.45 -450.6891392 L 613.45 -440.6891392 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -440.6891392 L 600.95 -450.6891392 L 613.45 -450.6891392 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip35);"> + <path d="M 639.35 -441.22530559999996 L 639.35 -451.22530559999996 L 651.85 -451.22530559999996 L 651.85 -441.22530559999996 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -441.22530559999996 L 639.35 -451.22530559999996 L 651.85 -451.22530559999996 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip36);"> + <path d="M 677.75 -445.9606912 L 677.75 -455.9606912 L 690.25 -455.9606912 L 690.25 -445.9606912 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -445.9606912 L 677.75 -455.9606912 L 690.25 -455.9606912 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip37);"> + <path d="M 290 -134 L 290 -190 L 324 -190 L 324 -134 Z" style="stroke:none;"/> + </g> + <path d="M 300 -180.66666666666669 L 314 -180.66666666666669" style="stroke:rgb(147,147,147);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip38);"> + <path d="M 300.75 -175.66666666666669 L 300.75 -185.66666666666669 L 313.25 -185.66666666666669 L 313.25 -175.66666666666669 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 300.75 -175.66666666666669 L 313.25 -175.66666666666669 L 307.0 -185.66666666666669 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-176.0"> + splay_tree_map + </text> + <path d="M 300 -162.66666666666666 L 314 -162.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip39);"> + <path d="M 299.0 -154.66666666666666 L 299.0 -170.66666666666666 L 315.0 -170.66666666666666 L 315.0 -154.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -162.66666666666666 M 311.0 -162.66666666666666 L 311 -162.667 M 311 -162.667 A 4 4 0 1 0 303 -162.667 A 4 4 0 1 0 311 -162.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-158.0"> + n_map + </text> + <path d="M 300 -144.66666666666666 L 314 -144.66666666666666" style="stroke:rgb(205,0,0);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip40);"> + <path d="M 300.75 -139.66666666666666 L 300.75 -149.66666666666666 L 313.25 -149.66666666666666 L 313.25 -139.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -139.66666666666666 L 300.75 -149.66666666666666 L 313.25 -149.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-140.0"> + rb_tree_map + </text> + </g> + </g> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_pat_trie_local.pdf b/libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_pat_trie_local.pdf Binary files differnew file mode 100644 index 00000000000..57630241743 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_pat_trie_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_pat_trie_local.png b/libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_pat_trie_local.png Binary files differnew file mode 100644 index 00000000000..6967044ceeb --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_pat_trie_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_pat_trie_local.svg b/libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_pat_trie_local.svg new file mode 100644 index 00000000000..137ce0a69c8 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_pat_trie_local.svg @@ -0,0 +1,255 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 396.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 338.4 -431.4694883971315 M 342.4 -431.4694883971315 L 342.4 -431.469 M 342.4 -431.469 A 4 4 0 1 0 334.4 -431.469 A 4 4 0 1 0 342.4 -431.469 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 376.8 -440.228164112818 M 380.8 -440.228164112818 L 380.8 -440.228 M 380.8 -440.228 A 4 4 0 1 0 372.8 -440.228 A 4 4 0 1 0 380.8 -440.228 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 415.2 -443.2291446369177 M 419.2 -443.2291446369177 L 419.2 -443.229 M 419.2 -443.229 A 4 4 0 1 0 411.2 -443.229 A 4 4 0 1 0 419.2 -443.229 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 453.6 -446.0535346932498 M 457.6 -446.0535346932498 L 457.6 -446.054 M 457.6 -446.054 A 4 4 0 1 0 449.6 -446.054 A 4 4 0 1 0 457.6 -446.054 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 492.0 -448.44543671774363 M 496.0 -448.44543671774363 L 496 -448.445 M 496 -448.445 A 4 4 0 1 0 488 -448.445 A 4 4 0 1 0 496 -448.445 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 530.4 -446.8651106454156 M 534.4 -446.8651106454156 L 534.4 -446.865 M 534.4 -446.865 A 4 4 0 1 0 526.4 -446.865 A 4 4 0 1 0 534.4 -446.865 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 568.8 -451.3829715648011 M 572.8 -451.3829715648011 L 572.8 -451.383 M 572.8 -451.383 A 4 4 0 1 0 564.8 -451.383 A 4 4 0 1 0 572.8 -451.383 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 607.2 -454.2084190490839 M 611.2 -454.2084190490839 L 611.2 -454.208 M 611.2 -454.208 A 4 4 0 1 0 603.2 -454.208 A 4 4 0 1 0 611.2 -454.208 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 645.6 -455.8955453444331 M 649.6 -455.8955453444331 L 649.6 -455.896 M 649.6 -455.896 A 4 4 0 1 0 641.6 -455.896 A 4 4 0 1 0 649.6 -455.896 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 684.0 -459.84398131236424 M 688.0 -459.84398131236424 L 688 -459.844 M 688 -459.844 A 4 4 0 1 0 680 -459.844 A 4 4 0 1 0 688 -459.844 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 290 -154 L 290 -192 L 324 -192 L 324 -154 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 307.0 -164.66666666666666 M 311.0 -164.66666666666666 L 311 -164.667 M 311 -164.667 A 4 4 0 1 0 303 -164.667 A 4 4 0 1 0 311 -164.667 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.5004867321942"> + 8.32e-08 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.5004867321942"> + 1.66e-07 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.5004867321942"> + 2.50e-07 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.5004867321942"> + 3.33e-07 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321942"> + 4.16e-07 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 338.4 -519.7980312614154 L 376.8 -501.0503624093977 L 415.2 -491.98344644608073 L 453.6 -488.5922750081711 L 492.0 -502.6465499009863 L 530.4 -520.0 L 568.8 -478.2474573664276 L 607.2 -472.23280718281967 L 645.6 -480.4960779036011 L 684.0 -489.1336781189318" style="stroke:rgb(137,42,226);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <path d="M 331.25714285714287 -519.7980312614154 L 345.54285714285714 -519.7980312614154" style="stroke-width:1;"/> + <path d="M 338.4 -512.6551741185583 L 338.4 -526.9408884042725" style="stroke-width:1;"/> + <path d="M 369.65714285714284 -501.0503624093977 L 383.9428571428571 -501.0503624093977" style="stroke-width:1;"/> + <path d="M 376.8 -493.9075052665405 L 376.8 -508.19321955225485" style="stroke-width:1;"/> + <path d="M 408.0571428571429 -491.98344644608073 L 422.34285714285716 -491.98344644608073" style="stroke-width:1;"/> + <path d="M 415.2 -484.8405893032236 L 415.2 -499.1263035889379" style="stroke-width:1;"/> + <path d="M 446.45714285714286 -488.5922750081711 L 460.74285714285713 -488.5922750081711" style="stroke-width:1;"/> + <path d="M 453.6 -481.44941786531393 L 453.6 -495.7351321510282" style="stroke-width:1;"/> + <path d="M 484.8571428571429 -502.6465499009863 L 499.1428571428571 -502.6465499009863" style="stroke-width:1;"/> + <path d="M 492.0 -495.5036927581292 L 492.0 -509.7894070438434" style="stroke-width:1;"/> + <path d="M 523.2571428571429 -520.0 L 537.5428571428572 -520.0" style="stroke-width:1;"/> + <path d="M 530.4 -512.8571428571429 L 530.4 -527.1428571428571" style="stroke-width:1;"/> + <path d="M 561.6571428571428 -478.2474573664276 L 575.9428571428572 -478.2474573664276" style="stroke-width:1;"/> + <path d="M 568.8 -471.1046002235705 L 568.8 -485.3903145092848" style="stroke-width:1;"/> + <path d="M 600.0571428571428 -472.23280718281967 L 614.3428571428572 -472.23280718281967" style="stroke-width:1;"/> + <path d="M 607.2 -465.08995003996256 L 607.2 -479.37566432567684" style="stroke-width:1;"/> + <path d="M 638.4571428571428 -480.4960779036011 L 652.7428571428572 -480.4960779036011" style="stroke-width:1;"/> + <path d="M 645.6 -473.3532207607439 L 645.6 -487.6389350464582" style="stroke-width:1;"/> + <path d="M 676.8571428571429 -489.1336781189318 L 691.1428571428571 -489.1336781189318" style="stroke-width:1;"/> + <path d="M 684.0 -481.9908209760747 L 684.0 -496.276535261789" style="stroke-width:1;"/> + </g> + <g style="clip-path:url(#clip3);"> + <path d="M 338.4 -431.4694883971315 L 376.8 -440.228164112818 L 415.2 -443.2291446369177 L 453.6 -446.0535346932498 L 492.0 -448.44543671774363 L 530.4 -446.8651106454156 L 568.8 -451.3829715648011 L 607.2 -454.2084190490839 L 645.6 -455.8955453444331 L 684.0 -459.84398131236424" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip4);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 330.4 -423.4694883971315 L 330.4 -439.4694883971315 L 346.4 -439.4694883971315 L 346.4 -423.4694883971315 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -431.4694883971315 M 342.4 -431.4694883971315 L 342.4 -431.469 M 342.4 -431.469 A 4 4 0 1 0 334.4 -431.469 A 4 4 0 1 0 342.4 -431.469 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 368.8 -432.228164112818 L 368.8 -448.228164112818 L 384.8 -448.228164112818 L 384.8 -432.228164112818 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -440.228164112818 M 380.8 -440.228164112818 L 380.8 -440.228 M 380.8 -440.228 A 4 4 0 1 0 372.8 -440.228 A 4 4 0 1 0 380.8 -440.228 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 407.2 -435.2291446369177 L 407.2 -451.2291446369177 L 423.2 -451.2291446369177 L 423.2 -435.2291446369177 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -443.2291446369177 M 419.2 -443.2291446369177 L 419.2 -443.229 M 419.2 -443.229 A 4 4 0 1 0 411.2 -443.229 A 4 4 0 1 0 419.2 -443.229 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 445.6 -438.0535346932498 L 445.6 -454.0535346932498 L 461.6 -454.0535346932498 L 461.6 -438.0535346932498 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -446.0535346932498 M 457.6 -446.0535346932498 L 457.6 -446.054 M 457.6 -446.054 A 4 4 0 1 0 449.6 -446.054 A 4 4 0 1 0 457.6 -446.054 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 484.0 -440.44543671774363 L 484.0 -456.44543671774363 L 500.0 -456.44543671774363 L 500.0 -440.44543671774363 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -448.44543671774363 M 496.0 -448.44543671774363 L 496 -448.445 M 496 -448.445 A 4 4 0 1 0 488 -448.445 A 4 4 0 1 0 496 -448.445 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip10);"> + <path d="M 522.4 -438.8651106454156 L 522.4 -454.8651106454156 L 538.4 -454.8651106454156 L 538.4 -438.8651106454156 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -446.8651106454156 M 534.4 -446.8651106454156 L 534.4 -446.865 M 534.4 -446.865 A 4 4 0 1 0 526.4 -446.865 A 4 4 0 1 0 534.4 -446.865 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip11);"> + <path d="M 560.8 -443.3829715648011 L 560.8 -459.3829715648011 L 576.8 -459.3829715648011 L 576.8 -443.3829715648011 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -451.3829715648011 M 572.8 -451.3829715648011 L 572.8 -451.383 M 572.8 -451.383 A 4 4 0 1 0 564.8 -451.383 A 4 4 0 1 0 572.8 -451.383 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 599.2 -446.2084190490839 L 599.2 -462.2084190490839 L 615.2 -462.2084190490839 L 615.2 -446.2084190490839 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -454.2084190490839 M 611.2 -454.2084190490839 L 611.2 -454.208 M 611.2 -454.208 A 4 4 0 1 0 603.2 -454.208 A 4 4 0 1 0 611.2 -454.208 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip13);"> + <path d="M 637.6 -447.8955453444331 L 637.6 -463.8955453444331 L 653.6 -463.8955453444331 L 653.6 -447.8955453444331 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -455.8955453444331 M 649.6 -455.8955453444331 L 649.6 -455.896 M 649.6 -455.896 A 4 4 0 1 0 641.6 -455.896 A 4 4 0 1 0 649.6 -455.896 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip14);"> + <path d="M 676.0 -451.84398131236424 L 676.0 -467.84398131236424 L 692.0 -467.84398131236424 L 692.0 -451.84398131236424 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -459.84398131236424 M 688.0 -459.84398131236424 L 688 -459.844 M 688 -459.844 A 4 4 0 1 0 680 -459.844 A 4 4 0 1 0 688 -459.844 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip15);"> + <path d="M 290 -154 L 290 -192 L 324 -192 L 324 -154 Z" style="stroke:none;"/> + </g> + <path d="M 300 -182.66666666666669 L 314 -182.66666666666669" style="stroke:rgb(137,42,226);stroke-width:2;"/> + <path d="M 299.85714285714283 -182.66666666666669 L 314.14285714285717 -182.66666666666669" style="stroke-width:1;"/> + <path d="M 307.0 -175.52380952380952 L 307.0 -189.8095238095238" style="stroke-width:1;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-178.0"> + pat_trie_map + </text> + <path d="M 300 -164.66666666666666 L 314 -164.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip16);"> + <path d="M 299.0 -156.66666666666666 L 299.0 -172.66666666666666 L 315.0 -172.66666666666666 L 315.0 -156.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -164.66666666666666 M 311.0 -164.66666666666666 L 311 -164.667 M 311 -164.667 A 4 4 0 1 0 303 -164.667 A 4 4 0 1 0 311 -164.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-160.0"> + n_map + </text> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_vector_tree_local.pdf b/libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_vector_tree_local.pdf Binary files differnew file mode 100644 index 00000000000..8b649d61ac5 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_vector_tree_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_vector_tree_local.png b/libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_vector_tree_local.png Binary files differnew file mode 100644 index 00000000000..6da29328dd2 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_vector_tree_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_vector_tree_local.svg b/libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_vector_tree_local.svg new file mode 100644 index 00000000000..c4cda79fbbf --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_vector_tree_local.svg @@ -0,0 +1,277 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 396.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 338.4 -324.1345145080669 M 342.4 -324.1345145080669 L 342.4 -324.135 M 342.4 -324.135 A 4 4 0 1 0 334.4 -324.135 A 4 4 0 1 0 342.4 -324.135 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 376.8 -325.74238861413437 M 380.8 -325.74238861413437 L 380.8 -325.742 M 380.8 -325.742 A 4 4 0 1 0 372.8 -325.742 A 4 4 0 1 0 380.8 -325.742 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 415.2 -326.29329368633285 M 419.2 -326.29329368633285 L 419.2 -326.293 M 419.2 -326.293 A 4 4 0 1 0 411.2 -326.293 A 4 4 0 1 0 419.2 -326.293 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 453.6 -326.81178115914537 M 457.6 -326.81178115914537 L 457.6 -326.812 M 457.6 -326.812 A 4 4 0 1 0 449.6 -326.812 A 4 4 0 1 0 457.6 -326.812 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 492.0 -327.2508746310667 M 496.0 -327.2508746310667 L 496 -327.251 M 496 -327.251 A 4 4 0 1 0 488 -327.251 A 4 4 0 1 0 496 -327.251 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 530.4 -326.9607662341673 M 534.4 -326.9607662341673 L 534.4 -326.961 M 534.4 -326.961 A 4 4 0 1 0 526.4 -326.961 A 4 4 0 1 0 534.4 -326.961 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 568.8 -327.7901326615696 M 572.8 -327.7901326615696 L 572.8 -327.79 M 572.8 -327.79 A 4 4 0 1 0 564.8 -327.79 A 4 4 0 1 0 572.8 -327.79 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 607.2 -328.30881425174374 M 611.2 -328.30881425174374 L 611.2 -328.309 M 611.2 -328.309 A 4 4 0 1 0 603.2 -328.309 A 4 4 0 1 0 611.2 -328.309 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 645.6 -328.61852850216394 M 649.6 -328.61852850216394 L 649.6 -328.619 M 649.6 -328.619 A 4 4 0 1 0 641.6 -328.619 A 4 4 0 1 0 649.6 -328.619 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 684.0 -329.34336273034893 M 688.0 -329.34336273034893 L 688 -329.343 M 688 -329.343 A 4 4 0 1 0 680 -329.343 A 4 4 0 1 0 688 -329.343 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 290 -154 L 290 -192 L 324 -192 L 324 -154 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 307.0 -164.66666666666666 M 311.0 -164.66666666666666 L 311 -164.667 M 311 -164.667 A 4 4 0 1 0 303 -164.667 A 4 4 0 1 0 311 -164.667 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 4.53e-07 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.5004867321942"> + 9.07e-07 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.5004867321942"> + 1.36e-06 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.5004867321942"> + 1.81e-06 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321942"> + 2.27e-06 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 338.4 -377.0307190724719 L 376.8 -393.70365337698036 L 415.2 -413.55865653138744 L 453.6 -436.4082111643953 L 492.0 -454.96777210621747 L 530.4 -469.36836857592857 L 568.8 -476.60700498969857 L 607.2 -488.72478128708633 L 645.6 -500.8842928172164 L 684.0 -520.0" style="stroke:rgb(255,68,0);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <path d="M 333.4 -372.0307190724719 L 343.4 -382.0307190724719" style="stroke-width:1;"/> + <path d="M 343.4 -372.0307190724719 L 333.4 -382.0307190724719" style="stroke-width:1;"/> + <path d="M 338.4 -369.960719072472 L 338.4 -384.100719072472" style="stroke-width:1;"/> + <path d="M 331.33 -377.0307190724719 L 345.47 -377.0307190724719" style="stroke-width:1;"/> + <path d="M 371.8 -388.70365337698036 L 381.8 -398.70365337698036" style="stroke-width:1;"/> + <path d="M 381.8 -388.70365337698036 L 371.8 -398.70365337698036" style="stroke-width:1;"/> + <path d="M 376.8 -386.6336533769803 L 376.8 -400.7736533769803" style="stroke-width:1;"/> + <path d="M 369.73 -393.70365337698036 L 383.87 -393.70365337698036" style="stroke-width:1;"/> + <path d="M 410.2 -408.55865653138744 L 420.2 -418.55865653138744" style="stroke-width:1;"/> + <path d="M 420.2 -408.55865653138744 L 410.2 -418.55865653138744" style="stroke-width:1;"/> + <path d="M 415.2 -406.4886565313875 L 415.2 -420.6286565313875" style="stroke-width:1;"/> + <path d="M 408.13 -413.55865653138744 L 422.27 -413.55865653138744" style="stroke-width:1;"/> + <path d="M 448.6 -431.4082111643953 L 458.6 -441.4082111643953" style="stroke-width:1;"/> + <path d="M 458.6 -431.4082111643953 L 448.6 -441.4082111643953" style="stroke-width:1;"/> + <path d="M 453.6 -429.3382111643954 L 453.6 -443.47821116439536" style="stroke-width:1;"/> + <path d="M 446.53 -436.4082111643953 L 460.66999999999996 -436.4082111643953" style="stroke-width:1;"/> + <path d="M 487.0 -449.96777210621747 L 497.0 -459.96777210621747" style="stroke-width:1;"/> + <path d="M 497.0 -449.96777210621747 L 487.0 -459.96777210621747" style="stroke-width:1;"/> + <path d="M 492.0 -447.89777210621753 L 492.0 -462.0377721062175" style="stroke-width:1;"/> + <path d="M 484.93 -454.96777210621747 L 499.07 -454.96777210621747" style="stroke-width:1;"/> + <path d="M 525.4 -464.36836857592857 L 535.4 -474.36836857592857" style="stroke-width:1;"/> + <path d="M 535.4 -464.36836857592857 L 525.4 -474.36836857592857" style="stroke-width:1;"/> + <path d="M 530.4 -462.2983685759286 L 530.4 -476.43836857592856" style="stroke-width:1;"/> + <path d="M 523.33 -469.36836857592857 L 537.47 -469.36836857592857" style="stroke-width:1;"/> + <path d="M 563.8 -471.60700498969857 L 573.8 -481.60700498969857" style="stroke-width:1;"/> + <path d="M 573.8 -471.60700498969857 L 563.8 -481.60700498969857" style="stroke-width:1;"/> + <path d="M 568.8 -469.5370049896986 L 568.8 -483.67700498969856" style="stroke-width:1;"/> + <path d="M 561.73 -476.60700498969857 L 575.87 -476.60700498969857" style="stroke-width:1;"/> + <path d="M 602.2 -483.72478128708633 L 612.2 -493.72478128708633" style="stroke-width:1;"/> + <path d="M 612.2 -483.72478128708633 L 602.2 -493.72478128708633" style="stroke-width:1;"/> + <path d="M 607.2 -481.65478128708634 L 607.2 -495.7947812870863" style="stroke-width:1;"/> + <path d="M 600.13 -488.72478128708633 L 614.27 -488.72478128708633" style="stroke-width:1;"/> + <path d="M 640.6 -495.8842928172164 L 650.6 -505.8842928172164" style="stroke-width:1;"/> + <path d="M 650.6 -495.8842928172164 L 640.6 -505.8842928172164" style="stroke-width:1;"/> + <path d="M 645.6 -493.8142928172165 L 645.6 -507.95429281721647" style="stroke-width:1;"/> + <path d="M 638.53 -500.8842928172164 L 652.6700000000001 -500.8842928172164" style="stroke-width:1;"/> + <path d="M 679.0 -515.0 L 689.0 -525.0" style="stroke-width:1;"/> + <path d="M 689.0 -515.0 L 679.0 -525.0" style="stroke-width:1;"/> + <path d="M 684.0 -512.9300000000001 L 684.0 -527.0699999999999" style="stroke-width:1;"/> + <path d="M 676.9300000000001 -520.0 L 691.0699999999999 -520.0" style="stroke-width:1;"/> + </g> + <g style="clip-path:url(#clip3);"> + <path d="M 338.4 -324.1345145080669 L 376.8 -325.74238861413437 L 415.2 -326.29329368633285 L 453.6 -326.81178115914537 L 492.0 -327.2508746310667 L 530.4 -326.9607662341673 L 568.8 -327.7901326615696 L 607.2 -328.30881425174374 L 645.6 -328.61852850216394 L 684.0 -329.34336273034893" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip4);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 330.4 -316.1345145080669 L 330.4 -332.1345145080669 L 346.4 -332.1345145080669 L 346.4 -316.1345145080669 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -324.1345145080669 M 342.4 -324.1345145080669 L 342.4 -324.135 M 342.4 -324.135 A 4 4 0 1 0 334.4 -324.135 A 4 4 0 1 0 342.4 -324.135 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 368.8 -317.74238861413437 L 368.8 -333.74238861413437 L 384.8 -333.74238861413437 L 384.8 -317.74238861413437 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -325.74238861413437 M 380.8 -325.74238861413437 L 380.8 -325.742 M 380.8 -325.742 A 4 4 0 1 0 372.8 -325.742 A 4 4 0 1 0 380.8 -325.742 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 407.2 -318.29329368633285 L 407.2 -334.29329368633285 L 423.2 -334.29329368633285 L 423.2 -318.29329368633285 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -326.29329368633285 M 419.2 -326.29329368633285 L 419.2 -326.293 M 419.2 -326.293 A 4 4 0 1 0 411.2 -326.293 A 4 4 0 1 0 419.2 -326.293 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 445.6 -318.81178115914537 L 445.6 -334.81178115914537 L 461.6 -334.81178115914537 L 461.6 -318.81178115914537 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -326.81178115914537 M 457.6 -326.81178115914537 L 457.6 -326.812 M 457.6 -326.812 A 4 4 0 1 0 449.6 -326.812 A 4 4 0 1 0 457.6 -326.812 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 484.0 -319.2508746310667 L 484.0 -335.2508746310667 L 500.0 -335.2508746310667 L 500.0 -319.2508746310667 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -327.2508746310667 M 496.0 -327.2508746310667 L 496 -327.251 M 496 -327.251 A 4 4 0 1 0 488 -327.251 A 4 4 0 1 0 496 -327.251 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip10);"> + <path d="M 522.4 -318.9607662341673 L 522.4 -334.9607662341673 L 538.4 -334.9607662341673 L 538.4 -318.9607662341673 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -326.9607662341673 M 534.4 -326.9607662341673 L 534.4 -326.961 M 534.4 -326.961 A 4 4 0 1 0 526.4 -326.961 A 4 4 0 1 0 534.4 -326.961 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip11);"> + <path d="M 560.8 -319.7901326615696 L 560.8 -335.7901326615696 L 576.8 -335.7901326615696 L 576.8 -319.7901326615696 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -327.7901326615696 M 572.8 -327.7901326615696 L 572.8 -327.79 M 572.8 -327.79 A 4 4 0 1 0 564.8 -327.79 A 4 4 0 1 0 572.8 -327.79 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 599.2 -320.30881425174374 L 599.2 -336.30881425174374 L 615.2 -336.30881425174374 L 615.2 -320.30881425174374 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -328.30881425174374 M 611.2 -328.30881425174374 L 611.2 -328.309 M 611.2 -328.309 A 4 4 0 1 0 603.2 -328.309 A 4 4 0 1 0 611.2 -328.309 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip13);"> + <path d="M 637.6 -320.61852850216394 L 637.6 -336.61852850216394 L 653.6 -336.61852850216394 L 653.6 -320.61852850216394 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -328.61852850216394 M 649.6 -328.61852850216394 L 649.6 -328.619 M 649.6 -328.619 A 4 4 0 1 0 641.6 -328.619 A 4 4 0 1 0 649.6 -328.619 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip14);"> + <path d="M 676.0 -321.34336273034893 L 676.0 -337.34336273034893 L 692.0 -337.34336273034893 L 692.0 -321.34336273034893 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -329.34336273034893 M 688.0 -329.34336273034893 L 688 -329.343 M 688 -329.343 A 4 4 0 1 0 680 -329.343 A 4 4 0 1 0 688 -329.343 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip15);"> + <path d="M 290 -154 L 290 -192 L 324 -192 L 324 -154 Z" style="stroke:none;"/> + </g> + <path d="M 300 -182.66666666666669 L 314 -182.66666666666669" style="stroke:rgb(255,68,0);stroke-width:2;"/> + <path d="M 302.0 -177.66666666666669 L 312.0 -187.66666666666669" style="stroke-width:1;"/> + <path d="M 312.0 -177.66666666666669 L 302.0 -187.66666666666669" style="stroke-width:1;"/> + <path d="M 307.0 -175.5966666666667 L 307.0 -189.73666666666668" style="stroke-width:1;"/> + <path d="M 299.93 -182.66666666666669 L 314.07 -182.66666666666669" style="stroke-width:1;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-178.0"> + ov_tree_map + </text> + <path d="M 300 -164.66666666666666 L 314 -164.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip16);"> + <path d="M 299.0 -156.66666666666666 L 299.0 -172.66666666666666 L 315.0 -172.66666666666666 L 315.0 -156.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -164.66666666666666 M 311.0 -164.66666666666666 L 311 -164.667 M 311 -164.667 A 4 4 0 1 0 303 -164.667 A 4 4 0 1 0 311 -164.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-160.0"> + n_map + </text> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/xml/images/pbds_tree_text_lor_find_timing_test_local.pdf b/libstdc++-v3/doc/xml/images/pbds_tree_text_lor_find_timing_test_local.pdf Binary files differnew file mode 100644 index 00000000000..2d196155db6 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_tree_text_lor_find_timing_test_local.pdf diff --git a/libstdc++-v3/doc/xml/images/pbds_tree_text_lor_find_timing_test_local.png b/libstdc++-v3/doc/xml/images/pbds_tree_text_lor_find_timing_test_local.png Binary files differnew file mode 100644 index 00000000000..9959143a2b3 --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_tree_text_lor_find_timing_test_local.png diff --git a/libstdc++-v3/doc/xml/images/pbds_tree_text_lor_find_timing_test_local.svg b/libstdc++-v3/doc/xml/images/pbds_tree_text_lor_find_timing_test_local.svg new file mode 100644 index 00000000000..b6f98f41bbd --- /dev/null +++ b/libstdc++-v3/doc/xml/images/pbds_tree_text_lor_find_timing_test_local.svg @@ -0,0 +1,505 @@ +<?xml version="1.0" ?> +<!--Created by PyChart 1.39 Copyright 1999-2006 Yasushi Saito--> +<svg viewBox="250.275 -544.5 535.725 436.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs> + <clipPath id="clip0"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip1"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip2"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip3"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip4"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip5"> + <path d="M 338.4 -456.98891198891204 L 332.15 -466.98891198891204 L 344.65 -466.98891198891204 Z"/> + </clipPath> + <clipPath id="clip6"> + <path d="M 376.8 -472.8200178200178 L 370.55 -482.8200178200178 L 383.05 -482.8200178200178 Z"/> + </clipPath> + <clipPath id="clip7"> + <path d="M 415.2 -478.95703395703396 L 408.95 -488.95703395703396 L 421.45 -488.95703395703396 Z"/> + </clipPath> + <clipPath id="clip8"> + <path d="M 453.6 -486.1632511632512 L 447.35 -496.1632511632512 L 459.85 -496.1632511632512 Z"/> + </clipPath> + <clipPath id="clip9"> + <path d="M 492.0 -489.1174141174141 L 485.75 -499.1174141174141 L 498.25 -499.1174141174141 Z"/> + </clipPath> + <clipPath id="clip10"> + <path d="M 530.4 -493.6040986040986 L 524.15 -503.6040986040986 L 536.65 -503.6040986040986 Z"/> + </clipPath> + <clipPath id="clip11"> + <path d="M 568.8 -498.34323334323335 L 562.55 -508.34323334323335 L 575.05 -508.34323334323335 Z"/> + </clipPath> + <clipPath id="clip12"> + <path d="M 607.2 -503.3981783981784 L 600.95 -513.3981783981784 L 613.45 -513.3981783981784 Z"/> + </clipPath> + <clipPath id="clip13"> + <path d="M 645.6 -506.34244134244136 L 639.35 -516.3424413424414 L 651.85 -516.3424413424414 Z"/> + </clipPath> + <clipPath id="clip14"> + <path d="M 684.0 -512.3170973170973 L 677.75 -522.3170973170973 L 690.25 -522.3170973170973 Z"/> + </clipPath> + <clipPath id="clip15"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip16"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip17"> + <path d="M 338.4 -458.82387882387883 M 342.4 -458.82387882387883 L 342.4 -458.824 M 342.4 -458.824 A 4 4 0 1 0 334.4 -458.824 A 4 4 0 1 0 342.4 -458.824 Z"/> + </clipPath> + <clipPath id="clip18"> + <path d="M 376.8 -473.4590634590635 M 380.8 -473.4590634590635 L 380.8 -473.459 M 380.8 -473.459 A 4 4 0 1 0 372.8 -473.459 A 4 4 0 1 0 380.8 -473.459 Z"/> + </clipPath> + <clipPath id="clip19"> + <path d="M 415.2 -482.72448272448275 M 419.2 -482.72448272448275 L 419.2 -482.724 M 419.2 -482.724 A 4 4 0 1 0 411.2 -482.724 A 4 4 0 1 0 419.2 -482.724 Z"/> + </clipPath> + <clipPath id="clip20"> + <path d="M 453.6 -483.33333333333337 M 457.6 -483.33333333333337 L 457.6 -483.333 M 457.6 -483.333 A 4 4 0 1 0 449.6 -483.333 A 4 4 0 1 0 457.6 -483.333 Z"/> + </clipPath> + <clipPath id="clip21"> + <path d="M 492.0 -512.3789723789723 M 496.0 -512.3789723789723 L 496 -512.379 M 496 -512.379 A 4 4 0 1 0 488 -512.379 A 4 4 0 1 0 496 -512.379 Z"/> + </clipPath> + <clipPath id="clip22"> + <path d="M 530.4 -493.71349371349373 M 534.4 -493.71349371349373 L 534.4 -493.713 M 534.4 -493.713 A 4 4 0 1 0 526.4 -493.713 A 4 4 0 1 0 534.4 -493.713 Z"/> + </clipPath> + <clipPath id="clip23"> + <path d="M 568.8 -495.05098505098505 M 572.8 -495.05098505098505 L 572.8 -495.051 M 572.8 -495.051 A 4 4 0 1 0 564.8 -495.051 A 4 4 0 1 0 572.8 -495.051 Z"/> + </clipPath> + <clipPath id="clip24"> + <path d="M 607.2 -500.3009603009603 M 611.2 -500.3009603009603 L 611.2 -500.301 M 611.2 -500.301 A 4 4 0 1 0 603.2 -500.301 A 4 4 0 1 0 611.2 -500.301 Z"/> + </clipPath> + <clipPath id="clip25"> + <path d="M 645.6 -501.5533115533116 M 649.6 -501.5533115533116 L 649.6 -501.553 M 649.6 -501.553 A 4 4 0 1 0 641.6 -501.553 A 4 4 0 1 0 649.6 -501.553 Z"/> + </clipPath> + <clipPath id="clip26"> + <path d="M 684.0 -508.0437580437581 M 688.0 -508.0437580437581 L 688 -508.044 M 688 -508.044 A 4 4 0 1 0 680 -508.044 A 4 4 0 1 0 688 -508.044 Z"/> + </clipPath> + <clipPath id="clip27"> + <path d="M 294 -294 L 294 -526 L 786 -526 L 786 -294 Z"/> + </clipPath> + <clipPath id="clip28"> + <path d="M 280 -280 L 280 -540 L 800 -540 L 800 -280 Z"/> + </clipPath> + <clipPath id="clip29"> + <path d="M 332.15 -341.18176418176415 L 344.65 -341.18176418176415 L 338.4 -351.18176418176415 Z"/> + </clipPath> + <clipPath id="clip30"> + <path d="M 370.55 -341.91179091179094 L 383.05 -341.91179091179094 L 376.8 -351.91179091179094 Z"/> + </clipPath> + <clipPath id="clip31"> + <path d="M 408.95 -341.82665082665085 L 421.45 -341.82665082665085 L 415.2 -351.82665082665085 Z"/> + </clipPath> + <clipPath id="clip32"> + <path d="M 447.35 -345.4953964953965 L 459.85 -345.4953964953965 L 453.6 -355.4953964953965 Z"/> + </clipPath> + <clipPath id="clip33"> + <path d="M 485.75 -343.044352044352 L 498.25 -343.044352044352 L 492.0 -353.044352044352 Z"/> + </clipPath> + <clipPath id="clip34"> + <path d="M 524.15 -345.6913176913177 L 536.65 -345.6913176913177 L 530.4 -355.6913176913177 Z"/> + </clipPath> + <clipPath id="clip35"> + <path d="M 562.55 -345.4052074052074 L 575.05 -345.4052074052074 L 568.8 -355.4052074052074 Z"/> + </clipPath> + <clipPath id="clip36"> + <path d="M 600.95 -345.7085437085437 L 613.45 -345.7085437085437 L 607.2 -355.7085437085437 Z"/> + </clipPath> + <clipPath id="clip37"> + <path d="M 639.35 -351.85971685971685 L 651.85 -351.85971685971685 L 645.6 -361.85971685971685 Z"/> + </clipPath> + <clipPath id="clip38"> + <path d="M 677.75 -351.7393327393327 L 690.25 -351.7393327393327 L 684.0 -361.7393327393327 Z"/> + </clipPath> + <clipPath id="clip39"> + <path d="M 290 -114 L 290 -188 L 324 -188 L 324 -114 Z"/> + </clipPath> + <clipPath id="clip40"> + <path d="M 307.0 -155.66666666666666 L 300.75 -165.66666666666666 L 313.25 -165.66666666666666 Z"/> + </clipPath> + <clipPath id="clip41"> + <path d="M 307.0 -142.66666666666666 M 311.0 -142.66666666666666 L 311 -142.667 M 311 -142.667 A 4 4 0 1 0 303 -142.667 A 4 4 0 1 0 311 -142.667 Z"/> + </clipPath> + <clipPath id="clip42"> + <path d="M 300.75 -119.66666666666666 L 313.25 -119.66666666666666 L 307.0 -129.66666666666666 Z"/> + </clipPath> + </defs> + <g style="stroke-linejoin:miter;font-size:7;font-family:Gill Sans Std;fill:none;stroke-linecap:butt;stroke:rgb(0,0,0);font-stretch:normal;stroke-dasharray:none;font-weight:normal;font-style:normal;stroke-width:0.5;"> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300 -300 L 780 -300"/> + <path d="M 300.0 -300 L 300.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,300,-279.001)" x="300.0" y="-279.00097346438844"> + 0 + </text> + <path d="M 338.4 -300 L 338.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,338.4,-279.001)" x="338.4" y="-279.00097346438844"> + 200 + </text> + <path d="M 376.8 -300 L 376.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,376.8,-279.001)" x="376.8" y="-279.00097346438844"> + 400 + </text> + <path d="M 415.2 -300 L 415.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,415.2,-279.001)" x="415.2" y="-279.00097346438844"> + 600 + </text> + <path d="M 453.6 -300 L 453.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,453.6,-279.001)" x="453.6" y="-279.00097346438844"> + 800 + </text> + <path d="M 492.0 -300 L 492.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,492,-279.001)" x="492.0" y="-279.00097346438844"> + 1000 + </text> + <path d="M 530.4 -300 L 530.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,530.4,-279.001)" x="530.4" y="-279.00097346438844"> + 1200 + </text> + <path d="M 568.8 -300 L 568.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,568.8,-279.001)" x="568.8" y="-279.00097346438844"> + 1400 + </text> + <path d="M 607.2 -300 L 607.2 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,607.2,-279.001)" x="607.2" y="-279.00097346438844"> + 1600 + </text> + <path d="M 645.6 -300 L 645.6 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,645.6,-279.001)" x="645.6" y="-279.00097346438844"> + 1800 + </text> + <path d="M 684.0 -300 L 684.0 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,684,-279.001)" x="684.0" y="-279.00097346438844"> + 2000 + </text> + <path d="M 722.4 -300 L 722.4 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,722.4,-279.001)" x="722.4" y="-279.00097346438844"> + 2200 + </text> + <path d="M 760.8 -300 L 760.8 -288"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,760.8,-279.001)" x="760.8" y="-279.00097346438844"> + 2400 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="540.0" y="-252.00097346438844"> + Size + </text> + <path d="M 300 -300 L 300 -520"/> + <path d="M 300 -300.0 L 288 -300.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-295.5)" x="288.0" y="-295.50048673219425"> + 0.00e+00 + </text> + <path d="M 300 -344.0 L 288 -344.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-339.5)" x="288.0" y="-339.50048673219425"> + 4.44e-08 + </text> + <path d="M 300 -388.0 L 288 -388.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-383.5)" x="288.0" y="-383.50048673219425"> + 8.89e-08 + </text> + <path d="M 300 -432.0 L 288 -432.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-427.5)" x="288.0" y="-427.5004867321942"> + 1.33e-07 + </text> + <path d="M 300 -476.0 L 288 -476.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-471.5)" x="288.0" y="-471.50048673219425"> + 1.78e-07 + </text> + <path d="M 300 -520.0 L 288 -520.0"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(50,288,-515.5)" x="288.0" y="-515.5004867321942"> + 2.22e-07 + </text> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" transform="rotate(-90,270.275,-410)" x="270.2753777963343" y="-410.0"> + Average time (sec.) + </text> + <g style="clip-path:url(#clip0);"> + <g style="clip-path:url(#clip1);"> + <path d="M 338.4 -466.934956934957 L 376.8 -481.8899118899119 L 415.2 -493.65805365805363 L 453.6 -496.42906642906644 L 492.0 -502.7888327888328 L 530.4 -510.36927036927034 L 568.8 -514.6510246510247 L 607.2 -516.071676071676 L 645.6 -517.034947034947 L 684.0 -520.0" style="stroke:rgb(255,68,0);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip2);"> + <path d="M 333.4 -461.934956934957 L 343.4 -471.934956934957" style="stroke-width:1;"/> + <path d="M 343.4 -461.934956934957 L 333.4 -471.934956934957" style="stroke-width:1;"/> + <path d="M 338.4 -459.8649569349569 L 338.4 -474.0049569349569" style="stroke-width:1;"/> + <path d="M 331.33 -466.934956934957 L 345.47 -466.934956934957" style="stroke-width:1;"/> + <path d="M 371.8 -476.8899118899119 L 381.8 -486.8899118899119" style="stroke-width:1;"/> + <path d="M 381.8 -476.8899118899119 L 371.8 -486.8899118899119" style="stroke-width:1;"/> + <path d="M 376.8 -474.8199118899119 L 376.8 -488.9599118899119" style="stroke-width:1;"/> + <path d="M 369.73 -481.8899118899119 L 383.87 -481.8899118899119" style="stroke-width:1;"/> + <path d="M 410.2 -488.65805365805363 L 420.2 -498.65805365805363" style="stroke-width:1;"/> + <path d="M 420.2 -488.65805365805363 L 410.2 -498.65805365805363" style="stroke-width:1;"/> + <path d="M 415.2 -486.5880536580537 L 415.2 -500.7280536580537" style="stroke-width:1;"/> + <path d="M 408.13 -493.65805365805363 L 422.27 -493.65805365805363" style="stroke-width:1;"/> + <path d="M 448.6 -491.42906642906644 L 458.6 -501.42906642906644" style="stroke-width:1;"/> + <path d="M 458.6 -491.42906642906644 L 448.6 -501.42906642906644" style="stroke-width:1;"/> + <path d="M 453.6 -489.3590664290664 L 453.6 -503.4990664290664" style="stroke-width:1;"/> + <path d="M 446.53 -496.42906642906644 L 460.66999999999996 -496.42906642906644" style="stroke-width:1;"/> + <path d="M 487.0 -497.7888327888328 L 497.0 -507.7888327888328" style="stroke-width:1;"/> + <path d="M 497.0 -497.7888327888328 L 487.0 -507.7888327888328" style="stroke-width:1;"/> + <path d="M 492.0 -495.7188327888328 L 492.0 -509.8588327888328" style="stroke-width:1;"/> + <path d="M 484.93 -502.7888327888328 L 499.07 -502.7888327888328" style="stroke-width:1;"/> + <path d="M 525.4 -505.36927036927034 L 535.4 -515.3692703692703" style="stroke-width:1;"/> + <path d="M 535.4 -505.36927036927034 L 525.4 -515.3692703692703" style="stroke-width:1;"/> + <path d="M 530.4 -503.2992703692704 L 530.4 -517.4392703692704" style="stroke-width:1;"/> + <path d="M 523.33 -510.36927036927034 L 537.47 -510.36927036927034" style="stroke-width:1;"/> + <path d="M 563.8 -509.65102465102467 L 573.8 -519.6510246510247" style="stroke-width:1;"/> + <path d="M 573.8 -509.65102465102467 L 563.8 -519.6510246510247" style="stroke-width:1;"/> + <path d="M 568.8 -507.5810246510247 L 568.8 -521.7210246510247" style="stroke-width:1;"/> + <path d="M 561.73 -514.6510246510247 L 575.87 -514.6510246510247" style="stroke-width:1;"/> + <path d="M 602.2 -511.07167607167605 L 612.2 -521.071676071676" style="stroke-width:1;"/> + <path d="M 612.2 -511.07167607167605 L 602.2 -521.071676071676" style="stroke-width:1;"/> + <path d="M 607.2 -509.0016760716761 L 607.2 -523.1416760716761" style="stroke-width:1;"/> + <path d="M 600.13 -516.071676071676 L 614.27 -516.071676071676" style="stroke-width:1;"/> + <path d="M 640.6 -512.034947034947 L 650.6 -522.034947034947" style="stroke-width:1;"/> + <path d="M 650.6 -512.034947034947 L 640.6 -522.034947034947" style="stroke-width:1;"/> + <path d="M 645.6 -509.96494703494704 L 645.6 -524.104947034947" style="stroke-width:1;"/> + <path d="M 638.53 -517.034947034947 L 652.6700000000001 -517.034947034947" style="stroke-width:1;"/> + <path d="M 679.0 -515.0 L 689.0 -525.0" style="stroke-width:1;"/> + <path d="M 689.0 -515.0 L 679.0 -525.0" style="stroke-width:1;"/> + <path d="M 684.0 -512.93 L 684.0 -527.0699999999999" style="stroke-width:1;"/> + <path d="M 676.9300000000001 -520.0 L 691.0699999999999 -520.0" style="stroke-width:1;"/> + </g> + <g style="clip-path:url(#clip3);"> + <path d="M 338.4 -461.98891198891204 L 376.8 -477.8200178200178 L 415.2 -483.95703395703396 L 453.6 -491.1632511632512 L 492.0 -494.1174141174141 L 530.4 -498.6040986040986 L 568.8 -503.34323334323335 L 607.2 -508.3981783981784 L 645.6 -511.34244134244136 L 684.0 -517.3170973170973" style="stroke:rgb(205,0,0);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip4);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip5);"> + <path d="M 332.15 -456.98891198891204 L 332.15 -466.98891198891204 L 344.65 -466.98891198891204 L 344.65 -456.98891198891204 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -456.98891198891204 L 332.15 -466.98891198891204 L 344.65 -466.98891198891204 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip6);"> + <path d="M 370.55 -472.8200178200178 L 370.55 -482.8200178200178 L 383.05 -482.8200178200178 L 383.05 -472.8200178200178 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -472.8200178200178 L 370.55 -482.8200178200178 L 383.05 -482.8200178200178 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip7);"> + <path d="M 408.95 -478.95703395703396 L 408.95 -488.95703395703396 L 421.45 -488.95703395703396 L 421.45 -478.95703395703396 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -478.95703395703396 L 408.95 -488.95703395703396 L 421.45 -488.95703395703396 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip8);"> + <path d="M 447.35 -486.1632511632512 L 447.35 -496.1632511632512 L 459.85 -496.1632511632512 L 459.85 -486.1632511632512 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -486.1632511632512 L 447.35 -496.1632511632512 L 459.85 -496.1632511632512 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip9);"> + <path d="M 485.75 -489.1174141174141 L 485.75 -499.1174141174141 L 498.25 -499.1174141174141 L 498.25 -489.1174141174141 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -489.1174141174141 L 485.75 -499.1174141174141 L 498.25 -499.1174141174141 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip10);"> + <path d="M 524.15 -493.6040986040986 L 524.15 -503.6040986040986 L 536.65 -503.6040986040986 L 536.65 -493.6040986040986 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -493.6040986040986 L 524.15 -503.6040986040986 L 536.65 -503.6040986040986 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip11);"> + <path d="M 562.55 -498.34323334323335 L 562.55 -508.34323334323335 L 575.05 -508.34323334323335 L 575.05 -498.34323334323335 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -498.34323334323335 L 562.55 -508.34323334323335 L 575.05 -508.34323334323335 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip12);"> + <path d="M 600.95 -503.3981783981784 L 600.95 -513.3981783981784 L 613.45 -513.3981783981784 L 613.45 -503.3981783981784 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -503.3981783981784 L 600.95 -513.3981783981784 L 613.45 -513.3981783981784 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip13);"> + <path d="M 639.35 -506.34244134244136 L 639.35 -516.3424413424414 L 651.85 -516.3424413424414 L 651.85 -506.34244134244136 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -506.34244134244136 L 639.35 -516.3424413424414 L 651.85 -516.3424413424414 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip14);"> + <path d="M 677.75 -512.3170973170973 L 677.75 -522.3170973170973 L 690.25 -522.3170973170973 L 690.25 -512.3170973170973 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -512.3170973170973 L 677.75 -522.3170973170973 L 690.25 -522.3170973170973 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip15);"> + <path d="M 338.4 -458.82387882387883 L 376.8 -473.4590634590635 L 415.2 -482.72448272448275 L 453.6 -483.33333333333337 L 492.0 -512.3789723789723 L 530.4 -493.71349371349373 L 568.8 -495.05098505098505 L 607.2 -500.3009603009603 L 645.6 -501.5533115533116 L 684.0 -508.0437580437581" style="stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip16);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip17);"> + <path d="M 330.4 -450.82387882387883 L 330.4 -466.82387882387883 L 346.4 -466.82387882387883 L 346.4 -450.82387882387883 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 338.4 -458.82387882387883 M 342.4 -458.82387882387883 L 342.4 -458.824 M 342.4 -458.824 A 4 4 0 1 0 334.4 -458.824 A 4 4 0 1 0 342.4 -458.824 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip18);"> + <path d="M 368.8 -465.4590634590635 L 368.8 -481.4590634590635 L 384.8 -481.4590634590635 L 384.8 -465.4590634590635 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 376.8 -473.4590634590635 M 380.8 -473.4590634590635 L 380.8 -473.459 M 380.8 -473.459 A 4 4 0 1 0 372.8 -473.459 A 4 4 0 1 0 380.8 -473.459 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip19);"> + <path d="M 407.2 -474.72448272448275 L 407.2 -490.72448272448275 L 423.2 -490.72448272448275 L 423.2 -474.72448272448275 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 415.2 -482.72448272448275 M 419.2 -482.72448272448275 L 419.2 -482.724 M 419.2 -482.724 A 4 4 0 1 0 411.2 -482.724 A 4 4 0 1 0 419.2 -482.724 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip20);"> + <path d="M 445.6 -475.33333333333337 L 445.6 -491.33333333333337 L 461.6 -491.33333333333337 L 461.6 -475.33333333333337 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 453.6 -483.33333333333337 M 457.6 -483.33333333333337 L 457.6 -483.333 M 457.6 -483.333 A 4 4 0 1 0 449.6 -483.333 A 4 4 0 1 0 457.6 -483.333 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip21);"> + <path d="M 484.0 -504.3789723789724 L 484.0 -520.3789723789723 L 500.0 -520.3789723789723 L 500.0 -504.3789723789724 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 492.0 -512.3789723789723 M 496.0 -512.3789723789723 L 496 -512.379 M 496 -512.379 A 4 4 0 1 0 488 -512.379 A 4 4 0 1 0 496 -512.379 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip22);"> + <path d="M 522.4 -485.71349371349373 L 522.4 -501.71349371349373 L 538.4 -501.71349371349373 L 538.4 -485.71349371349373 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 530.4 -493.71349371349373 M 534.4 -493.71349371349373 L 534.4 -493.713 M 534.4 -493.713 A 4 4 0 1 0 526.4 -493.713 A 4 4 0 1 0 534.4 -493.713 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip23);"> + <path d="M 560.8 -487.05098505098505 L 560.8 -503.05098505098505 L 576.8 -503.05098505098505 L 576.8 -487.05098505098505 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 568.8 -495.05098505098505 M 572.8 -495.05098505098505 L 572.8 -495.051 M 572.8 -495.051 A 4 4 0 1 0 564.8 -495.051 A 4 4 0 1 0 572.8 -495.051 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip24);"> + <path d="M 599.2 -492.3009603009603 L 599.2 -508.3009603009603 L 615.2 -508.3009603009603 L 615.2 -492.3009603009603 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 607.2 -500.3009603009603 M 611.2 -500.3009603009603 L 611.2 -500.301 M 611.2 -500.301 A 4 4 0 1 0 603.2 -500.301 A 4 4 0 1 0 611.2 -500.301 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip25);"> + <path d="M 637.6 -493.5533115533116 L 637.6 -509.5533115533116 L 653.6 -509.5533115533116 L 653.6 -493.5533115533116 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 645.6 -501.5533115533116 M 649.6 -501.5533115533116 L 649.6 -501.553 M 649.6 -501.553 A 4 4 0 1 0 641.6 -501.553 A 4 4 0 1 0 649.6 -501.553 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip26);"> + <path d="M 676.0 -500.0437580437581 L 676.0 -516.0437580437581 L 692.0 -516.0437580437581 L 692.0 -500.0437580437581 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 684.0 -508.0437580437581 M 688.0 -508.0437580437581 L 688 -508.044 M 688 -508.044 A 4 4 0 1 0 680 -508.044 A 4 4 0 1 0 688 -508.044 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="clip-path:url(#clip27);"> + <path d="M 338.4 -346.18176418176415 L 376.8 -346.91179091179094 L 415.2 -346.82665082665085 L 453.6 -350.4953964953965 L 492.0 -348.044352044352 L 530.4 -350.6913176913177 L 568.8 -350.4052074052074 L 607.2 -350.7085437085437 L 645.6 -356.85971685971685 L 684.0 -356.7393327393327" style="stroke:rgb(147,147,147);stroke-width:2;"/> + </g> + <g style="clip-path:url(#clip28);"> + <g style="fill:rgb(255,255,255);clip-path:url(#clip29);"> + <path d="M 332.15 -341.18176418176415 L 332.15 -351.18176418176415 L 344.65 -351.18176418176415 L 344.65 -341.18176418176415 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 332.15 -341.18176418176415 L 344.65 -341.18176418176415 L 338.4 -351.18176418176415 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip30);"> + <path d="M 370.55 -341.91179091179094 L 370.55 -351.91179091179094 L 383.05 -351.91179091179094 L 383.05 -341.91179091179094 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 370.55 -341.91179091179094 L 383.05 -341.91179091179094 L 376.8 -351.91179091179094 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip31);"> + <path d="M 408.95 -341.82665082665085 L 408.95 -351.82665082665085 L 421.45 -351.82665082665085 L 421.45 -341.82665082665085 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 408.95 -341.82665082665085 L 421.45 -341.82665082665085 L 415.2 -351.82665082665085 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip32);"> + <path d="M 447.35 -345.4953964953965 L 447.35 -355.4953964953965 L 459.85 -355.4953964953965 L 459.85 -345.4953964953965 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 447.35 -345.4953964953965 L 459.85 -345.4953964953965 L 453.6 -355.4953964953965 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip33);"> + <path d="M 485.75 -343.044352044352 L 485.75 -353.044352044352 L 498.25 -353.044352044352 L 498.25 -343.044352044352 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 485.75 -343.044352044352 L 498.25 -343.044352044352 L 492.0 -353.044352044352 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip34);"> + <path d="M 524.15 -345.6913176913177 L 524.15 -355.6913176913177 L 536.65 -355.6913176913177 L 536.65 -345.6913176913177 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 524.15 -345.6913176913177 L 536.65 -345.6913176913177 L 530.4 -355.6913176913177 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip35);"> + <path d="M 562.55 -345.4052074052074 L 562.55 -355.4052074052074 L 575.05 -355.4052074052074 L 575.05 -345.4052074052074 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 562.55 -345.4052074052074 L 575.05 -345.4052074052074 L 568.8 -355.4052074052074 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip36);"> + <path d="M 600.95 -345.7085437085437 L 600.95 -355.7085437085437 L 613.45 -355.7085437085437 L 613.45 -345.7085437085437 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 600.95 -345.7085437085437 L 613.45 -345.7085437085437 L 607.2 -355.7085437085437 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip37);"> + <path d="M 639.35 -351.85971685971685 L 639.35 -361.85971685971685 L 651.85 -361.85971685971685 L 651.85 -351.85971685971685 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 639.35 -351.85971685971685 L 651.85 -351.85971685971685 L 645.6 -361.85971685971685 Z"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip38);"> + <path d="M 677.75 -351.7393327393327 L 677.75 -361.7393327393327 L 690.25 -361.7393327393327 L 690.25 -351.7393327393327 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 677.75 -351.7393327393327 L 690.25 -351.7393327393327 L 684.0 -361.7393327393327 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + <g style="fill:rgb(255,255,255);clip-path:url(#clip39);"> + <path d="M 290 -114 L 290 -188 L 324 -188 L 324 -114 Z" style="stroke:none;"/> + </g> + <path d="M 300 -178.66666666666669 L 314 -178.66666666666669" style="stroke:rgb(255,68,0);stroke-width:2;"/> + <path d="M 302.0 -173.66666666666669 L 312.0 -183.66666666666669" style="stroke-width:1;"/> + <path d="M 312.0 -173.66666666666669 L 302.0 -183.66666666666669" style="stroke-width:1;"/> + <path d="M 307.0 -171.59666666666666 L 307.0 -185.73666666666668" style="stroke-width:1;"/> + <path d="M 299.93 -178.66666666666669 L 314.07 -178.66666666666669" style="stroke-width:1;"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-174.0"> + ov_tree_map + </text> + <path d="M 300 -160.66666666666666 L 314 -160.66666666666666" style="stroke:rgb(205,0,0);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip40);"> + <path d="M 300.75 -155.66666666666666 L 300.75 -165.66666666666666 L 313.25 -165.66666666666666 L 313.25 -155.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -155.66666666666666 L 300.75 -165.66666666666666 L 313.25 -165.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-156.0"> + rb_tree_map + </text> + <path d="M 300 -142.66666666666666 L 314 -142.66666666666666" style="stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip41);"> + <path d="M 299.0 -134.66666666666666 L 299.0 -150.66666666666666 L 315.0 -150.66666666666666 L 315.0 -134.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 307.0 -142.66666666666666 M 311.0 -142.66666666666666 L 311 -142.667 M 311 -142.667 A 4 4 0 1 0 303 -142.667 A 4 4 0 1 0 311 -142.667 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-138.0"> + n_map + </text> + <path d="M 300 -124.66666666666666 L 314 -124.66666666666666" style="stroke:rgb(147,147,147);stroke-width:2;"/> + <g style="fill:rgb(255,255,255);clip-path:url(#clip42);"> + <path d="M 300.75 -119.66666666666666 L 300.75 -129.66666666666666 L 313.25 -129.66666666666666 L 313.25 -119.66666666666666 Z" style="stroke:none;"/> + </g> + <g> + <path d="M 300.75 -119.66666666666666 L 313.25 -119.66666666666666 L 307.0 -129.66666666666666 Z"/> + <text style="font-size:14;stroke:none;fill:rgb(0,0,0);" x="314.0" y="-120.0"> + splay_tree_map + </text> + </g> + </g> + </g> + </g> +</svg> diff --git a/libstdc++-v3/doc/html/ext/pb_ds/trie_node_updator_policy_cd.png b/libstdc++-v3/doc/xml/images/pbds_trie_node_updator_policy_cd.png Binary files differindex 4376929ec28..4376929ec28 100644 --- a/libstdc++-v3/doc/html/ext/pb_ds/trie_node_updator_policy_cd.png +++ b/libstdc++-v3/doc/xml/images/pbds_trie_node_updator_policy_cd.png diff --git a/libstdc++-v3/doc/html/ext/pb_ds/update_seq_diagram.png b/libstdc++-v3/doc/xml/images/pbds_update_seq_diagram.png Binary files differindex 880a50edf8e..880a50edf8e 100644 --- a/libstdc++-v3/doc/html/ext/pb_ds/update_seq_diagram.png +++ b/libstdc++-v3/doc/xml/images/pbds_update_seq_diagram.png diff --git a/libstdc++-v3/doc/xml/manual/bitmap_allocator.xml b/libstdc++-v3/doc/xml/manual/bitmap_allocator.xml index 300cbabcd5a..ab6d63b16c4 100644 --- a/libstdc++-v3/doc/xml/manual/bitmap_allocator.xml +++ b/libstdc++-v3/doc/xml/manual/bitmap_allocator.xml @@ -1,8 +1,8 @@ -<section xmlns="http://docbook.org/ns/docbook" version="5.0" +<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="manual.ext.allocator.bitmap" xreflabel="bitmap_allocator"> <?dbhtml filename="bitmap_allocator.html"?> -<info><title>bitmap_allocator</title> +<info><title>The bitmap_allocator</title> <keywordset> <keyword> ISO C++ @@ -558,4 +558,4 @@ equivalent.</para></listitem> </section> -</section> +</chapter> diff --git a/libstdc++-v3/doc/xml/manual/extensions.xml b/libstdc++-v3/doc/xml/manual/extensions.xml index b93c61f1be2..fb2f5ca83e8 100644 --- a/libstdc++-v3/doc/xml/manual/extensions.xml +++ b/libstdc++-v3/doc/xml/manual/extensions.xml @@ -1,4 +1,4 @@ -<part xmlns="http://docbook.org/ns/docbook" version="5.0" +<part xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="manual.ext" xreflabel="Extensions"> <?dbhtml filename="extensions.html"?> @@ -17,13 +17,12 @@ </info> - <preface><info><title/></info> - <para> - Here we will make an attempt at describing the non-Standard extensions to - the library. Some of these are from SGI's STL, some of these are GNU's, - and some just seemed to appear on the doorstep. + Here we will make an attempt at describing the non-Standard + extensions to the library. Some of these are from older versions of + standard library components, namely SGI's STL, and some of these are + GNU's. </para> <para><emphasis>Before</emphasis> you leap in and use any of these extensions, be aware of two things: @@ -53,7 +52,7 @@ extensions, be aware of two things: <!-- Chapter 01 : Compile Time Checks --> <chapter xml:id="manual.ext.compile_checks" xreflabel="Compile Time Checks"><info><title>Compile Time Checks</title></info> <?dbhtml filename="ext_compile_checks.html"?> - + <para> Also known as concept checking. </para> @@ -100,59 +99,57 @@ extensions, be aware of two things: </chapter> <!-- Chapter 02 : Debug Mode --> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="debug_mode.xml"> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" + href="debug_mode.xml"> </xi:include> <!-- Chapter 03 : Parallel Mode --> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="parallel_mode.xml"> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" + href="parallel_mode.xml"> </xi:include> <!-- Chapter 04 : Profile Mode --> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="profile_mode.xml"> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" + href="profile_mode.xml"> </xi:include> -<!-- Chapter 05 : Allocators --> -<chapter xml:id="manual.ext.allocator" xreflabel="Allocators"><info><title>Allocators</title></info> -<?dbhtml filename="ext_allocators.html"?> - - - <!-- Section 01 : __mt_alloc --> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="mt_allocator.xml"> - </xi:include> +<!-- XXX --> +<!-- Allocators --> +<!-- Chapter 05 : __mt_alloc --> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" + href="mt_allocator.xml"> +</xi:include> - <!-- Section 02 : bitmap_allocator --> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="bitmap_allocator.xml"> - </xi:include> +<!-- Chapter 06 : bitmap_allocator --> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" + href="bitmap_allocator.xml"> +</xi:include> -</chapter> +<!-- Containers --> +<!-- Chapter 07 : Policy-Based Data Structures --> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" + href="policy_data_structures.xml"> +</xi:include> -<!-- Chapter 06 : Containers --> -<chapter xml:id="manual.ext.containers" xreflabel="Containers"><info><title>Containers</title></info> +<!-- Chapter 08 : HP/SGI --> +<chapter xml:id="manual.ext.containers" xreflabel="Containers"> + <info><title>HP/SGI Extensions</title></info> <?dbhtml filename="ext_containers.html"?> - - <para> - </para> - <section xml:id="manual.ext.containers.pbds" xreflabel="Policy Based Data Structures"><info><title>Policy Based Data Structures</title></info> - - <para> - <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/index.html">More details here</link>. - </para> - </section> - <section xml:id="manual.ext.containers.sgi" xreflabel="SGI ext"><info><title>HP/SGI</title></info> - - <para> + <section xml:id="manual.ext.containers.sgi" xreflabel="SGI ext"> + <info><title>Backwards Compatibility</title></info> + + <para>A few extensions and nods to backwards-compatibility have + been made with containers. Those dealing with older SGI-style + allocators are dealt with elsewhere. The remaining ones all deal + with bits: + </para> + <para>The old pre-standard <code>bit_vector</code> class is + present for backwards compatibility. It is simply a typedef for + the <code>vector<bool></code> specialization. </para> -<para>A few extensions and nods to backwards-compatibility have been made with - containers. Those dealing with older SGI-style allocators are dealt with - elsewhere. The remaining ones all deal with bits: -</para> -<para>The old pre-standard <code>bit_vector</code> class is present for - backwards compatibility. It is simply a typedef for the - <code>vector<bool></code> specialization. -</para> <para>The <code>bitset</code> class has a number of extensions, described in the rest of this item. First, we'll mention that this implementation of <code>bitset<N></code> is specialized for cases where N number of @@ -197,8 +194,8 @@ extensions, be aware of two things: </section> - <section xml:id="manual.ext.containers.deprecated_sgi" xreflabel="SGI ext dep"><info><title>Deprecated HP/SGI</title></info> - + <section xml:id="manual.ext.containers.deprecated_sgi" xreflabel="SGI ext dep"><info><title>Deprecated</title></info> + <para> The SGI hashing classes <classname>hash_set</classname> and @@ -262,10 +259,10 @@ extensions, be aware of two things: </section> </chapter> -<!-- Chapter 07 : Utilities --> +<!-- Chapter 09 : Utilities --> <chapter xml:id="manual.ext.util" xreflabel="Utilities"><info><title>Utilities</title></info> <?dbhtml filename="ext_utilities.html"?> - + <para> The <functional> header contains many additional functors and helper functions, extending section 20.3. They are @@ -332,10 +329,10 @@ get_temporary_buffer(5, (int*)0); </chapter> -<!-- Chapter 08 : Algorithms --> +<!-- Chapter 10 : Algorithms --> <chapter xml:id="manual.ext.algorithms" xreflabel="Algorithms"><info><title>Algorithms</title></info> <?dbhtml filename="ext_algorithms.html"?> - + <para>25.1.6 (count, count_if) is extended with two more versions of count and count_if. The standard versions return their results. The additional signatures return void, but take a final parameter by @@ -370,10 +367,10 @@ get_temporary_buffer(5, (int*)0); </chapter> -<!-- Chapter 09 : Numerics --> +<!-- Chapter 11 : Numerics --> <chapter xml:id="manual.ext.numerics" xreflabel="Numerics"><info><title>Numerics</title></info> <?dbhtml filename="ext_numerics.html"?> - + <para>26.4, the generalized numeric operations such as accumulate, are extended with the following functions: </para> @@ -395,10 +392,10 @@ get_temporary_buffer(5, (int*)0); void iota(_ForwardIter first, _ForwardIter last, _Tp value);</programlisting> </chapter> -<!-- Chapter 10 : Iterators --> +<!-- Chapter 12 : Iterators --> <chapter xml:id="manual.ext.iterators" xreflabel="Iterators"><info><title>Iterators</title></info> <?dbhtml filename="ext_iterators.html"?> - + <para>24.3.2 describes <code>struct iterator</code>, which didn't exist in the original HP STL implementation (the language wasn't rich enough at the time). For backwards compatibility, base classes are provided which @@ -419,10 +416,10 @@ get_temporary_buffer(5, (int*)0); </chapter> -<!-- Chapter 11 : IO --> +<!-- Chapter 13 : IO --> <chapter xml:id="manual.ext.io" xreflabel="IO"><info><title>Input and Output</title></info> <?dbhtml filename="ext_io.html"?> - + <para> Extensions allowing <code>filebuf</code>s to be constructed from @@ -430,7 +427,7 @@ get_temporary_buffer(5, (int*)0); </para> <section xml:id="manual.ext.io.filebuf_derived" xreflabel="Derived filebufs"><info><title>Derived filebufs</title></info> - + <para>The v2 library included non-standard extensions to construct <code>std::filebuf</code>s from C stdio types such as @@ -489,10 +486,10 @@ get_temporary_buffer(5, (int*)0); </section> </chapter> -<!-- Chapter 12 : Demangling --> +<!-- Chapter 14 : Demangling --> <chapter xml:id="manual.ext.demangle" xreflabel="Demangling"><info><title>Demangling</title></info> <?dbhtml filename="ext_demangling.html"?> - + <para> Transforming C++ ABI identifiers (like RTTI symbols) into the original C++ source identifiers is called @@ -574,7 +571,7 @@ int main() </para> </chapter> -<!-- Chapter 13 : Concurrency --> +<!-- Chapter 15 : Concurrency --> <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="concurrency_extensions.xml"> </xi:include> diff --git a/libstdc++-v3/doc/xml/manual/mt_allocator.xml b/libstdc++-v3/doc/xml/manual/mt_allocator.xml index b31b593bc29..8d4d127e6c4 100644 --- a/libstdc++-v3/doc/xml/manual/mt_allocator.xml +++ b/libstdc++-v3/doc/xml/manual/mt_allocator.xml @@ -1,8 +1,8 @@ -<section xmlns="http://docbook.org/ns/docbook" version="5.0" +<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="manual.ext.allocator.mt" xreflabel="mt allocator"> <?dbhtml filename="mt_allocator.html"?> -<info><title>mt_allocator</title> +<info><title>The mt_allocator</title> <keywordset> <keyword> ISO C++ @@ -552,4 +552,4 @@ and forth" between freelists. </section> -</section> +</chapter> diff --git a/libstdc++-v3/doc/xml/manual/policy_data_structures.xml b/libstdc++-v3/doc/xml/manual/policy_data_structures.xml new file mode 100644 index 00000000000..e9495db6091 --- /dev/null +++ b/libstdc++-v3/doc/xml/manual/policy_data_structures.xml @@ -0,0 +1,6584 @@ +<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="manual.ext.containers.pbds" xreflabel="pbds"> + <info> + <title>Policy-Based Data Structures</title> + <keywordset> + <keyword> + ISO C++ + </keyword> + <keyword> + policy + </keyword> + <keyword> + container + </keyword> + <keyword> + data + </keyword> + <keyword> + structure + </keyword> + <keyword> + associated + </keyword> + <keyword> + tree + </keyword> + <keyword> + trie + </keyword> + <keyword> + hash + </keyword> + <keyword> + metaprogramming + </keyword> + </keywordset> + </info> + <?dbhtml filename="policy_data_structures.html"?> + + <!-- 2006-04-01 Ami Tavory --> + <!-- 2011-05-25 Benjamin Kosnik --> + + <!-- S01: intro --> + <section xml:id="pbds.intro"> + <info><title>Intro</title></info> + + <para> + 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 <literal>std</literal> and + <literal>std::tr1</literal> (except for some points where it differs + by design). + </para> + <para> + </para> + + <section xml:id="pbds.intro.issues"> + <info><title>Performance Issues</title></info> + <para> + </para> + + <para> + An attempt is made to categorize the wide variety of possible + container designs in terms of performance-impacting factors. These + performance factors are translated into design policies and + incorporated into container design. + </para> + + <para> + There is tension between unravelling factors into a coherent set of + policies. Every attempt is made to make a minimal set of + factors. However, in many cases multiple factors make for long + template names. Every attempt is made to alias and use typedefs in + the source files, but the generated names for external symbols can + be large for binary files or debuggers. + </para> + + <para> + In many cases, the longer names allow capabilities and behaviours + controlled by macros to also be unamibiguously emitted as distinct + generated names. + </para> + + <para> + Specific issues found while unraveling performance factors in the + design of associative containers and priority queues follow. + </para> + + <section xml:id="pbds.intro.issues.associative"> + <info><title>Associative</title></info> + + <para> + Associative containers depend on their composite 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. + </para> + + <para> + 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. + </para> + + <programlisting> + template<typename Cntnr> + void + some_op_sequence(Cntnr& r_cnt) + { + ... + } + </programlisting> + + <para> + Given this, then what can one assume about the instantiating + container? The answer varies according to its underlying data + structure. If the underlying data structure of + <literal>Cntnr</literal> 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 <literal>Cntnr</literal> is based + on a collision-chaining hash table, then modifying + r_<literal>Cntnr</literal> 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 a reference to the container can efficiently be split; + otherwise, it cannot, in general. If the underlying data structure + is a red-black tree, then splitting a reference to the container is + exception-free; if it is an ordered-vector tree, exceptions can be + thrown. + </para> + + </section> + + <section xml:id="pbds.intro.issues.priority_queue"> + <info><title>Priority Que</title></info> + + <para> + Priority queues are useful when one needs to efficiently access a + minimum (or maximum) value as the set of values changes. + </para> + + <para> + 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... + </para> + + <para> + Priority queues, like hash-based containers, store values in an + order that is meaningless and undefined externally. For example, a + <code>push</code> 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. + </para> + + <para> + Roughly speaking, any element that is both inserted to a priority + queue (e.g. through <code>push</code>) and removed + from it (e.g., through <code>pop</code>), 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) + <code>push</code> and <code>pop</code> 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. + </para> + </section> + </section> + + <section xml:id="pbds.intro.motivation"> + <info><title>Goals</title></info> + + <para> + Many fine associative-container libraries were already written, + most notably, the C++ standard's associative containers. Why + then write another library? This section shows some possible + advantages of this library, when considering the challenges in + the introduction. Many of these points stem from the fact that + the ISO C++ process introduced associative-containers in a + two-step process (first standardizing tree-based containers, + only then adding hash-based containers, which are fundamentally + different), did not standardize priority queues as containers, + and (in our opinion) overloads the iterator concept. + </para> + + <section xml:id="pbds.intro.motivation.associative"> + <info><title>Associative</title></info> + <para> + </para> + + <section xml:id="motivation.associative.policy"> + <info><title>Policy Choices</title></info> + <para> + Associative containers require a relatively large number of + policies to function efficiently in various settings. In some + cases this is needed for making their common operations more + efficient, and in other cases this allows them to support a + larger set of operations + </para> + + <orderedlist> + <listitem> + <para> + Hash-based containers, for example, support look-up and + insertion methods (<function>find</function> and + <function>insert</function>). In order to locate elements + quickly, they are supplied a hash functor, which instruct + how to transform a key object into some size type; a hash + functor might transform <constant>"hello"</constant> + into <constant>1123002298</constant>. A hash table, though, + requires transforming each key object into some size-type + type in some specific domain; a hash table with a 128-long + table might transform <constant>"hello"</constant> into + position <constant>63</constant>. The policy by which the + hash value is transformed into a position within the table + can dramatically affect performance. Hash-based containers + also do not resize naturally (as opposed to tree-based + containers, for example). The appropriate resize policy is + unfortunately intertwined with the policy that transforms + hash value into a position within the table. + </para> + </listitem> + + <listitem> + <para> + Tree-based containers, for example, also support look-up and + insertion methods, and are primarily useful when maintaining + order between elements is important. In some cases, though, + one can utilize their balancing algorithms for completely + different purposes. + </para> + + <para> + Figure A shows a tree whose each node contains two entries: + a floating-point key, and some size-type + <emphasis>metadata</emphasis> (in bold beneath it) that is + the number of nodes in the sub-tree. (The root has key 0.99, + and has 5 nodes (including itself) in its sub-tree.) A + container based on this data structure can obviously answer + efficiently whether 0.3 is in the container object, but it + can also answer what is the order of 0.3 among all those in + the container object: see <xref linkend="biblio.clrs2001"/>. + + </para> + + <para> + As another example, Figure B shows a tree whose each node + contains two entries: a half-open geometric line interval, + and a number <emphasis>metadata</emphasis> (in bold beneath + it) that is the largest endpoint of all intervals in its + sub-tree. (The root describes the interval <constant>[20, + 36)</constant>, and the largest endpoint in its sub-tree is + 99.) A container based on this data structure can obviously + answer efficiently whether <constant>[3, 41)</constant> is + in the container object, but it can also answer efficiently + whether the container object has intervals that intersect + <constant>[3, 41)</constant>. These types of queries are + very useful in geometric algorithms and lease-management + algorithms. + </para> + + <para> + It is important to note, however, that as the trees are + modified, their internal structure changes. To maintain + these invariants, one must supply some policy that is aware + of these changes. Without this, it would be better to use a + linked list (in itself very efficient for these purposes). + </para> + + </listitem> + </orderedlist> + + <figure> + <title>Node Invariants</title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_node_invariants.png"/> + </imageobject> + <textobject> + <phrase>Node Invariants</phrase> + </textobject> + </mediaobject> + </figure> + + </section> + + <section xml:id="motivation.associative.underlying"> + <info><title>Underlying Data Structures</title></info> + <para> + The standard C++ library contains associative containers based on + red-black trees and collision-chaining hash tables. These are + very useful, but they are not ideal for all types of + settings. + </para> + + <para> + The figure below shows the different underlying data structures + currently supported in this library. + </para> + + <figure> + <title>Underlying Associative Data Structures</title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_different_underlying_dss_1.png"/> + </imageobject> + <textobject> + <phrase>Underlying Associative Data Structures</phrase> + </textobject> + </mediaobject> + </figure> + + <para> + A shows a collision-chaining hash-table, B shows a probing + hash-table, C shows a red-black tree, D shows a splay tree, E shows + a tree based on an ordered vector(implicit in the order of the + elements), F shows a PATRICIA trie, and G shows a list-based + container with update policies. + </para> + + <para> + Each of these data structures has some performance benefits, in + terms of speed, size or both. For now, note that vector-based trees + and probing hash tables manipulate memory more efficiently than + red-black trees and collision-chaining hash tables, and that + list-based associative containers are very useful for constructing + "multimaps". + </para> + + <para> + Now consider a function manipulating a generic associative + container, + </para> + <programlisting> + template<class Cntnr> + int + some_op_sequence(Cntnr &r_cnt) + { + ... + } + </programlisting> + + <para> + Ideally, the underlying data structure + of <classname>Cntnr</classname> would not affect what can be + done with <varname>r_cnt</varname>. Unfortunately, this is not + the case. + </para> + + <para> + For example, if <classname>Cntnr</classname> + is <classname>std::map</classname>, then the function can + use + </para> + <programlisting> + std::for_each(r_cnt.find(foo), r_cnt.find(bar), foobar) + </programlisting> + <para> + in order to apply <classname>foobar</classname> to all + elements between <classname>foo</classname> and + <classname>bar</classname>. If + <classname>Cntnr</classname> is a hash-based container, + then this call's results are undefined. + </para> + + <para> + Also, if <classname>Cntnr</classname> is tree-based, the type + and object of the comparison functor can be + accessed. If <classname>Cntnr</classname> is hash based, these + queries are nonsensical. + </para> + + <para> + There are various other differences based on the container's + underlying data structure. For one, they can be constructed by, + and queried for, different policies. Furthermore: + </para> + + <orderedlist> + <listitem> + <para> + Containers based on C, D, E and F store elements in a + meaningful order; the others store elements in a meaningless + (and probably time-varying) order. By implication, only + containers based on C, D, E and F can + support <function>erase</function> operations taking an + iterator and returning an iterator to the following element + without performance loss. + </para> + </listitem> + + <listitem> + <para> + Containers based on C, D, E, and F can be split and joined + efficiently, while the others cannot. Containers based on C + and D, furthermore, can guarantee that this is exception-free; + containers based on E cannot guarantee this. + </para> + </listitem> + + <listitem> + <para> + Containers based on all but E can guarantee that + erasing an element is exception free; containers based on E + cannot guarantee this. Containers based on all but B and E + can guarantee that modifying an object of their type does + not invalidate iterators or references to their elements, + while containers based on B and E cannot. Containers based + on C, D, and E can furthermore make a stronger guarantee, + namely that modifying an object of their type does not + affect the order of iterators. + </para> + </listitem> + </orderedlist> + + <para> + A unified tag and traits system (as used for the C++ standard + library iterators, for example) can ease generic manipulation of + associative containers based on different underlying data + structures. + </para> + + </section> + + <section xml:id="motivation.associative.iterators"> + <info><title>Iterators</title></info> + <para> + Iterators are centric to the design of the standard library + containers, because of the container/algorithm/iterator + decomposition that allows an algorithm to operate on a range + through iterators of some sequence. Iterators, then, are useful + because they allow going over a + specific <emphasis>sequence</emphasis>. The standard library + also uses iterators for accessing a + specific <emphasis>element</emphasis>: when an associative + container returns one through <function>find</function>. The + standard library consistently uses the same types of iterators + for both purposes: going over a range, and accessing a specific + found element. Before the introduction of hash-based containers + to the standard library, this made sense (with the exception of + priority queues, which are discussed later). + </para> + + <para> + Using the standard associative containers together with + non-order-preserving associative containers (and also because of + priority-queues container), there is a possible need for + different types of iterators for self-organizing containers: + the iterator concept seems overloaded to mean two different + things (in some cases). <remark> XXX + "ds_gen.html#find_range">Design::Associative + Containers::Data-Structure Genericity::Point-Type and Range-Type + Methods</remark>. + </para> + + <section xml:id="associative.iterators.using"> + <info> + <title>Using Point Iterators for Range Operations</title> + </info> + <para> + Suppose <classname>cntnr</classname> is some associative + container, and say <varname>c</varname> is an object of + type <classname>cntnr</classname>. Then what will be the outcome + of + </para> + + <programlisting> + std::for_each(c.find(1), c.find(5), foo); + </programlisting> + + <para> + If <classname>cntnr</classname> is a tree-based container + object, then an in-order walk will + apply <classname>foo</classname> to the relevant elements, + as in the graphic below, label A. If <varname>c</varname> is + a hash-based container, then the order of elements between any + two elements is undefined (and probably time-varying); there is + no guarantee that the elements traversed will coincide with the + <emphasis>logical</emphasis> elements between 1 and 5, as in + label B. + </para> + + <figure> + <title>Range Iteration in Different Data Structures</title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_point_iterators_range_ops_1.png"/> + </imageobject> + <textobject> + <phrase>Node Invariants</phrase> + </textobject> + </mediaobject> + </figure> + + <para> + In our opinion, this problem is not caused just because + red-black trees are order preserving while + collision-chaining hash tables are (generally) not - it + is more fundamental. Most of the standard's containers + order sequences in a well-defined manner that is + determined by their <emphasis>interface</emphasis>: + calling <function>insert</function> on a tree-based + container modifies its sequence in a predictable way, as + does calling <function>push_back</function> on a list or + a vector. Conversely, collision-chaining hash tables, + probing hash tables, priority queues, and list-based + containers (which are very useful for "multimaps") are + self-organizing data structures; the effect of each + operation modifies their sequences in a manner that is + (practically) determined by their + <emphasis>implementation</emphasis>. + </para> + + <para> + Consequently, applying an algorithm to a sequence obtained from most + containers may or may not make sense, but applying it to a + sub-sequence of a self-organizing container does not. + </para> + </section> + + <section xml:id="associative.iterators.cost"> + <info> + <title>Cost to Point Iterators to Enable Range Operations</title> + </info> + <para> + Suppose <varname>c</varname> is some collision-chaining + hash-based container object, and one calls + </para> + <programlisting>c.find(3)</programlisting> + <para> + Then what composes the returned iterator? + </para> + + <para> + In the graphic below, label A shows the simplest (and + most efficient) implementation of a collision-chaining + hash table. The little box marked + <classname>point_iterator</classname> shows an object + that contains a pointer to the element's node. Note that + this "iterator" has no way to move to the next element ( + it cannot support + <function>operator++</function>). Conversely, the little + box marked <classname>iterator</classname> stores both a + pointer to the element, as well as some other + information (the bucket number of the element). the + second iterator, then, is "heavier" than the first one- + it requires more time and space. If we were to use a + different container to cross-reference into this + hash-table using these iterators - it would take much + more space. As noted above, nothing much can be done by + incrementing these iterators, so why is this extra + information needed? + </para> + + <para> + Alternatively, one might create a collision-chaining hash-table + where the lists might be linked, forming a monolithic total-element + list, as in the graphic below, label B. Here the iterators are as + light as can be, but the hash-table's operations are more + complicated. + </para> + + <figure> + <title>Point Iteration in Hash Data Structures</title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_point_iterators_range_ops_2.png"/> + </imageobject> + <textobject> + <phrase>Point Iteration in Hash Data Structures</phrase> + </textobject> + </mediaobject> + </figure> + + <para> + It should be noted that containers based on collision-chaining + hash-tables are not the only ones with this type of behavior; + many other self-organizing data structures display it as well. + </para> + </section> + + <section xml:id="associative.iterators.invalidation"> + <info><title>Invalidation Guarantees</title></info> + <para>Consider the following snippet:</para> + <programlisting> + it = c.find(3); + c.erase(5); + </programlisting> + + <para> + Following the call to <classname>erase</classname>, what is the + validity of <classname>it</classname>: can it be de-referenced? + can it be incremented? + </para> + + <para> + The answer depends on the underlying data structure of the + container. The graphic below shows three cases: A1 and A2 show + a red-black tree; B1 and B2 show a probing hash-table; C1 and C2 + show a collision-chaining hash table. + </para> + + <figure> + <title>Effect of erase in different underlying data structures</title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_invalidation_guarantee_erase.png"/> + </imageobject> + <textobject> + <phrase>Effect of erase in different underlying data structures</phrase> + </textobject> + </mediaobject> + </figure> + + <orderedlist> + <listitem> + <para> + Erasing 5 from A1 yields A2. Clearly, an iterator to 3 can + be de-referenced and incremented. The sequence of iterators + changed, but in a way that is well-defined by the interface. + </para> + </listitem> + + <listitem> + <para> + Erasing 5 from B1 yields B2. Clearly, an iterator to 3 is + not valid at all - it cannot be de-referenced or + incremented; the order of iterators changed in a way that is + (practically) determined by the implementation and not by + the interface. + </para> + </listitem> + + <listitem> + <para> + Erasing 5 from C1 yields C2. Here the situation is more + complicated. On the one hand, there is no problem in + de-referencing <classname>it</classname>. On the other hand, + the order of iterators changed in a way that is + (practically) determined by the implementation and not by + the interface. + </para> + </listitem> + </orderedlist> + + <para> + So in the standard library containers, it is not always possible + to express whether <varname>it</varname> is valid or not. This + is true also for <function>insert</function>. Again, the + iterator concept seems overloaded. + </para> + </section> + </section> <!--iterators--> + + + <section xml:id="motivation.associative.functions"> + <info><title>Functional</title></info> + <para> + </para> + + <para> + The design of the functional overlay to the underlying data + structures differs slightly from some of the conventions used in + the C++ standard. A strict public interface of methods that + comprise only operations which depend on the class's internal + structure; other operations are best designed as external + functions. (See <xref linkend="biblio.meyers02both"/>).With this + rubric, the standard associative containers lack some useful + methods, and provide other methods which would be better + removed. + </para> + + <section xml:id="motivation.associative.functions.erase"> + <info><title><function>erase</function></title></info> + + <orderedlist> + <listitem> + <para> + Order-preserving standard associative containers provide the + method + </para> + <programlisting> + iterator + erase(iterator it) + </programlisting> + + <para> + which takes an iterator, erases the corresponding + element, and returns an iterator to the following + element. Also standardd hash-based associative + containers provide this method. This seemingly + increasesgenericity between associative containers, + since it is possible to use + </para> + <programlisting> + typename C::iterator it = c.begin(); + typename C::iterator e_it = c.end(); + + while(it != e_it) + it = pred(*it)? c.erase(it) : ++it; + </programlisting> + + <para> + in order to erase from a container object <varname> + c</varname> all element which match a + predicate <classname>pred</classname>. However, in a + different sense this actually decreases genericity: an + integral implication of this method is that tree-based + associative containers' memory use is linear in the total + number of elements they store, while hash-based + containers' memory use is unbounded in the total number of + elements they store. Assume a hash-based container is + allowed to decrease its size when an element is + erased. Then the elements might be rehashed, which means + that there is no "next" element - it is simply + undefined. Consequently, it is possible to infer from the + fact that the standard library's hash-based containers + provide this method that they cannot downsize when + elements are erased. As a consequence, different code is + needed to manipulate different containers, assuming that + memory should be conserved. Therefor, this library's + non-order preserving associative containers omit this + method. + </para> + </listitem> + + <listitem> + <para> + All associative containers include a conditional-erase method + </para> + <programlisting> + template< + class Pred> + size_type + erase_if + (Pred pred) + </programlisting> + <para> + which erases all elements matching a predicate. This is probably the + only way to ensure linear-time multiple-item erase which can + actually downsize a container. + </para> + </listitem> + + <listitem> + <para> + The standard associative containers provide methods for + multiple-item erase of the form + </para> + <programlisting> + size_type + erase(It b, It e) + </programlisting> + <para> + erasing a range of elements given by a pair of + iterators. For tree-based or trie-based containers, this can + implemented more efficiently as a (small) sequence of split + and join operations. For other, unordered, containers, this + method isn't much better than an external loop. Moreover, + if <varname>c</varname> is a hash-based container, + then + </para> + <programlisting> + c.erase(c.find(2), c.find(5)) + </programlisting> + <para> + is almost certain to do something + different than erasing all elements whose keys are between 2 + and 5, and is likely to produce other undefined behavior. + </para> + </listitem> + </orderedlist> + </section> <!-- erase --> + + <section xml:id="motivation.associative.functions.split"> + <info> + <title> + <function>split</function> and <function>join</function> + </title> + </info> + <para> + It is well-known that tree-based and trie-based container + objects can be efficiently split or joined (See + <xref linkend="biblio.clrs2001"/>). Externally splitting or + joining trees is super-linear, and, furthermore, can throw + exceptions. Split and join methods, consequently, seem good + choices for tree-based container methods, especially, since as + noted just before, they are efficient replacements for erasing + sub-sequences. + </para> + + </section> <!-- split --> + + <section xml:id="motivation.associative.functions.insert"> + <info> + <title> + <function>insert</function> + </title> + </info> + <para> + The standard associative containers provide methods of the form + </para> + <programlisting> + template<class It> + size_type + insert(It b, It e); + </programlisting> + + <para> + for inserting a range of elements given by a pair of + iterators. At best, this can be implemented as an external loop, + or, even more efficiently, as a join operation (for the case of + tree-based or trie-based containers). Moreover, these methods seem + similar to constructors taking a range given by a pair of + iterators; the constructors, however, are transactional, whereas + the insert methods are not; this is possibly confusing. + </para> + + </section> <!-- insert --> + + <section xml:id="motivation.associative.functions.compare"> + <info> + <title> + <function>operator==</function> and <function>operator<=</function> + </title> + </info> + + <para> + Associative containers are parametrized by policies allowing to + test key equivalence: a hash-based container can do this through + its equivalence functor, and a tree-based container can do this + through its comparison functor. In addition, some standard + associative containers have global function operators, like + <function>operator==</function> and <function>operator<=</function>, + that allow comparing entire associative containers. + </para> + + <para> + In our opinion, these functions are better left out. To begin + with, they do not significantly improve over an external + loop. More importantly, however, they are possibly misleading - + <function>operator==</function>, for example, usually checks for + equivalence, or interchangeability, but the associative + container cannot check for values' equivalence, only keys' + equivalence; also, are two containers considered equivalent if + they store the same values in different order? this is an + arbitrary decision. + </para> + </section> <!-- compare --> + + </section> <!-- functional --> + + </section> <!--associative--> + + <section xml:id="pbds.intro.motivation.priority_queue"> + <info><title>Priority Queues</title></info> + + <section xml:id="motivation.priority_queue.policy"> + <info><title>Policy Choices</title></info> + + <para> + Priority queues are containers that allow efficiently inserting + values and accessing the maximal value (in the sense of the + container's comparison functor). Their interface + supports <function>push</function> + and <function>pop</function>. The standard + container <classname>std::priorityqueue</classname> indeed support + these methods, but little else. For algorithmic and + software-engineering purposes, other methods are needed: + </para> + + <orderedlist> + <listitem> + <para> + Many graph algorithms (see + <xref linkend="biblio.clrs2001"/>) require increasing a + value in a priority queue (again, in the sense of the + container's comparison functor), or joining two + priority-queue objects. + </para> + </listitem> + + <listitem> + <para>The return type of <classname>priority_queue</classname>'s + <function>push</function> method is a point-type iterator, which can + be used for modifying or erasing arbitrary values. For + example:</para> + <programlisting> + priority_queue<int> p; + priority_queue<int>::point_iterator it = p.push(3); + p.modify(it, 4); + </programlisting> + + <para>These types of cross-referencing operations are necessary + for making priority queues useful for different applications, + especially graph applications.</para> + + </listitem> + <listitem> + <para> + It is sometimes necessary to erase an arbitrary value in a + priority queue. For example, consider + the <function>select</function> function for monitoring + file descriptors: + </para> + + <programlisting> + int + select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *errorfds, + struct timeval *timeout); + </programlisting> + <para> + then, as the select documentation states: + </para> + <para> + <quote> + The nfds argument specifies the range of file + descriptors to be tested. The select() function tests file + descriptors in the range of 0 to nfds-1.</quote> + </para> + + <para> + It stands to reason, therefore, that we might wish to + maintain a minimal value for <varname>nfds</varname>, and + priority queues immediately come to mind. Note, though, that + when a socket is closed, the minimal file description might + change; in the absence of an efficient means to erase an + arbitrary value from a priority queue, we might as well + avoid its use altogether. + </para> + + <para> + The standard containers typically support iterators. It is + somewhat unusual + for <classname>std::priority_queue</classname> to omit them + (See <xref linkend="biblio.meyers01stl"/>). One might + ask why do priority queues need to support iterators, since + they are self-organizing containers with a different purpose + than abstracting sequences. There are several reasons: + </para> + <orderedlist> + <listitem> + <para> + Iterators (even in self-organizing containers) are + useful for many purposes: cross-referencing + containers, serialization, and debugging code that uses + these containers. + </para> + </listitem> + + <listitem> + <para> + The standard library's hash-based containers support + iterators, even though they too are self-organizing + containers with a different purpose than abstracting + sequences. + </para> + </listitem> + + <listitem> + <para> + In standard-library-like containers, it is natural to specify the + interface of operations for modifying a value or erasing + a value (discussed previously) in terms of a iterators. + It should be noted that the standard + containers also use iterators for accessing and + manipulating a specific value. In hash-based + containers, one checks the existence of a key by + comparing the iterator returned by <function>find</function> to the + iterator returned by <function>end</function>, and not by comparing a + pointer returned by <function>find</function> to <type>NULL</type>. + </para> + </listitem> + </orderedlist> + </listitem> + </orderedlist> + + </section> + + <section xml:id="motivation.priority_queue.underlying"> + <info><title>Underlying Data Structures</title></info> + + <para> + There are three main implementations of priority queues: the + first employs a binary heap, typically one which uses a + sequence; the second uses a tree (or forest of trees), which is + typically less structured than an associative container's tree; + the third simply uses an associative container. These are + shown in the figure below with labels A1 and A2, B, and C. + </para> + + <figure> + <title>Underlying Priority Queue Data Structures</title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_different_underlying_dss_2.png"/> + </imageobject> + <textobject> + <phrase>Underlying Priority Queue Data Structures</phrase> + </textobject> + </mediaobject> + </figure> + + <para> + No single implementation can completely replace any of the + others. Some have better <function>push</function> + and <function>pop</function> amortized performance, some have + better bounded (worst case) response time than others, some + optimize a single method at the expense of others, etc. In + general the "best" implementation is dictated by the specific + problem. + </para> + + <para> + As with associative containers, the more implementations + co-exist, the more necessary a traits mechanism is for handling + generic containers safely and efficiently. This is especially + important for priority queues, since the invalidation guarantees + of one of the most useful data structures - binary heaps - is + markedly different than those of most of the others. + </para> + + </section> + + <section xml:id="motivation.priority_queue.binary_heap"> + <info><title>Binary Heaps</title></info> + + + <para> + Binary heaps are one of the most useful underlying + data structures for priority queues. They are very efficient in + terms of memory (since they don't require per-value structure + metadata), and have the best amortized <function>push</function> and + <function>pop</function> performance for primitive types like + <type>int</type>. + </para> + + <para> + The standard library's <classname>priority_queue</classname> + implements this data structure as an adapter over a sequence, + typically + <classname>std::vector</classname> + or <classname>std::deque</classname>, which correspond to labels + A1 and A2 respectively in the graphic above. + </para> + + <para> + This is indeed an elegant example of the adapter concept and + the algorithm/container/iterator decomposition. (See <xref linkend="biblio.nelson96stlpq"/>). There are + several reasons why a binary-heap priority queue + may be better implemented as a container instead of a + sequence adapter: + </para> + + <orderedlist> + <listitem> + <para> + <classname>std::priority_queue</classname> cannot erase values + from its adapted sequence (irrespective of the sequence + type). This means that the memory use of + an <classname>std::priority_queue</classname> object is always + proportional to the maximal number of values it ever contained, + and not to the number of values that it currently + contains. (See <filename>performance/priority_queue_text_pop_mem_usage.cc</filename>.) + This implementation of binary heaps acts very differently than + other underlying data structures (See also pairing heaps). + </para> + </listitem> + + <listitem> + <para> + Some combinations of adapted sequences and value types + are very inefficient or just don't make sense. If one uses + <classname>std::priority_queue<std::vector<std::string> + > ></classname>, for example, then not only will each + operation perform a logarithmic number of + <classname>std::string</classname> assignments, but, furthermore, any + operation (including <function>pop</function>) can render the container + useless due to exceptions. Conversely, if one uses + <classname>std::priority_queue<std::deque<int> > + ></classname>, then each operation uses incurs a logarithmic + number of indirect accesses (through pointers) unnecessarily. + It might be better to let the container make a conservative + deduction whether to use the structure in the graphic above, labels A1 or A2. + </para> + </listitem> + + <listitem> + <para> + There does not seem to be a systematic way to determine + what exactly can be done with the priority queue. + </para> + <orderedlist> + <listitem> + <para> + If <classname>p</classname> is a priority queue adapting an + <classname>std::vector</classname>, then it is possible to iterate over + all values by using <function>&p.top()</function> and + <function>&p.top() + p.size()</function>, but this will not work + if <varname>p</varname> is adapting an <classname>std::deque</classname>; in any + case, one cannot use <classname>p.begin()</classname> and + <classname>p.end()</classname>. If a different sequence is adapted, it + is even more difficult to determine what can be + done. + </para> + </listitem> + + <listitem> + <para> + If <varname>p</varname> is a priority queue adapting an + <classname>std::deque</classname>, then the reference return by + </para> + <programlisting> + p.top() + </programlisting> + <para> + will remain valid until it is popped, + but if <varname>p</varname> adapts an <classname>std::vector</classname>, the + next <function>push</function> will invalidate it. If a different + sequence is adapted, it is even more difficult to + determine what can be done. + </para> + </listitem> + </orderedlist> + </listitem> + + <listitem> + <para> + Sequence-based binary heaps can still implement + linear-time <function>erase</function> and <function>modify</function> operations. + This means that if one needs to erase a small + (say logarithmic) number of values, then one might still + choose this underlying data structure. Using + <classname>std::priority_queue</classname>, however, this will generally + change the order of growth of the entire sequence of + operations. + </para> + </listitem> + </orderedlist> + + </section> + </section> + </section> <!-- goals/motivation --> + </section> <!-- intro --> + + <!-- S02: Using --> + <section xml:id="containers.pbds.using"> + <info><title>Using</title></info> + <?dbhtml filename="policy_data_structures_using.html"?> + + <section xml:id="pbds.using.prereq"> + <info><title>Prerequisites</title></info> + + <para>The library contains only header files, and does not require any + other libraries except the standard C++ library . All classes are + defined in namespace <code>__gnu_pbds</code>. The library internally + uses macros beginning with <code>PB_DS</code>, but + <code>#undef</code>s anything it <code>#define</code>s (except for + header guards). Compiling the library in an environment where macros + beginning in <code>PB_DS</code> are defined, may yield unpredictable + results in compilation, execution, or both.</para> + + <para> + Further dependencies are necessary to create the visual output for the + performance tests. To create these graphs, two additional packages + will be needed: <command>pychart</command> and <command>Beautiful + Soup</command>. + </para> + </section> + + <section xml:id="pbds.using.organization"> + <info><title>Organization</title></info> + + <para> + The various data structures are organized as follows. + </para> + + <itemizedlist> + <listitem> + <para> + Branch-Based + </para> + + <itemizedlist> + <listitem> + <para> + <classname>basic_branch</classname> + is an abstract base class for branched-based + associative-containers + </para> + </listitem> + + <listitem> + <para> + <classname>tree</classname> + is a concrete base class for tree-based + associative-containers + </para> + </listitem> + + <listitem> + <para> + <classname>trie</classname> + is a concrete base class trie-based + associative-containers + </para> + </listitem> + </itemizedlist> + </listitem> + + <listitem> + <para> + Hash-Based + </para> + <itemizedlist> + <listitem> + <para> + <classname>basic_hash_table</classname> + is an abstract base class for hash-based + associative-containers + </para> + </listitem> + + <listitem> + <para> + <classname>cc_hash_table</classname> + is a concrete collision-chaining hash-based + associative-containers + </para> + </listitem> + + <listitem> + <para> + <classname>gp_hash_table</classname> + is a concrete (general) probing hash-based + associative-containers + </para> + </listitem> + </itemizedlist> + </listitem> + + <listitem> + <para> + List-Based + </para> + <itemizedlist> + <listitem> + <para> + <classname>list_update</classname> + list-based update-policy associative container + </para> + </listitem> + </itemizedlist> + </listitem> + <listitem> + <para> + Heap-Based + </para> + <itemizedlist> + <listitem> + <para> + <classname>priority_queue</classname> + A priority queue. + </para> + </listitem> + </itemizedlist> + </listitem> + </itemizedlist> + + <para> + The hierarchy is composed naturally so that commonality is + captured by base classes. Thus <function>operator[]</function> + is defined at the base of any hierarchy, since all derived + containers support it. Conversely <function>split</function> is + defined in <classname>basic_branch</classname>, since only + tree-like containers support it. + </para> + + <para> + In addition, there are the following diagnostics classes, + used to report errors specific to this library's data + structures. + </para> + + <figure> + <title>Exception Hierarchy</title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_exception_hierarchy.png"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PDF" scale="50" + fileref="../images/pbds_exception_hierarchy.pdf"/> + </imageobject> + <textobject> + <phrase>Exception Hierarchy</phrase> + </textobject> + </mediaobject> + </figure> + + </section> + + <section xml:id="pbds.using.tutorial"> + <info><title>Tutorial</title></info> + + <section xml:id="pbds.using.tutorial.basic"> + <info><title>Basic Use</title></info> + + <para> + For the most part, the policy-based containers containers in + namespace <literal>__gnu_pbds</literal> have the same interface as + the equivalent containers in the standard C++ library, except for + the names used for the container classes themselves. For example, + this shows basic operations on a collision-chaining hash-based + container: + </para> + <programlisting> + #include <ext/pb_ds/assoc_container.h> + + int main() + { + __gnu_pbds::cc_hash_table<int, char> c; + c[2] = 'b'; + assert(c.find(1) == c.end()); + }; + </programlisting> + + <para> + The container is called + <classname>__gnu_pbds::cc_hash_table</classname> instead of + <classname>std::unordered_map</classname>, since <quote>unordered + map</quote> does not necessarily mean a hash-based map as implied by + the C++ library (C++0x or TR1). For example, list-based associative + containers, which are very useful for the construction of + "multimaps," are also unordered. + </para> + + <para>This snippet shows a red-black tree based container:</para> + + <programlisting> + #include <ext/pb_ds/assoc_container.h> + + int main() + { + __gnu_pbds::tree<int, char> c; + c[2] = 'b'; + assert(c.find(2) != c.end()); + }; + </programlisting> + + <para>The container is called <classname>tree</classname> instead of + <classname>map</classname> since the underlying data structures are + being named with specificity. + </para> + + <para> + The member function naming convention is to strive to be the same as + the equivalent member functions in other C++ standard library + containers. The familiar methods are unchanged: + <function>begin</function>, <function>end</function>, + <function>size</function>, <function>empty</function>, and + <function>clear</function>. + </para> + + <para> + This isn't to say that things are exactly as one would expect, given + the container requirments and interfaces in the C++ standard. + </para> + + <para> + The names of containers' policies and policy accessors are + different then the usual. For example, if <type>hash_type</type> is + some type of hash-based container, then</para> + + <programlisting> + hash_type::hash_fn + </programlisting> + + <para> + gives the type of its hash functor, and if <varname>obj</varname> is + some hash-based container object, then + </para> + + <programlisting> + obj.get_hash_fn() + </programlisting> + + <para>will return a reference to its hash-functor object.</para> + + + <para> + Similarly, if <type>tree_type</type> is some type of tree-based + container, then + </para> + + <programlisting> + tree_type::cmp_fn + </programlisting> + + <para> + gives the type of its comparison functor, and if + <varname>obj</varname> is some tree-based container object, + then + </para> + + <programlisting> + obj.get_cmp_fn() + </programlisting> + + <para>will return a reference to its comparison-functor object.</para> + + <para> + It would be nice to give names consistent with those in the existing + C++ standard (inclusive of TR1). Unfortunately, these standard + containers don't consistently name types and methods. For example, + <classname>std::tr1::unordered_map</classname> uses + <type>hasher</type> for the hash functor, but + <classname>std::map</classname> uses <type>key_compare</type> for + the comparison functor. Also, we could not find an accessor for + <classname>std::tr1::unordered_map</classname>'s hash functor, but + <classname>std::map</classname> uses <classname>compare</classname> + for accessing the comparison functor. + </para> + + <para> + Instead, <literal>__gnu_pbds</literal> attempts to be internally + consistent, and uses standard-derived terminology if possible. + </para> + + <para> + Another source of difference is in scope: + <literal>__gnu_pbds</literal> contains more types of associative + containers than the standard C++ library, and more opportunities + to configure these new containers, since different types of + associative containers are useful in different settings. + </para> + + <para> + Namespace <literal>__gnu_pbds</literal> contains different classes for + hash-based containers, tree-based containers, trie-based containers, + and list-based containers. + </para> + + <para> + Since associative containers share parts of their interface, they + are organized as a class hierarchy. + </para> + + <para>Each type or method is defined in the most-common ancestor + in which it makes sense. + </para> + + <para>For example, all associative containers support iteration + expressed in the following form: + </para> + + <programlisting> + const_iterator + begin() const; + + iterator + begin(); + + const_iterator + end() const; + + iterator + end(); + </programlisting> + + <para> + But not all containers contain or use hash functors. Yet, both + collision-chaining and (general) probing hash-based associative + containers have a hash functor, so + <classname>basic_hash_table</classname> contains the interface: + </para> + + <programlisting> + const hash_fn& + get_hash_fn() const; + + hash_fn& + get_hash_fn(); + </programlisting> + + <para> + so all hash-based associative containers inherit the same + hash-functor accessor methods. + </para> + + </section> <!--basic use --> + + <section xml:id="pbds.using.tutorial.configuring"> + <info> + <title> + Configuring via Template Parameters + </title> + </info> + + <para> + In general, each of this library's containers is + parametrized by more policies than those of the standard library. For + example, the standard hash-based container is parametrized as + follows: + </para> + <programlisting> + template<typename Key, typename Mapped, typename Hash, + typename Pred, typename Allocator, bool Cache_Hashe_Code> + class unordered_map; + </programlisting> + + <para> + and so can be configured by key type, mapped type, a functor + that translates keys to unsigned integral types, an equivalence + predicate, an allocator, and an indicator whether to store hash + values with each entry. this library's collision-chaining + hash-based container is parametrized as + </para> + <programlisting> + template<typename Key, typename Mapped, typename Hash_Fn, + typename Eq_Fn, typename Comb_Hash_Fn, + typename Resize_Policy, bool Store_Hash + typename Allocator> + class cc_hash_table; + </programlisting> + + <para> + and so can be configured by the first four types of + <classname>std::tr1::unordered_map</classname>, then a + policy for translating the key-hash result into a position + within the table, then a policy by which the table resizes, + an indicator whether to store hash values with each entry, + and an allocator (which is typically the last template + parameter in standard containers). + </para> + + <para> + Nearly all policy parameters have default values, so this + need not be considered for casual use. It is important to + note, however, that hash-based containers' policies can + dramatically alter their performance in different settings, + and that tree-based containers' policies can make them + useful for other purposes than just look-up. + </para> + + + <para>As opposed to associative containers, priority queues have + relatively few configuration options. The priority queue is + parametrized as follows:</para> + <programlisting> + template<typename Value_Type, typename Cmp_Fn,typename Tag, + typename Allocator> + class priority_queue; + </programlisting> + + <para>The <classname>Value_Type</classname>, <classname>Cmp_Fn</classname>, and + <classname>Allocator</classname> parameters are the container's value type, + comparison-functor type, and allocator type, respectively; + these are very similar to the standard's priority queue. The + <classname>Tag</classname> parameter is different: there are a number of + pre-defined tag types corresponding to binary heaps, binomial + heaps, etc., and <classname>Tag</classname> should be instantiated + by one of them.</para> + + <para>Note that as opposed to the + <classname>std::priority_queue</classname>, + <classname>__gnu_pbds::priority_queue</classname> is not a + sequence-adapter; it is a regular container.</para> + + </section> + + <section xml:id="pbds.using.tutorial.traits"> + <info> + <title> + Querying Container Attributes + </title> + </info> + <para></para> + + <para>A containers underlying data structure + affect their performance; Unfortunately, they can also affect + their interface. When manipulating generically associative + containers, it is often useful to be able to statically + determine what they can support and what the cannot. + </para> + + <para>Happily, the standard provides a good solution to a similar + problem - that of the different behavior of iterators. If + <classname>It</classname> is an iterator, then + </para> + <programlisting> + typename std::iterator_traits<It>::iterator_category + </programlisting> + + <para>is one of a small number of pre-defined tag classes, and + </para> + <programlisting> + typename std::iterator_traits<It>::value_type + </programlisting> + + <para>is the value type to which the iterator "points".</para> + + <para> + Similarly, in this library, if <type>C</type> is a + container, then <classname>container_traits</classname> is a + trait class that stores information about the kind of + container that is implemented. + </para> + <programlisting> + typename container_traits<C>::container_category + </programlisting> + <para> + is one of a small number of predefined tag structures that + uniquely identifies the type of underlying data structure. + </para> + + <para>In most cases, however, the exact underlying data + structure is not really important, but what is important is + one of its other attributes: whether it guarantees storing + elements by key order, for example. For this one can + use</para> + <programlisting> + typename container_traits<C>::order_preserving + </programlisting> + <para> + Also, + </para> + <programlisting> + typename container_traits<C>::invalidation_guarantee + </programlisting> + + <para>is the container's invalidation guarantee. Invalidation + guarantees are especially important regarding priority queues, + since in this library's design, iterators are practically the + only way to manipulate them.</para> + </section> + + <section xml:id="pbds.using.tutorial.point_range_iteration"> + <info> + <title> + Point and Range Iteration + </title> + </info> + <para></para> + + <para>This library differentiates between two types of methods + and iterators: point-type, and range-type. For example, + <function>find</function> and <function>insert</function> are point-type methods, since + they each deal with a specific element; their returned + iterators are point-type iterators. <function>begin</function> and + <function>end</function> are range-type methods, since they are not used to + find a specific element, but rather to go over all elements in + a container object; their returned iterators are range-type + iterators. + </para> + + <para>Most containers store elements in an order that is + determined by their interface. Correspondingly, it is fine that + their point-type iterators are synonymous with their range-type + iterators. For example, in the following snippet + </para> + <programlisting> + std::for_each(c.find(1), c.find(5), foo); + </programlisting> + <para> + two point-type iterators (returned by <function>find</function>) are used + for a range-type purpose - going over all elements whose key is + between 1 and 5. + </para> + + <para> + Conversely, the above snippet makes no sense for + self-organizing containers - ones that order (and reorder) + their elements by implementation. It would be nice to have a + uniform iterator system that would allow the above snippet to + compile only if it made sense. + </para> + + <para> + This could trivially be done by specializing + <function>std::for_each</function> for the case of iterators returned by + <classname>std::tr1::unordered_map</classname>, but this would only solve the + problem for one algorithm and one container. Fundamentally, the + problem is that one can loop using a self-organizing + container's point-type iterators. + </para> + + <para> + This library's containers define two families of + iterators: <type>point_const_iterator</type> and + <type>point_iterator</type> are the iterator types returned by + point-type methods; <type>const_iterator</type> and + <type>iterator</type> are the iterator types returned by range-type + methods. + </para> + <programlisting> + class <- some container -> + { + public: + ... + + typedef <- something -> const_iterator; + + typedef <- something -> iterator; + + typedef <- something -> point_const_iterator; + + typedef <- something -> point_iterator; + + ... + + public: + ... + + const_iterator begin () const; + + iterator begin(); + + point_const_iterator find(...) const; + + point_iterator find(...); + }; + </programlisting> + + <para>For + containers whose interface defines sequence order , it + is very simple: point-type and range-type iterators are exactly + the same, which means that the above snippet will compile if it + is used for an order-preserving associative container. + </para> + + <para> + For self-organizing containers, however, (hash-based + containers as a special example), the preceding snippet will + not compile, because their point-type iterators do not support + <function>operator++</function>. + </para> + + <para>In any case, both for order-preserving and self-organizing + containers, the following snippet will compile: + </para> + <programlisting> + typename Cntnr::point_iterator it = c.find(2); + </programlisting> + + <para> + because a range-type iterator can always be converted to a + point-type iterator. + </para> + + <para>Distingushing between iterator types also + raises the point that a container's iterators might have + different invalidation rules concerning their de-referencing + abilities and movement abilities. This now corresponds exactly + to the question of whether point-type and range-type iterators + are valid. As explained above, <classname>container_traits</classname> allows + querying a container for its data structure attributes. The + iterator-invalidation guarantees are certainly a property of + the underlying data structure, and so + </para> + <programlisting> + container_traits<C>::invalidation_guarantee + </programlisting> + + <para> + gives one of three pre-determined types that answer this + query. + </para> + + </section> + </section> <!-- tutorial --> + + <section xml:id="pbds.using.examples"> + <info><title>Examples</title></info> + <para> + Additional code examples are provided in the source + distribution, as part of the regression and performance + testsuite. + </para> + + <section xml:id="pbds.using.examples.basic"> + <info><title>Intermediate Use</title></info> + + <itemizedlist> + <listitem> + <para> + Basic use of maps: + <filename>basic_map.cc</filename> + </para> + </listitem> + + <listitem> + <para> + Basic use of sets: + <filename>basic_set.cc</filename> + </para> + </listitem> + + <listitem> + <para> + Conditionally erasing values from an associative container object: + <filename>erase_if.cc</filename> + </para> + </listitem> + + <listitem> + <para> + Basic use of multimaps: + <filename>basic_multimap.cc</filename> + </para> + </listitem> + + <listitem> + <para> + Basic use of multisets: + <filename>basic_multiset.cc</filename> + </para> + </listitem> + + <listitem> + <para> + Basic use of priority queues: + <filename>basic_priority_queue.cc</filename> + </para> + </listitem> + + <listitem> + <para> + Splitting and joining priority queues: + <filename>priority_queue_split_join.cc</filename> + </para> + </listitem> + + <listitem> + <para> + Conditionally erasing values from a priority queue: + <filename>priority_queue_erase_if.cc</filename> + </para> + </listitem> + </itemizedlist> + + </section> + + <section xml:id="pbds.using.examples.query"> + <info><title>Querying with <classname>container_traits</classname> </title></info> + <itemizedlist> + <listitem> + <para> + Using <classname>container_traits</classname> to query + about underlying data structure behavior: + <filename>assoc_container_traits.cc</filename> + </para> + </listitem> + + <listitem> + <para> + A non-compiling example showing wrong use of finding keys in + hash-based containers: <filename>hash_find_neg.cc</filename> + </para> + </listitem> + <listitem> + <para> + Using <classname>container_traits</classname> + to query about underlying data structure behavior: + <filename>priority_queue_container_traits.cc</filename> + </para> + </listitem> + + </itemizedlist> + + </section> + + <section xml:id="pbds.using.examples.container"> + <info><title>By Container Method</title></info> + <para></para> + + <section xml:id="pbds.using.examples.container.hash"> + <info><title>Hash-Based</title></info> + + <section xml:id="pbds.using.examples.container.hash.resize"> + <info><title>size Related</title></info> + + <itemizedlist> + <listitem> + <para> + Setting the initial size of a hash-based container + object: + <filename>hash_initial_size.cc</filename> + </para> + </listitem> + + <listitem> + <para> + A non-compiling example showing how not to resize a + hash-based container object: + <filename>hash_resize_neg.cc</filename> + </para> + </listitem> + + <listitem> + <para> + Resizing the size of a hash-based container object: + <filename>hash_resize.cc</filename> + </para> + </listitem> + + <listitem> + <para> + Showing an illegal resize of a hash-based container + object: + <filename>hash_illegal_resize.cc</filename> + </para> + </listitem> + + <listitem> + <para> + Changing the load factors of a hash-based container + object: <filename>hash_load_set_change.cc</filename> + </para> + </listitem> + </itemizedlist> + </section> + + <section xml:id="pbds.using.examples.container.hash.hashor"> + <info><title>Hashing Function Related</title></info> + <para></para> + + <itemizedlist> + <listitem> + <para> + Using a modulo range-hashing function for the case of an + unknown skewed key distribution: + <filename>hash_mod.cc</filename> + </para> + </listitem> + + <listitem> + <para> + Writing a range-hashing functor for the case of a known + skewed key distribution: + <filename>shift_mask.cc</filename> + </para> + </listitem> + + <listitem> + <para> + Storing the hash value along with each key: + <filename>store_hash.cc</filename> + </para> + </listitem> + + <listitem> + <para> + Writing a ranged-hash functor: + <filename>ranged_hash.cc</filename> + </para> + </listitem> + </itemizedlist> + + </section> + + </section> + + <section xml:id="pbds.using.examples.container.branch"> + <info><title>Branch-Based</title></info> + + + <section xml:id="pbds.using.examples.container.branch.split"> + <info><title>split or join Related</title></info> + + <itemizedlist> + <listitem> + <para> + Joining two tree-based container objects: + <filename>tree_join.cc</filename> + </para> + </listitem> + + <listitem> + <para> + Splitting a PATRICIA trie container object: + <filename>trie_split.cc</filename> + </para> + </listitem> + + <listitem> + <para> + Order statistics while joining two tree-based container + objects: + <filename>tree_order_statistics_join.cc</filename> + </para> + </listitem> + </itemizedlist> + + </section> + + <section xml:id="pbds.using.examples.container.branch.invariants"> + <info><title>Node Invariants</title></info> + + <itemizedlist> + <listitem> + <para> + Using trees for order statistics: + <filename>tree_order_statistics.cc</filename> + </para> + </listitem> + + <listitem> + <para> + Augmenting trees to support operations on line + intervals: + <filename>tree_intervals.cc</filename> + </para> + </listitem> + </itemizedlist> + + </section> + + <section xml:id="pbds.using.examples.container.branch.trie"> + <info><title>trie</title></info> + <itemizedlist> + <listitem> + <para> + Using a PATRICIA trie for DNA strings: + <filename>trie_dna.cc</filename> + </para> + </listitem> + + <listitem> + <para> + Using a PATRICIA + trie for finding all entries whose key matches a given prefix: + <filename>trie_prefix_search.cc</filename> + </para> + </listitem> + </itemizedlist> + + </section> + + </section> + + <section xml:id="pbds.using.examples.container.priority_queue"> + <info><title>Priority Queues</title></info> + <itemizedlist> + <listitem> + <para> + Cross referencing an associative container and a priority + queue: <filename>priority_queue_xref.cc</filename> + </para> + </listitem> + + <listitem> + <para> + Cross referencing a vector and a priority queue using a + very simple version of Dijkstra's shortest path + algorithm: + <filename>priority_queue_dijkstra.cc</filename> + </para> + </listitem> + </itemizedlist> + + </section> + + + </section> + + </section> + + </section> <!-- using --> + + <!-- S03: Design --> + + +<section xml:id="containers.pbds.design"> + <info><title>Design</title></info> + <?dbhtml filename="policy_data_structures_design.html"?> + <para></para> + + <section xml:id="pbds.design.concepts"> + <info><title>Concepts</title></info> + + <section xml:id="pbds.design.concepts.null_type"> + <info><title>Null Policy Classes</title></info> + + <para> + 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. + </para> + + <para> + 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. + </para> + + <para> + 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. + </para> + + <para> + When a policy is either redundant or irrelevant, it can be replaced + by <classname>null_type</classname>. + </para> + + <para> + For example, a <emphasis>set</emphasis> is an associative + container with one of its template parameters (the one for the + mapped type) replaced with <classname>null_type</classname>. Other + places simplifications are made possible with this technique + include node updates in tree and trie data structures, and hash + and probe functions for hash data structures. + </para> + </section> + + <section xml:id="pbds.design.concepts.associative_semantics"> + <info><title>Map and Set Semantics</title></info> + + <section xml:id="concepts.associative_semantics.set_vs_map"> + <info> + <title> + Distinguishing Between Maps and Sets + </title> + </info> + + <para> + Anyone familiar with the standard knows that there are four kinds + of associative containers: maps, sets, multimaps, and + multisets. The map datatype associates each key to + some data. + </para> + + <para> + Sets are associative containers that simply store keys - + they do not map them to anything. In the standard, each map class + has a corresponding set class. E.g., + <classname>std::map<int, char></classname> maps each + <classname>int</classname> to a <classname>char</classname>, but + <classname>std::set<int, char></classname> simply stores + <classname>int</classname>s. In this library, however, there are no + distinct classes for maps and sets. Instead, an associative + container's <classname>Mapped</classname> template parameter is a policy: if + it is instantiated by <classname>null_type</classname>, then it + is a "set"; otherwise, it is a "map". E.g., + </para> + <programlisting> + cc_hash_table<int, char> + </programlisting> + <para> + is a "map" mapping each <type>int</type> value to a <type> + char</type>, but + </para> + <programlisting> + cc_hash_table<int, null_type> + </programlisting> + <para> + is a type that uniquely stores <type>int</type> values. + </para> + <para>Once the <classname>Mapped</classname> template parameter is instantiated + by <classname>null_type</classname>, then + the "set" acts very similarly to the standard's sets - it does not + map each key to a distinct <classname>null_type</classname> object. Also, + , the container's <type>value_type</type> is essentially + its <type>key_type</type> - just as with the standard's sets + .</para> + + <para> + The standard's multimaps and multisets allow, respectively, + non-uniquely mapping keys and non-uniquely storing keys. As + discussed, the + reasons why this might be necessary are 1) that a key might be + decomposed into a primary key and a secondary key, 2) that a + key might appear more than once, or 3) any arbitrary + combination of 1)s and 2)s. Correspondingly, + one should use 1) "maps" mapping primary keys to secondary + keys, 2) "maps" mapping keys to size types, or 3) any arbitrary + combination of 1)s and 2)s. Thus, for example, an + <classname>std::multiset<int></classname> might be used to store + multiple instances of integers, but using this library's + containers, one might use + </para> + <programlisting> + tree<int, size_t> + </programlisting> + + <para> + i.e., a <classname>map</classname> of <type>int</type>s to + <type>size_t</type>s. + </para> + <para> + These "multimaps" and "multisets" might be confusing to + anyone familiar with the standard's <classname>std::multimap</classname> and + <classname>std::multiset</classname>, because there is no clear + correspondence between the two. For example, in some cases + where one uses <classname>std::multiset</classname> in the standard, one might use + in this library a "multimap" of "multisets" - i.e., a + container that maps primary keys each to an associative + container that maps each secondary key to the number of times + it occurs. + </para> + + <para> + When one uses a "multimap," one should choose with care the + type of container used for secondary keys. + </para> + </section> <!-- map vs set --> + + + <section xml:id="concepts.associative_semantics.multi"> + <info><title>Alternatives to <classname>std::multiset</classname> and <classname>std::multimap</classname></title></info> + + <para> + Brace onself: this library does not contain containers like + <classname>std::multimap</classname> or + <classname>std::multiset</classname>. Instead, these data + structures can be synthesized via manipulation of the + <classname>Mapped</classname> template parameter. + </para> + <para> + 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. + </para> + + <para> + Stepping back a bit, and starting in from the beginning. + </para> + + + <para> + Maps (or sets) allow mapping (or storing) unique-key values. + The standard library also supplies associative containers which + map (or store) multiple values with equivalent keys: + <classname>std::multimap</classname>, <classname>std::multiset</classname>, + <classname>std::tr1::unordered_multimap</classname>, and + <classname>unordered_multiset</classname>. We first discuss how these might + be used, then why we think it is best to avoid them. + </para> + + <para> + Suppose one builds a simple bank-account application that + records for each client (identified by an <classname>std::string</classname>) + and account-id (marked by an <type>unsigned long</type>) - + the balance in the account (described by a + <type>float</type>). Suppose further that ordering this + information is not useful, so a hash-based container is + preferable to a tree based container. Then one can use + </para> + + <programlisting> + std::tr1::unordered_map<std::pair<std::string, unsigned long>, float, ...> + </programlisting> + + <para> + which hashes every combination of client and account-id. This + might work well, except for the fact that it is now impossible + to efficiently list all of the accounts of a specific client + (this would practically require iterating over all + entries). Instead, one can use + </para> + + <programlisting> + std::tr1::unordered_multimap<std::pair<std::string, unsigned long>, float, ...> + </programlisting> + + <para> + which hashes every client, and decides equivalence based on + client only. This will ensure that all accounts belonging to a + specific user are stored consecutively. + </para> + + <para> + Also, suppose one wants an integers' priority queue + (a container that supports <function>push</function>, + <function>pop</function>, and <function>top</function> operations, the last of which + returns the largest <type>int</type>) that also supports + operations such as <function>find</function> and <function>lower_bound</function>. A + reasonable solution is to build an adapter over + <classname>std::set<int></classname>. In this adapter, + <function>push</function> will just call the tree-based + associative container's <function>insert</function> method; <function>pop</function> + will call its <function>end</function> method, and use it to return the + preceding element (which must be the largest). Then this might + work well, except that the container object cannot hold + multiple instances of the same integer (<function>push(4)</function>, + will be a no-op if <constant>4</constant> is already in the + container object). If multiple keys are necessary, then one + might build the adapter over an + <classname>std::multiset<int></classname>. + </para> + + <para> + The standard library's non-unique-mapping containers are useful + when (1) a key can be decomposed in to a primary key and a + secondary key, (2) a key is needed multiple times, or (3) any + combination of (1) and (2). + </para> + + <para> + The graphic below shows how the standard library's container + design works internally; in this figure nodes shaded equally + represent equivalent-key values. Equivalent keys are stored + consecutively using the properties of the underlying data + structure: binary search trees (label A) store equivalent-key + values consecutively (in the sense of an in-order walk) + naturally; collision-chaining hash tables (label B) store + equivalent-key values in the same bucket, the bucket can be + arranged so that equivalent-key values are consecutive. + </para> + + <figure> + <title>Non-unique Mapping Standard Containers</title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_embedded_lists_1.png"/> + </imageobject> + <textobject> + <phrase>Non-unique Mapping Standard Containers</phrase> + </textobject> + </mediaobject> + </figure> + + <para> + Put differently, the standards' non-unique mapping + associative-containers are associative containers that map + primary keys to linked lists that are embedded into the + container. The graphic below shows again the two + containers from the first graphic above, this time with + the embedded linked lists of the grayed nodes marked + explicitly. + </para> + + <figure xml:id="fig.pbds_embedded_lists_2"> + <title> + Effect of embedded lists in + <classname>std::multimap</classname> + </title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_embedded_lists_2.png"/> + </imageobject> + <textobject> + <phrase> + Effect of embedded lists in + <classname>std::multimap</classname> + </phrase> + </textobject> + </mediaobject> + </figure> + + <para> + These embedded linked lists have several disadvantages. + </para> + + <orderedlist> + <listitem> + <para> + The underlying data structure embeds the linked lists + according to its own consideration, which means that the + search path for a value might include several different + equivalent-key values. For example, the search path for the + the black node in either of the first graphic, labels A or B, + includes more than a single gray node. + </para> + </listitem> + + <listitem> + <para> + The links of the linked lists are the underlying data + structures' nodes, which typically are quite structured. In + the case of tree-based containers (the grapic above, label + B), each "link" is actually a node with three pointers (one + to a parent and two to children), and a + relatively-complicated iteration algorithm. The linked + lists, therefore, can take up quite a lot of memory, and + iterating over all values equal to a given key (through the + return value of the standard + library's <function>equal_range</function>) can be + expensive. + </para> + </listitem> + + <listitem> + <para> + The primary key is stored multiply; this uses more memory. + </para> + </listitem> + + <listitem> + <para> + Finally, the interface of this design excludes several + useful underlying data structures. Of all the unordered + self-organizing data structures, practically only + collision-chaining hash tables can (efficiently) guarantee + that equivalent-key values are stored consecutively. + </para> + </listitem> + </orderedlist> + + <para> + The above reasons hold even when the ratio of secondary keys to + primary keys (or average number of identical keys) is small, but + when it is large, there are more severe problems: + </para> + + <orderedlist> + <listitem> + <para> + The underlying data structures order the links inside each + embedded linked-lists according to their internal + considerations, which effectively means that each of the + links is unordered. Irrespective of the underlying data + structure, searching for a specific value can degrade to + linear complexity. + </para> + </listitem> + + <listitem> + <para> + Similarly to the above point, it is impossible to apply + to the secondary keys considerations that apply to primary + keys. For example, it is not possible to maintain secondary + keys by sorted order. + </para> + </listitem> + + <listitem> + <para> + While the interface "understands" that all equivalent-key + values constitute a distinct list (through + <function>equal_range</function>), the underlying data + structure typically does not. This means that operations such + as erasing from a tree-based container all values whose keys + are equivalent to a a given key can be super-linear in the + size of the tree; this is also true also for several other + operations that target a specific list. + </para> + </listitem> + + </orderedlist> + + <para> + In this library, all associative containers map + (or store) unique-key values. One can (1) map primary keys to + secondary associative-containers (containers of + secondary keys) or non-associative containers (2) map identical + keys to a size-type representing the number of times they + occur, or (3) any combination of (1) and (2). Instead of + allowing multiple equivalent-key values, this library + supplies associative containers based on underlying + data structures that are suitable as secondary + associative-containers. + </para> + + <para> + In the figure below, labels A and B show the equivalent + underlying data structures in this library, as mapped to the + first graphic above. Labels A and B, respectively. Each shaded + box represents some size-type or secondary + associative-container. + </para> + + <figure> + <title>Non-unique Mapping Containers</title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_embedded_lists_3.png"/> + </imageobject> + <textobject> + <phrase>Non-unique Mapping Containers</phrase> + </textobject> + </mediaobject> + </figure> + + <para> + In the first example above, then, one would use an associative + container mapping each user to an associative container which + maps each application id to a start time (see + <filename>example/basic_multimap.cc</filename>); in the second + example, one would use an associative container mapping + each <classname>int</classname> to some size-type indicating the + number of times it logically occurs + (see <filename>example/basic_multiset.cc</filename>. + </para> + + <para> + See the discussion in list-based container types for containers + especially suited as secondary associative-containers. + </para> + </section> + + </section> <!-- map and set semantics --> + + <section xml:id="pbds.design.concepts.iterator_semantics"> + <info><title>Iterator Semantics</title></info> + + <section xml:id="concepts.iterator_semantics.point_and_range"> + <info><title>Point and Range Iterators</title></info> + + <para> + Iterator concepts are bifurcated in this design, and are + comprised of point-type and range-type iteration. + </para> + + <para> + A point-type iterator is an iterator that refers to a specific + element as returned through an + associative-container's <function>find</function> method. + </para> + + <para> + A range-type iterator is an iterator that is used to go over a + sequence of elements, as returned by a container's + <function>find</function> method. + </para> + + <para> + 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. + </para> + + <para>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 C++ standard library + components), but in this design, it is made explicit. They are + distinct types. + </para> + </section> + + + <section xml:id="concepts.iterator_semantics.both"> + <info><title>Distinguishing Point and Range Iterators</title></info> + + <para>When using this library, is necessary to differentiate + between two types of methods and iterators: point-type methods and + iterators, and range-type methods and iterators. Each associative + container's interface includes the methods:</para> + <programlisting> + point_const_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); + </programlisting> + + <para>The relationship between these iterator types varies between + container types. The figure below + shows the most general invariant between point-type and + range-type iterators: In <emphasis>A</emphasis> <literal>iterator</literal>, can + always be converted to <literal>point_iterator</literal>. In <emphasis>B</emphasis> + shows invariants for order-preserving containers: point-type + iterators are synonymous with range-type iterators. + Orthogonally, <emphasis>C</emphasis>shows invariants for "set" + containers: iterators are synonymous with const iterators.</para> + + <figure> + <title>Point Iterator Hierarchy</title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_point_iterator_hierarchy.png"/> + </imageobject> + <textobject> + <phrase>Point Iterator Hierarchy</phrase> + </textobject> + </mediaobject> + </figure> + + + <para>Note that point-type iterators in self-organizing containers + (hash-based associative containers) lack movement + operators, such as <literal>operator++</literal> - in fact, this + is the reason why this library differentiates from the standard C++ librarys + design on this point.</para> + + <para>Typically, one can determine an iterator's movement + capabilities using + <literal>std::iterator_traits<It>iterator_category</literal>, + which is a <literal>struct</literal> indicating the iterator's + movement capabilities. Unfortunately, none of the standard predefined + categories reflect a pointer's <emphasis>not</emphasis> having any + movement capabilities whatsoever. Consequently, + <literal>pb_ds</literal> adds a type + <literal>trivial_iterator_tag</literal> (whose name is taken from + a concept in C++ standardese, which is the category of iterators + with no movement capabilities.) All other standard C++ library + tags, such as <literal>forward_iterator_tag</literal> retain their + common use.</para> + + </section> + + <section xml:id="pbds.design.concepts.invalidation"> + <info><title>Invalidation Guarantees</title></info> + <para> + 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 this design, one can query a container (in compile time) about + its invalidation guarantees. + </para> + + + <para> + Given three different types of associative containers, a modifying + operation (in that example, <function>erase</function>) 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. + </para> + + <para> + 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. The graphic below shows tags corresponding to + different types of invalidation guarantees. + </para> + + <figure> + <title>Invalidation Guarantee Tags Hierarchy</title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_invalidation_tag_hierarchy.png"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PDF" scale="50" + fileref="../images/pbds_invalidation_tag_hierarchy.pdf"/> + </imageobject> + <textobject> + <phrase>Invalidation Guarantee Tags Hierarchy</phrase> + </textobject> + </mediaobject> + </figure> + + <itemizedlist> + <listitem> + <para> + <classname>basic_invalidation_guarantee</classname> + 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. + </para> + </listitem> + + <listitem> + <para> + <classname>point_invalidation_guarantee</classname> + 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. + </para> + </listitem> + + <listitem> + <para> + <classname>range_invalidation_guarantee</classname> + corresponds to a guarantee that a range-type iterator remains + valid even if the container object is modified. + </para> + </listitem> + </itemizedlist> + + <para>To find the invalidation guarantee of a + container, one can use</para> + <programlisting> + typename container_traits<Cntnr>::invalidation_guarantee + </programlisting> + + <para>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 + <classname>range_invalidation_guarantee</classname>) + can be cast to its base class (in this case <classname>point_invalidation_guarantee</classname>). + This means that this this hierarchy can be used easily using + standard metaprogramming techniques, by specializing on the + type of <literal>invalidation_guarantee</literal>.</para> + + <para> + These types of problems were addressed, in a more general + setting, in <xref linkend="biblio.meyers96more"/> - Item 2. In + our opinion, an invalidation-guarantee hierarchy would solve + these problems in all container types - not just associative + containers. + </para> + + </section> + </section> <!-- iterator semantics --> + + <section xml:id="pbds.design.concepts.genericity"> + <info><title>Genericity</title></info> + + <para> + The design attempts to address the following problem of + data-structure genericity. When writing a function manipulating + a generic container object, what is the behavior of the object? + Suppose one writes + </para> + <programlisting> + template<typename Cntnr> + void + some_op_sequence(Cntnr &r_container) + { + ... + } + </programlisting> + + <para> + then one needs to address the following questions in the body + of <function>some_op_sequence</function>: + </para> + + <itemizedlist> + <listitem> + <para> + Which types and methods does <literal>Cntnr</literal> 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. + </para> + </listitem> + + <listitem> + <para> + What are the exception and invalidation guarantees + of <literal>Cntnr</literal>? 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. + </para> + </listitem> + + <listitem> + <para> + 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. + </para> + </listitem> + <listitem> + <para> + How does one query a container about characteristics and + capabilities? What is the relationship between two different + data structures, if anything? + </para> + </listitem> + </itemizedlist> + + <para>The remainder of this section explains these issues in + detail.</para> + + + <section xml:id="concepts.genericity.tag"> + <info><title>Tag</title></info> + <para> + Tags are very useful for manipulating generic types. For example, if + <literal>It</literal> is an iterator class, then <literal>typename + It::iterator_category</literal> or <literal>typename + std::iterator_traits<It>::iterator_category</literal> will + yield its category, and <literal>typename + std::iterator_traits<It>::value_type</literal> will yield its + value type. + </para> + + <para> + This library contains a container tag hierarchy corresponding to the + diagram below. + </para> + + <figure> + <title>Container Tag Hierarchy</title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_container_tag_hierarchy.png"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PDF" scale="50" + fileref="../images/pbds_container_tag_hierarchy.pdf"/> + </imageobject> + <textobject> + <phrase>Container Tag Hierarchy</phrase> + </textobject> + </mediaobject> + </figure> + + <para> + Given any container <type>Cntnr</type>, the tag of + the underlying data structure can be found via <literal>typename + Cntnr::container_category</literal>. + </para> + + </section> <!-- tag --> + + <section xml:id="concepts.genericity.traits"> + <info><title>Traits</title></info> + <para></para> + + <para>Additionally, a traits mechanism can be used to query a + container type for its attributes. Given any container + <literal>Cntnr</literal>, then <literal><Cntnr></literal> + is a traits class identifying the properties of the + container.</para> + + <para>To find if a container can throw when a key is erased (which + is true for vector-based trees, for example), one can + use + </para> + <programlisting>container_traits<Cntnr>::erase_can_throw</programlisting> + + <para> + Some of the definitions in <classname>container_traits</classname> + are dependent on other + definitions. If <classname>container_traits<Cntnr>::order_preserving</classname> + is <constant>true</constant> (which is the case for containers + based on trees and tries), then the container can be split or + joined; in this + case, <classname>container_traits<Cntnr>::split_join_can_throw</classname> + indicates whether splits or joins can throw exceptions (which is + true for vector-based trees); + otherwise <classname>container_traits<Cntnr>::split_join_can_throw</classname> + will yield a compilation error. (This is somewhat similar to a + compile-time version of the COM model). + </para> + + </section> <!-- traits --> + + </section> <!-- genericity --> + </section> <!-- concepts --> + + <section xml:id="pbds.design.container"> + <info><title>By Container</title></info> + + <!-- hash --> + <section xml:id="pbds.design.container.hash"> + <info><title>hash</title></info> + + <!-- + +// hash policies +/// general terms / background +/// range hashing policies +/// ranged-hash policies +/// implementation + +// resize policies +/// general +/// size policies +/// trigger policies +/// implementation + +// policy interactions +/// probe/size/trigger +/// hash/trigger +/// eq/hash/storing hash values +/// size/load-check trigger + --> + <section xml:id="container.hash.interface"> + <info><title>Interface</title></info> + + + + <para> + The collision-chaining hash-based container has the + following declaration.</para> + <programlisting> + 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; + </programlisting> + + <para>The parameters have the following meaning:</para> + + <orderedlist> + <listitem><para><classname>Key</classname> is the key type.</para></listitem> + + <listitem><para><classname>Mapped</classname> is the mapped-policy.</para></listitem> + + <listitem><para><classname>Hash_Fn</classname> is a key hashing functor.</para></listitem> + + <listitem><para><classname>Eq_Fn</classname> is a key equivalence functor.</para></listitem> + + <listitem><para><classname>Comb_Hash_Fn</classname> is a range-hashing_functor; + it describes how to translate hash values into positions + within the table. </para></listitem> + + <listitem><para><classname>Resize_Policy</classname> describes how a container object + should change its internal size. </para></listitem> + + <listitem><para><classname>Store_Hash</classname> indicates whether the hash value + should be stored with each entry. </para></listitem> + + <listitem><para><classname>Allocator</classname> is an allocator + type.</para></listitem> + </orderedlist> + + <para>The probing hash-based container has the following + declaration.</para> + <programlisting> + 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; + </programlisting> + + <para>The parameters are identical to those of the + collision-chaining container, except for the following.</para> + + <orderedlist> + <listitem><para><classname>Comb_Probe_Fn</classname> describes how to transform a probe + sequence into a sequence of positions within the table.</para></listitem> + + <listitem><para><classname>Probe_Fn</classname> describes a probe sequence policy.</para></listitem> + </orderedlist> + + <para>Some of the default template values depend on the values of + other parameters, and are explained below.</para> + + </section> + <section xml:id="container.hash.details"> + <info><title>Details</title></info> + + <section xml:id="container.hash.details.hash_policies"> + <info><title>Hash Policies</title></info> + + <section xml:id="details.hash_policies.general"> + <info><title>General</title></info> + + <para>Following is an explanation of some functions which hashing + involves. The graphic below illustrates the discussion.</para> + + <figure> + <title>Hash functions, ranged-hash functions, and + range-hashing functions</title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_hash_ranged_hash_range_hashing_fns.png"/> + </imageobject> + <textobject> + <phrase>Hash functions, ranged-hash functions, and + range-hashing functions</phrase> + </textobject> + </mediaobject> + </figure> + + <para>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</para> + + <para> + f : U × Z<subscript>+</subscript> → Z<subscript>+</subscript> + </para> + + <para>such that for any u in U ,</para> + + <para>0 ≤ f(u, m) ≤ m - 1</para> + + <para>and which has "good uniformity" properties (say + <xref linkend="biblio.knuth98sorting"/>.) + One + common solution is to use the composition of the hash + function</para> + + <para>h : U → Z<subscript>+</subscript> ,</para> + + <para>which maps elements of U into the non-negative + integrals, and</para> + + <para>g : Z<subscript>+</subscript> × Z<subscript>+</subscript> → + Z<subscript>+</subscript>,</para> + + <para>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<subscript>+</subscript>,</para> + + <para>0 ≤ g(r, m) ≤ m - 1</para> + + + <para>The resulting ranged-hash function, is</para> + + <!-- ranged_hash_composed_of_hash_and_range_hashing --> + <equation> + <title>Ranged Hash Function</title> + <mathphrase> + f(u , m) = g(h(u), m) + </mathphrase> + </equation> + + <para>From the above, it is obvious that given g and + h, f can always be composed (however the converse + is not true). The standard's hash-based containers allow specifying + a hash function, and use a hard-wired range-hashing function; + the ranged-hash function is implicitly composed.</para> + + <para>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.</para> + + </section> + + <section xml:id="details.hash_policies.range"> + <info><title>Range Hashing</title></info> + + <para>Some common choices for range-hashing functions are the + division, multiplication, and middle-square methods (<xref linkend="biblio.knuth98sorting"/>), defined + as</para> + + <equation> + <title>Range-Hashing, Division Method</title> + <mathphrase> + g(r, m) = r mod m + </mathphrase> + </equation> + + + + <para>g(r, m) = ⌈ u/v ( a r mod v ) ⌉</para> + + <para>and</para> + + <para>g(r, m) = ⌈ u/v ( r<superscript>2</superscript> mod v ) ⌉</para> + + <para>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.</para> + + <para>The division method (see above) is a + very common choice. However, even this single method can be + implemented in two very different ways. It is possible to + implement 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.,</para> + + <equation> + <title>Division via Prime Modulo</title> + <mathphrase> + g(r, m) = r % m + </mathphrase> + </equation> + + <para>and</para> + + <equation> + <title>Division via Bit Mask</title> + <mathphrase> + g(r, m) = r & m - 1, (with m = + 2<superscript>k</superscript> for some k) + </mathphrase> + </equation> + + + <para>respectively.</para> + + <para>The % (modulo) implementation 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 + .</para> + + <para>The & (bit-mask) implementation 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.</para> + + + </section> + + <section xml:id="details.hash_policies.ranged"> + <info><title>Ranged Hash</title></info> + + <para>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 <xref linkend="biblio.knuth98sorting"/>), since + the values of m are determined by a resize policy with + possibly orthogonal considerations.</para> + + <para>There are two cases where a ranged-hash function can be + superior. The firs is when using perfect hashing: 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.</para> + + <para>Let</para> + + <para> + s = [ s<subscript>0</subscript>,..., s<subscript>t - 1</subscript>] + </para> + + <para>be a string of t characters, each of which is from + domain S. Consider the following ranged-hash + function:</para> + <equation> + <title> + A Standard String Hash Function + </title> + <mathphrase> + f<subscript>1</subscript>(s, m) = ∑ <subscript>i = + 0</subscript><superscript>t - 1</superscript> s<subscript>i</subscript> a<superscript>i</superscript> mod m + </mathphrase> + </equation> + + + <para>where a is some non-negative integral value. This is + the standard string-hashing function used in SGI's + implementation (with a = 5). Its advantage is that + it takes into account all of the characters of the string.</para> + + <para>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</para> + + <para>|S|<superscript>k</superscript> ≥ m ,</para> + + <para>i.e., using the hash function</para> + + <equation> + <title> + Only k String DNA Hash + </title> + <mathphrase> + f<subscript>2</subscript>(s, m) = ∑ <subscript>i + = 0</subscript><superscript>k - 1</superscript> s<subscript>i</subscript> a<superscript>i</superscript> mod m + </mathphrase> + </equation> + + <para>requiring scanning over only</para> + + <para>k = log<subscript>4</subscript>( m )</para> + + <para>characters.</para> + + <para>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</para> + + <para>f<subscript>3</subscript>(s, m) = ∑ <subscript>i = + r</subscript>0<superscript>r<subscript>0</subscript> + k - 1</superscript> s<subscript>i</subscript> + a<superscript>i</superscript> mod m ,</para> + + <para>or</para> + + <para>f<subscript>4</subscript>(s, m) = ∑ <subscript>i = 0</subscript><superscript>k - + 1</superscript> s<subscript>r</subscript>i a<superscript>r<subscript>i</subscript></superscript> mod + m ,</para> + + <para>respectively, for r<subscript>0</subscript>,..., r<subscript>k-1</subscript> + each in the (inclusive) range [0,...,t-1].</para> + + <para>It should be noted that the above functions cannot be + decomposed as per a ranged hash composed of hash and range hashing.</para> + + + </section> + + <section xml:id="details.hash_policies.implementation"> + <info><title>Implementation</title></info> + + <para>This sub-subsection describes the implementation of + the above in this library. 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 this + library.</para> + + <section xml:id="hash_policies.implementation.collision-chaining"> + <info><title> + Range-Hashing and Ranged-Hashes in Collision-Chaining Tables + </title></info> + + + <para><classname>cc_hash_table</classname> is + parametrized by <classname>Hash_Fn</classname> and <classname>Comb_Hash_Fn</classname>, a + hash functor and a combining hash functor, respectively.</para> + + <para>In general, <classname>Comb_Hash_Fn</classname> is considered a + range-hashing functor. <classname>cc_hash_table</classname> + synthesizes a ranged-hash function from <classname>Hash_Fn</classname> and + <classname>Comb_Hash_Fn</classname>. The figure below shows an <classname>insert</classname> 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).</para> + + <figure> + <title>Insert hash sequence diagram</title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_hash_range_hashing_seq_diagram.png"/> + </imageobject> + <textobject> + <phrase>Insert hash sequence diagram</phrase> + </textobject> + </mediaobject> + </figure> + + <para>If <classname>cc_hash_table</classname>'s + hash-functor, <classname>Hash_Fn</classname> is instantiated by <classname>null_type</classname> , then <classname>Comb_Hash_Fn</classname> is taken to be + a ranged-hash function. The graphic below shows an <function>insert</function> 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).</para> + + <figure> + <title>Insert hash sequence diagram with a null policy</title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_hash_range_hashing_seq_diagram2.png"/> + </imageobject> + <textobject> + <phrase>Insert hash sequence diagram with a null policy</phrase> + </textobject> + </mediaobject> + </figure> + + </section> + + <section xml:id="hash_policies.implementation.probe"> + <info><title> + Probing tables + </title></info> + <para><classname>gp_hash_table</classname> is parametrized by + <classname>Hash_Fn</classname>, <classname>Probe_Fn</classname>, + and <classname>Comb_Probe_Fn</classname>. As before, if + <classname>Hash_Fn</classname> and <classname>Probe_Fn</classname> + are both <classname>null_type</classname>, then + <classname>Comb_Probe_Fn</classname> is a ranged-probe + functor. Otherwise, <classname>Hash_Fn</classname> is a hash + functor, <classname>Probe_Fn</classname> is a functor for offsets + from a hash value, and <classname>Comb_Probe_Fn</classname> + transforms a probe sequence into a sequence of positions within + the table.</para> + + </section> + + <section xml:id="hash_policies.implementation.predefined"> + <info><title> + Pre-Defined Policies + </title></info> + + <para>This library contains some pre-defined classes + implementing range-hashing and probing functions:</para> + + <orderedlist> + <listitem><para><classname>direct_mask_range_hashing</classname> + and <classname>direct_mod_range_hashing</classname> + are range-hashing functions based on a bit-mask and a modulo + operation, respectively.</para></listitem> + + <listitem><para><classname>linear_probe_fn</classname>, and + <classname>quadratic_probe_fn</classname> are + a linear probe and a quadratic probe function, + respectively.</para></listitem> + </orderedlist> + + <para> + The graphic below shows the relationships. + </para> + <figure> + <title>Hash policy class diagram</title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_hash_policy_cd.png"/> + </imageobject> + <textobject> + <phrase>Hash policy class diagram</phrase> + </textobject> + </mediaobject> + </figure> + + + </section> + + </section> <!-- impl --> + + </section> + + <section xml:id="container.hash.details.resize_policies"> + <info><title>Resize Policies</title></info> + + <section xml:id="resize_policies.general"> + <info><title>General</title></info> + + <para>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:</para> + + <orderedlist> + <listitem><para>A size policy indicating how a hash table + should grow (e.g., it should multiply by powers of + 2).</para></listitem> + + <listitem><para>A trigger policy indicating when a hash + table should grow (e.g., a load factor is + exceeded).</para></listitem> + </orderedlist> + + </section> + + <section xml:id="resize_policies.size"> + <info><title>Size Policies</title></info> + + + <para>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, and is the + hard-wired policy used by Dinkumware. A + prime-list based policy works well with a modulo-prime range + hashing function and is the hard-wired policy used by SGI's + implementation.</para> + + </section> + + <section xml:id="resize_policies.trigger"> + <info><title>Trigger Policies</title></info> + + <para>Trigger policies determine when a hash table changes size. + Following is a description of two policies: load-check + policies, and collision-check policies.</para> + + <para>Load-check policies are straightforward. The user specifies + two factors, Α<subscript>min</subscript> and + Α<subscript>max</subscript>, and the hash table maintains the + invariant that</para> + + <para>Α<subscript>min</subscript> ≤ (number of + stored elements) / (hash-table size) ≤ + Α<subscript>max</subscript><remark>load factor min max</remark></para> + + <para>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.</para> + + <para>Consider the graphic below. 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.</para> + + <figure> + <title>Balls and bins</title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_balls_and_bins.png"/> + </imageobject> + <textobject> + <phrase>Balls and bins</phrase> + </textobject> + </mediaobject> + </figure> + + <para>Denote the probability that a probe sequence of length + k appears in bin i by p<subscript>i</subscript>, the + length of the probe sequence of bin i by + l<subscript>i</subscript>, and assume uniform distribution. Then</para> + + + + <equation> + <title> + Probability of Probe Sequence of Length k + </title> + <mathphrase> + p<subscript>1</subscript> = + </mathphrase> + </equation> + + <para>P(l<subscript>1</subscript> ≥ k) =</para> + + <para> + P(l<subscript>1</subscript> ≥ α ( 1 + k / α - 1) ≤ (a) + </para> + + <para> + e ^ ( - ( α ( k / α - 1 )<superscript>2</superscript> ) /2) + </para> + + <para>where (a) follows from the Chernoff bound (<xref linkend="biblio.motwani95random"/>). To + calculate the probability that some bin contains a probe + sequence greater than k, we note that the + l<subscript>i</subscript> are negatively-dependent + (<xref linkend="biblio.dubhashi98neg"/>) + . Let + I(.) denote the indicator function. Then</para> + + <equation> + <title> + Probability Probe Sequence in Some Bin + </title> + <mathphrase> + P( exists<subscript>i</subscript> l<subscript>i</subscript> ≥ k ) = + </mathphrase> + </equation> + + <para>P ( ∑ <subscript>i = 1</subscript><superscript>m</superscript> + I(l<subscript>i</subscript> ≥ k) ≥ 1 ) =</para> + + <para>P ( ∑ <subscript>i = 1</subscript><superscript>m</superscript> I ( + l<subscript>i</subscript> ≥ k ) ≥ m p<subscript>1</subscript> ( 1 + 1 / (m + p<subscript>1</subscript>) - 1 ) ) ≤ (a)</para> + + <para>e ^ ( ( - m p<subscript>1</subscript> ( 1 / (m p<subscript>1</subscript>) + - 1 ) <superscript>2</superscript> ) / 2 ) ,</para> + + <para>where (a) follows from the fact that the Chernoff bound can + be applied to negatively-dependent variables (<xref + linkend="biblio.dubhashi98neg"/>). Inserting the first probability + equation into the second one, and equating with 1/m, we + obtain</para> + + + <para>k ~ √ ( 2 α ln 2 m ln(m) ) + ) .</para> + + </section> + + <section xml:id="resize_policies.impl"> + <info><title>Implementation</title></info> + + <para>This sub-subsection describes the implementation of the + above in this library. 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.</para> + + <section xml:id="resize_policies.impl.decomposition"> + <info><title>Decomposition</title></info> + + + <para>Each hash-based container is parametrized by a + <classname>Resize_Policy</classname> parameter; the container derives + <classname>public</classname>ly from <classname>Resize_Policy</classname>. For + example:</para> + <programlisting> + cc_hash_table<typename Key, + typename Mapped, + ... + typename Resize_Policy + ...> : public Resize_Policy + </programlisting> + + <para>As a container object is modified, it continuously notifies + its <classname>Resize_Policy</classname> base of internal changes + (e.g., collisions encountered and elements being + inserted). It queries its <classname>Resize_Policy</classname> base whether + it needs to be resized, and if so, to what size.</para> + + <para>The graphic below 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).</para> + + <figure> + <title>Insert resize sequence diagram</title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_insert_resize_sequence_diagram1.png"/> + </imageobject> + <textobject> + <phrase>Insert resize sequence diagram</phrase> + </textobject> + </mediaobject> + </figure> + + + <para>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: <classname>hash_standard_resize_policy</classname> + is parametrized by <classname>Size_Policy</classname> and + <classname>Trigger_Policy</classname>, derives <classname>public</classname>ly from + both, and acts as a standard delegate (<xref linkend="biblio.gof"/>) + to these policies.</para> + + <para>The two graphics immediately below show sequence diagrams + illustrating the interaction between the standard resize policy + and its trigger and size policies, respectively.</para> + + <figure> + <title>Standard resize policy trigger sequence + diagram</title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_insert_resize_sequence_diagram2.png"/> + </imageobject> + <textobject> + <phrase>Standard resize policy trigger sequence + diagram</phrase> + </textobject> + </mediaobject> + </figure> + + <figure> + <title>Standard resize policy size sequence + diagram</title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_insert_resize_sequence_diagram3.png"/> + </imageobject> + <textobject> + <phrase>Standard resize policy size sequence + diagram</phrase> + </textobject> + </mediaobject> + </figure> + + + </section> + + <section xml:id="resize_policies.impl.predefined"> + <info><title>Predefined Policies</title></info> + <para>The library includes the following + instantiations of size and trigger policies:</para> + + <orderedlist> + <listitem><para><classname>hash_load_check_resize_trigger</classname> + implements a load check trigger policy.</para></listitem> + + <listitem><para><classname>cc_hash_max_collision_check_resize_trigger</classname> + implements a collision check trigger policy.</para></listitem> + + <listitem><para><classname>hash_exponential_size_policy</classname> + implements an exponential-size policy (which should be used + with mask range hashing).</para></listitem> + + <listitem><para><classname>hash_prime_size_policy</classname> + implementing a size policy based on a sequence of primes + (which should + be used with mod range hashing</para></listitem> + </orderedlist> + + <para>The graphic below gives an overall picture of the resize-related + classes. <classname>basic_hash_table</classname> + is parametrized by <classname>Resize_Policy</classname>, which it subclasses + publicly. This class is currently instantiated only by <classname>hash_standard_resize_policy</classname>. + <classname>hash_standard_resize_policy</classname> + itself is parametrized by <classname>Trigger_Policy</classname> and + <classname>Size_Policy</classname>. Currently, <classname>Trigger_Policy</classname> is + instantiated by <classname>hash_load_check_resize_trigger</classname>, + or <classname>cc_hash_max_collision_check_resize_trigger</classname>; + <classname>Size_Policy</classname> is instantiated by <classname>hash_exponential_size_policy</classname>, + or <classname>hash_prime_size_policy</classname>.</para> + + </section> + + <section xml:id="resize_policies.impl.internals"> + <info><title>Controling Access to Internals</title></info> + + <para>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 <function>size()</function> - 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.</para> + + <para>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.</para> + + <para>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 <classname>cc_hash_table</classname> nor + <classname>gp_hash_table</classname> + contain methods for querying the actual size of the table; this + is deferred to <classname>hash_standard_resize_policy</classname>.</para> + + <para>Furthermore, the policies themselves are parametrized by + template arguments that determine the methods they support + ( + <xref linkend="biblio.alexandrescu01modern"/> + shows techniques for doing so). <classname>hash_standard_resize_policy</classname> + is parametrized by <classname>External_Size_Access</classname> that + determines whether it supports methods for querying the actual + size of the table or resizing it. <classname>hash_load_check_resize_trigger</classname> + is parametrized by <classname>External_Load_Access</classname> that + determines whether it supports methods for querying or + modifying the loads. <classname>cc_hash_max_collision_check_resize_trigger</classname> + is parametrized by <classname>External_Load_Access</classname> that + determines whether it supports methods for querying the + load.</para> + + <para>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 + <classname>private</classname> <classname>virtual</classname> method:</para> + <programlisting> + virtual void + do_resize + (size_type new_size); + </programlisting> + + <para>which resizes the container. Implementations of + <classname>Resize_Policy</classname> can export public methods for resizing + the container externally; these methods internally call + <classname>do_resize</classname> to resize the table.</para> + + + </section> + + </section> + + + </section> <!-- resize policies --> + + <section xml:id="container.hash.details.policy_interaction"> + <info><title>Policy Interactions</title></info> + <para> + </para> + <para>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.</para> + + <section xml:id="policy_interaction.probesizetrigger"> + <info><title>probe/size/trigger</title></info> + + <para>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.</para> + + <para>Unfortunately, this library cannot detect such problems at + compilation (they are halting reducible). It therefore defines + an exception class <classname>insert_error</classname> to throw an + exception in this case.</para> + + </section> + + <section xml:id="policy_interaction.hashtrigger"> + <info><title>hash/trigger</title></info> + + <para>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.</para> + + <para>The library, therefore, by design, limits each operation to + one resize. For each <classname>insert</classname>, for example, it queries + only once whether a resize is needed.</para> + + </section> + + <section xml:id="policy_interaction.eqstorehash"> + <info><title>equivalence functors/storing hash values/hash</title></info> + + <para><classname>cc_hash_table</classname> and + <classname>gp_hash_table</classname> are + parametrized by an equivalence functor and by a + <classname>Store_Hash</classname> parameter. If the latter parameter is + <classname>true</classname>, 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.</para> + + <para>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. This library's container will + fail at compilation, by design, if this is attempted.</para> + + </section> + + <section xml:id="policy_interaction.sizeloadtrigger"> + <info><title>size/load-check trigger</title></info> + + <para>Assume a size policy issues an increasing sequence of sizes + a, a q, a q<superscript>1</superscript>, a q<superscript>2</superscript>, ... For + example, an exponential size policy might issue the sequence of + sizes 8, 16, 32, 64, ...</para> + + <para>If a load-check trigger policy is used, with loads + α<subscript>min</subscript> and α<subscript>max</subscript>, + respectively, then it is a good idea to have:</para> + + <orderedlist> + <listitem><para>α<subscript>max</subscript> ~ 1 / q</para></listitem> + + <listitem><para>α<subscript>min</subscript> < 1 / (2 q)</para></listitem> + </orderedlist> + + <para>This will ensure that the amortized hash cost of each + modifying operation is at most approximately 3.</para> + + <para>α<subscript>min</subscript> ~ α<subscript>max</subscript> is, in + any case, a bad choice, and α<subscript>min</subscript> > + α <subscript>max</subscript> is horrendous.</para> + + </section> + + </section> + + </section> <!-- details --> + + </section> <!-- hash --> + + <!-- tree --> + <section xml:id="pbds.design.container.tree"> + <info><title>tree</title></info> + + <section xml:id="container.tree.interface"> + <info><title>Interface</title></info> + + <para>The tree-based container has the following declaration:</para> + <programlisting> + template< + typename Key, + typename Mapped, + typename Cmp_Fn = std::less<Key>, + typename Tag = rb_tree_tag, + template< + typename Const_Node_Iterator, + typename Node_Iterator, + typename Cmp_Fn_, + typename Allocator_> + class Node_Update = null_node_update, + typename Allocator = std::allocator<char> > + class tree; + </programlisting> + + <para>The parameters have the following meaning:</para> + + <orderedlist> + <listitem> + <para><classname>Key</classname> is the key type.</para></listitem> + + <listitem> + <para><classname>Mapped</classname> is the mapped-policy.</para></listitem> + + <listitem> + <para><classname>Cmp_Fn</classname> is a key comparison functor</para></listitem> + + <listitem> + <para><classname>Tag</classname> specifies which underlying data structure + to use.</para></listitem> + + <listitem> + <para><classname>Node_Update</classname> is a policy for updating node + invariants.</para></listitem> + + <listitem> + <para><classname>Allocator</classname> is an allocator + type.</para></listitem> + </orderedlist> + + <para>The <classname>Tag</classname> parameter specifies which underlying + data structure to use. Instantiating it by <classname>rb_tree_tag</classname>, <classname>splay_tree_tag</classname>, or + <classname>ov_tree_tag</classname>, + specifies an underlying red-black tree, splay tree, or + ordered-vector tree, respectively; any other tag is illegal. + Note that containers based on the former two contain more types + and methods than the latter (e.g., + <classname>reverse_iterator</classname> and <classname>rbegin</classname>), and different + exception and invalidation guarantees.</para> + + </section> + + <section xml:id="container.tree.details"> + <info><title>Details</title></info> + + <section xml:id="container.tree.node"> + <info><title>Node Invariants</title></info> + + + <para>Consider the two trees in the graphic below, labels A and B. The first + is a tree of floats; the second is a tree of pairs, each + signifying a geometric line interval. Each element in a tree is refered to as a node of the tree. Of course, each of + these trees can support the usual queries: the first can easily + search for <classname>0.4</classname>; the second can easily search for + <classname>std::make_pair(10, 41)</classname>.</para> + + <para>Each of these trees can efficiently support other queries. + The first can efficiently determine that the 2rd key in the + tree is <constant>0.3</constant>; the second can efficiently determine + whether any of its intervals overlaps + <programlisting>std::make_pair(29,42)</programlisting> (useful in geometric + applications or distributed file systems with leases, for + example). It should be noted that an <classname>std::set</classname> can + only solve these types of problems with linear complexity.</para> + + <para>In order to do so, each tree stores some metadata in + each node, and maintains node invariants (see <xref linkend="biblio.clrs2001"/>.) The first stores in + each node the size of the sub-tree rooted at the node; the + second stores at each node the maximal endpoint of the + intervals at the sub-tree rooted at the node.</para> + + <figure> + <title>Tree node invariants</title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_tree_node_invariants.png"/> + </imageobject> + <textobject> + <phrase>Tree node invariants</phrase> + </textobject> + </mediaobject> + </figure> + + <para>Supporting such trees is difficult for a number of + reasons:</para> + + <orderedlist> + <listitem><para>There must be a way to specify what a node's metadata + should be (if any).</para></listitem> + + <listitem><para>Various operations can invalidate node + invariants. The graphic below shows how a right rotation, + performed on A, results in B, with nodes x and y having + corrupted invariants (the grayed nodes in C). The graphic shows + how an insert, performed on D, results in E, with nodes x and y + having corrupted invariants (the grayed nodes in F). It is not + feasible to know outside the tree the effect of an operation on + the nodes of the tree.</para></listitem> + + <listitem><para>The search paths of standard associative containers are + defined by comparisons between keys, and not through + metadata.</para></listitem> + + <listitem><para>It is not feasible to know in advance which methods trees + can support. Besides the usual <classname>find</classname> method, the + first tree can support a <classname>find_by_order</classname> method, while + the second can support an <classname>overlaps</classname> method.</para></listitem> + </orderedlist> + + <figure> + <title>Tree node invalidation</title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_tree_node_invalidations.png"/> + </imageobject> + <textobject> + <phrase>Tree node invalidation</phrase> + </textobject> + </mediaobject> + </figure> + + <para>These problems are solved by a combination of two means: + node iterators, and template-template node updater + parameters.</para> + + <section xml:id="container.tree.node.iterators"> + <info><title>Node Iterators</title></info> + + + <para>Each tree-based container defines two additional iterator + types, <classname>const_node_iterator</classname> + and <classname>node_iterator</classname>. + These iterators allow descending from a node to one of its + children. Node iterator allow search paths different than those + determined by the comparison functor. The <classname>tree</classname> + supports the methods:</para> + <programlisting> + const_node_iterator + node_begin() const; + + node_iterator + node_begin(); + + const_node_iterator + node_end() const; + + node_iterator + node_end(); + </programlisting> + + <para>The first pairs return node iterators corresponding to the + root node of the tree; the latter pair returns node iterators + corresponding to a just-after-leaf node.</para> + </section> + + <section xml:id="container.tree.node.updator"> + <info><title>Node Updator</title></info> + + <para>The tree-based containers are parametrized by a + <classname>Node_Update</classname> template-template parameter. A + tree-based container instantiates + <classname>Node_Update</classname> to some + <classname>node_update</classname> class, and publicly subclasses + <classname>node_update</classname>. The graphic below shows this + scheme, as well as some predefined policies (which are explained + below).</para> + + <figure> + <title>A tree and its update policy</title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_tree_node_updator_policy_cd.png"/> + </imageobject> + <textobject> + <phrase>A tree and its update policy</phrase> + </textobject> + </mediaobject> + </figure> + + <para><classname>node_update</classname> (an instantiation of + <classname>Node_Update</classname>) must define <classname>metadata_type</classname> as + the type of metadata it requires. For order statistics, + e.g., <classname>metadata_type</classname> might be <classname>size_t</classname>. + The tree defines within each node a <classname>metadata_type</classname> + object.</para> + + <para><classname>node_update</classname> must also define the following method + for restoring node invariants:</para> + <programlisting> + void + operator()(node_iterator nd_it, const_node_iterator end_nd_it) + </programlisting> + + <para>In this method, <varname>nd_it</varname> is a + <classname>node_iterator</classname> corresponding to a node whose + A) all descendants have valid invariants, and B) its own + invariants might be violated; <classname>end_nd_it</classname> is + a <classname>const_node_iterator</classname> corresponding to a + just-after-leaf node. This method should correct the node + invariants of the node pointed to by + <classname>nd_it</classname>. For example, say node x in the + graphic below label A has an invalid invariant, but its' children, + y and z have valid invariants. After the invocation, all three + nodes should have valid invariants, as in label B.</para> + + + <figure> + <title>Restoring node invariants</title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_restoring_node_invariants.png"/> + </imageobject> + <textobject> + <phrase>Restoring node invariants</phrase> + </textobject> + </mediaobject> + </figure> + + <para>When a tree operation might invalidate some node invariant, + it invokes this method in its <classname>node_update</classname> base to + restore the invariant. For example, the graphic below shows + an <function>insert</function> operation (point A); the tree performs some + operations, and calls the update functor three times (points B, + C, and D). (It is well known that any <function>insert</function>, + <function>erase</function>, <function>split</function> or <function>join</function>, can restore + all node invariants by a small number of node invariant updates (<xref linkend="biblio.clrs2001"/>) + .</para> + + <figure> + <title>Insert update sequence</title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_update_seq_diagram.png"/> + </imageobject> + <textobject> + <phrase>Insert update sequence</phrase> + </textobject> + </mediaobject> + </figure> + + <para>To complete the description of the scheme, three questions + need to be answered:</para> + + <orderedlist> + <listitem><para>How can a tree which supports order statistics define a + method such as <classname>find_by_order</classname>?</para></listitem> + + <listitem><para>How can the node updater base access methods of the + tree?</para></listitem> + + <listitem><para>How can the following cyclic dependency be resolved? + <classname>node_update</classname> is a base class of the tree, yet it + uses node iterators defined in the tree (its child).</para></listitem> + </orderedlist> + + <para>The first two questions are answered by the fact that + <classname>node_update</classname> (an instantiation of + <classname>Node_Update</classname>) is a <emphasis>public</emphasis> base class + of the tree. Consequently:</para> + + <orderedlist> + <listitem><para>Any public methods of + <classname>node_update</classname> are automatically methods of + the tree (<xref linkend="biblio.alexandrescu01modern"/>). + Thus an order-statistics node updater, + <classname>tree_order_statistics_node_update</classname> defines + the <function>find_by_order</function> method; any tree + instantiated by this policy consequently supports this method as + well.</para></listitem> + + <listitem><para>In C++, if a base class declares a method as + <literal>virtual</literal>, it is + <literal>virtual</literal> in its subclasses. If + <classname>node_update</classname> needs to access one of the + tree's methods, say the member function + <function>end</function>, it simply declares that method as + <literal>virtual</literal> abstract.</para></listitem> + </orderedlist> + + <para>The cyclic dependency is solved through template-template + parameters. <classname>Node_Update</classname> is parametrized by + the tree's node iterators, its comparison functor, and its + allocator type. Thus, instantiations of + <classname>Node_Update</classname> have all information + required.</para> + + <para>This library assumes that constructing a metadata object and + modifying it are exception free. Suppose that during some method, + say <classname>insert</classname>, a metadata-related operation + (e.g., changing the value of a metadata) throws an exception. Ack! + Rolling back the method is unusually complex.</para> + + <para>Previously, a distinction was made between redundant + policies and null policies. Node invariants show a + case where null policies are required.</para> + + <para>Assume a regular tree is required, one which need not + support order statistics or interval overlap queries. + Seemingly, in this case a redundant policy - a policy which + doesn't affect nodes' contents would suffice. This, would lead + to the following drawbacks:</para> + + <orderedlist> + <listitem><para>Each node would carry a useless metadata object, wasting + space.</para></listitem> + + <listitem><para>The tree cannot know if its + <classname>Node_Update</classname> policy actually modifies a + node's metadata (this is halting reducible). In the graphic + below, assume the shaded node is inserted. The tree would have + to traverse the useless path shown to the root, applying + redundant updates all the way.</para></listitem> + </orderedlist> + <figure> + <title>Useless update path</title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_rationale_null_node_updator.png"/> + </imageobject> + <textobject> + <phrase>Useless update path</phrase> + </textobject> + </mediaobject> + </figure> + + + <para>A null policy class, <classname>null_node_update</classname> + solves both these problems. The tree detects that node + invariants are irrelevant, and defines all accordingly.</para> + + </section> + + </section> + + <section xml:id="container.tree.details.split"> + <info><title>Split and Join</title></info> + + <para>Tree-based containers support split and join methods. + It is possible to split a tree so that it passes + all nodes with keys larger than a given key to a different + tree. These methods have the following advantages over the + alternative of externally inserting to the destination + tree and erasing from the source tree:</para> + + <orderedlist> + <listitem><para>These methods are efficient - red-black trees are split + and joined in poly-logarithmic complexity; ordered-vector + trees are split and joined at linear complexity. The + alternatives have super-linear complexity.</para></listitem> + + <listitem><para>Aside from orders of growth, these operations perform + few allocations and de-allocations. For red-black trees, allocations are not performed, + and the methods are exception-free. </para></listitem> + </orderedlist> + </section> + + </section> <!-- details --> + + </section> <!-- tree --> + + <!-- trie --> + <section xml:id="pbds.design.container.trie"> + <info><title>Trie</title></info> + + <section xml:id="container.trie.interface"> + <info><title>Interface</title></info> + + <para>The trie-based container has the following declaration:</para> + <programlisting> + template<typename Key, + typename Mapped, + typename Cmp_Fn = std::less<Key>, + typename Tag = pat_trie_tag, + template<typename Const_Node_Iterator, + typename Node_Iterator, + typename E_Access_Traits_, + typename Allocator_> + class Node_Update = null_node_update, + typename Allocator = std::allocator<char> > + class trie; + </programlisting> + + <para>The parameters have the following meaning:</para> + + <orderedlist> + <listitem><para><classname>Key</classname> is the key type.</para></listitem> + + <listitem><para><classname>Mapped</classname> is the mapped-policy.</para></listitem> + + <listitem><para><classname>E_Access_Traits</classname> is described in below.</para></listitem> + + <listitem><para><classname>Tag</classname> specifies which underlying data structure + to use, and is described shortly.</para></listitem> + + <listitem><para><classname>Node_Update</classname> is a policy for updating node + invariants. This is described below.</para></listitem> + + <listitem><para><classname>Allocator</classname> is an allocator + type.</para></listitem> + </orderedlist> + + <para>The <classname>Tag</classname> parameter specifies which underlying + data structure to use. Instantiating it by <classname>pat_trie_tag</classname>, specifies an + underlying PATRICIA trie (explained shortly); any other tag is + currently illegal.</para> + + <para>Following is a description of a (PATRICIA) trie + (this implementation follows <xref linkend="biblio.okasaki98mereable"/> and + <xref linkend="biblio.filliatre2000ptset"/>). + </para> + + <para>A (PATRICIA) trie is similar to a tree, but with the + following differences:</para> + + <orderedlist> + <listitem><para>It explicitly views keys as a sequence of elements. + E.g., a trie can view a string as a sequence of + characters; a trie can view a number as a sequence of + bits.</para></listitem> + + <listitem><para>It is not (necessarily) binary. Each node has fan-out n + + 1, where n is the number of distinct + elements.</para></listitem> + + <listitem><para>It stores values only at leaf nodes.</para></listitem> + + <listitem><para>Internal nodes have the properties that A) each has at + least two children, and B) each shares the same prefix with + any of its descendant.</para></listitem> + </orderedlist> + + <para>A (PATRICIA) trie has some useful properties:</para> + + <orderedlist> + <listitem><para>It can be configured to use large node fan-out, giving it + very efficient find performance (albeit at insertion + complexity and size).</para></listitem> + + <listitem><para>It works well for common-prefix keys.</para></listitem> + + <listitem><para>It can support efficiently queries such as which + keys match a certain prefix. This is sometimes useful in file + systems and routers, and for "type-ahead" aka predictive text matching + on mobile devices.</para></listitem> + </orderedlist> + + + </section> + + <section xml:id="container.trie.details"> + <info><title>Details</title></info> + + <section xml:id="container.trie.details.etraits"> + <info><title>Element Access Traits</title></info> + + <para>A trie inherently views its keys as sequences of elements. + For example, a trie can view a string as a sequence of + characters. A trie needs to map each of n elements to a + number in {0, n - 1}. For example, a trie can map a + character <varname>c</varname> to + <programlisting>static_cast<size_t>(c)</programlisting>.</para> + + <para>Seemingly, then, a trie can assume that its keys support + (const) iterators, and that the <classname>value_type</classname> of this + iterator can be cast to a <classname>size_t</classname>. There are several + reasons, though, to decouple the mechanism by which the trie + accesses its keys' elements from the trie:</para> + + <orderedlist> + <listitem><para>In some cases, the numerical value of an element is + inappropriate. Consider a trie storing DNA strings. It is + logical to use a trie with a fan-out of 5 = 1 + |{'A', 'C', + 'G', 'T'}|. This requires mapping 'T' to 3, though.</para></listitem> + + <listitem><para>In some cases the keys' iterators are different than what + is needed. For example, a trie can be used to search for + common suffixes, by using strings' + <classname>reverse_iterator</classname>. As another example, a trie mapping + UNICODE strings would have a huge fan-out if each node would + branch on a UNICODE character; instead, one can define an + iterator iterating over 8-bit (or less) groups.</para></listitem> + </orderedlist> + + <para>trie is, + consequently, parametrized by <classname>E_Access_Traits</classname> - + traits which instruct how to access sequences' elements. + <classname>string_trie_e_access_traits</classname> + is a traits class for strings. Each such traits define some + types, like:</para> + <programlisting> + typename E_Access_Traits::const_iterator + </programlisting> + + <para>is a const iterator iterating over a key's elements. The + traits class must also define methods for obtaining an iterator + to the first and last element of a key.</para> + + <para>The graphic below shows a + (PATRICIA) trie resulting from inserting the words: "I wish + that I could ever see a poem lovely as a trie" (which, + unfortunately, does not rhyme).</para> + + <para>The leaf nodes contain values; each internal node contains + two <classname>typename E_Access_Traits::const_iterator</classname> + objects, indicating the maximal common prefix of all keys in + the sub-tree. For example, the shaded internal node roots a + sub-tree with leafs "a" and "as". The maximal common prefix is + "a". The internal node contains, consequently, to const + iterators, one pointing to <varname>'a'</varname>, and the other to + <varname>'s'</varname>.</para> + + <figure> + <title>A PATRICIA trie</title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_pat_trie.png"/> + </imageobject> + <textobject> + <phrase>A PATRICIA trie</phrase> + </textobject> + </mediaobject> + </figure> + + </section> + + <section xml:id="container.trie.details.node"> + <info><title>Node Invariants</title></info> + + <para>Trie-based containers support node invariants, as do + tree-based containers. There are two minor + differences, though, which, unfortunately, thwart sharing them + sharing the same node-updating policies:</para> + + <orderedlist> + <listitem> + <para>A trie's <classname>Node_Update</classname> template-template + parameter is parametrized by <classname>E_Access_Traits</classname>, while + a tree's <classname>Node_Update</classname> template-template parameter is + parametrized by <classname>Cmp_Fn</classname>.</para></listitem> + + <listitem><para>Tree-based containers store values in all nodes, while + trie-based containers (at least in this implementation) store + values in leafs.</para></listitem> + </orderedlist> + + <para>The graphic below shows the scheme, as well as some predefined + policies (which are explained below).</para> + + <figure> + <title>A trie and its update policy</title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_trie_node_updator_policy_cd.png"/> + </imageobject> + <textobject> + <phrase>A trie and its update policy</phrase> + </textobject> + </mediaobject> + </figure> + + + <para>This library offers the following pre-defined trie node + updating policies:</para> + + <orderedlist> + <listitem> + <para> + <classname>trie_order_statistics_node_update</classname> + supports order statistics. + </para> + </listitem> + + <listitem><para><classname>trie_prefix_search_node_update</classname> + supports searching for ranges that match a given prefix.</para></listitem> + + <listitem><para><classname>null_node_update</classname> + is the null node updater.</para></listitem> + </orderedlist> + + </section> + + <section xml:id="container.trie.details.split"> + <info><title>Split and Join</title></info> + <para>Trie-based containers support split and join methods; the + rationale is equal to that of tree-based containers supporting + these methods.</para> + </section> + + </section> <!-- details --> + + </section> <!-- trie --> + + <!-- list_update --> + <section xml:id="pbds.design.container.list"> + <info><title>List</title></info> + + <section xml:id="container.list.interface"> + <info><title>Interface</title></info> + + <para>The list-based container has the following declaration:</para> + <programlisting> + template<typename Key, + typename Mapped, + typename Eq_Fn = std::equal_to<Key>, + typename Update_Policy = move_to_front_lu_policy<>, + typename Allocator = std::allocator<char> > + class list_update; + </programlisting> + + <para>The parameters have the following meaning:</para> + + <orderedlist> + <listitem> + <para> + <classname>Key</classname> is the key type. + </para> + </listitem> + + <listitem> + <para> + <classname>Mapped</classname> is the mapped-policy. + </para> + </listitem> + + <listitem> + <para> + <classname>Eq_Fn</classname> is a key equivalence functor. + </para> + </listitem> + + <listitem> + <para> + <classname>Update_Policy</classname> is a policy updating positions in + the list based on access patterns. It is described in the + following subsection. + </para> + </listitem> + + <listitem> + <para> + <classname>Allocator</classname> is an allocator type. + </para> + </listitem> + </orderedlist> + + <para>A list-based associative container is a container that + stores elements in a linked-list. It does not order the elements + by any particular order related to the keys. List-based + containers are primarily useful for creating "multimaps". In fact, + list-based containers are designed in this library expressly for + this purpose.</para> + + <para>List-based containers might also be useful for some rare + cases, where a key is encapsulated to the extent that only + key-equivalence can be tested. Hash-based containers need to know + how to transform a key into a size type, and tree-based containers + need to know if some key is larger than another. List-based + associative containers, conversely, only need to know if two keys + are equivalent.</para> + + <para>Since a list-based associative container does not order + elements by keys, is it possible to order the list in some + useful manner? Remarkably, many on-line competitive + algorithms exist for reordering lists to reflect access + prediction. (See <xref linkend="biblio.motwani95random"/> and <xref linkend="biblio.andrew04mtf"/>). + </para> + + </section> + + <section xml:id="container.list.details"> + <info><title>Details</title></info> + <para> + </para> + <section xml:id="container.list.details.ds"> + <info><title>Underlying Data Structure</title></info> + + <para>The graphic below shows a + simple list of integer keys. If we search for the integer 6, we + are paying an overhead: the link with key 6 is only the fifth + link; if it were the first link, it could be accessed + faster.</para> + + <figure> + <title>A simple list</title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_simple_list.png"/> + </imageobject> + <textobject> + <phrase>A simple list</phrase> + </textobject> + </mediaobject> + </figure> + + <para>List-update algorithms reorder lists as elements are + accessed. They try to determine, by the access history, which + keys to move to the front of the list. Some of these algorithms + require adding some metadata alongside each entry.</para> + + <para>For example, in the graphic below label A shows the counter + algorithm. Each node contains both a key and a count metadata + (shown in bold). When an element is accessed (e.g. 6) its count is + incremented, as shown in label B. If the count reaches some + predetermined value, say 10, as shown in label C, the count is set + to 0 and the node is moved to the front of the list, as in label + D. + </para> + + <figure> + <title>The counter algorithm</title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_list_update.png"/> + </imageobject> + <textobject> + <phrase>The counter algorithm</phrase> + </textobject> + </mediaobject> + </figure> + + + </section> + + <section xml:id="container.list.details.policies"> + <info><title>Policies</title></info> + + <para>this library allows instantiating lists with policies + implementing any algorithm moving nodes to the front of the + list (policies implementing algorithms interchanging nodes are + unsupported).</para> + + <para>Associative containers based on lists are parametrized by a + <classname>Update_Policy</classname> parameter. This parameter defines the + type of metadata each node contains, how to create the + metadata, and how to decide, using this metadata, whether to + move a node to the front of the list. A list-based associative + container object derives (publicly) from its update policy. + </para> + + <para>An instantiation of <classname>Update_Policy</classname> must define + internally <classname>update_metadata</classname> as the metadata it + requires. Internally, each node of the list contains, besides + the usual key and data, an instance of <classname>typename + Update_Policy::update_metadata</classname>.</para> + + <para>An instantiation of <classname>Update_Policy</classname> must define + internally two operators:</para> + <programlisting> + update_metadata + operator()(); + + bool + operator()(update_metadata &); + </programlisting> + + <para>The first is called by the container object, when creating a + new node, to create the node's metadata. The second is called + by the container object, when a node is accessed ( + when a find operation's key is equivalent to the key of the + node), to determine whether to move the node to the front of + the list. + </para> + + <para>The library contains two predefined implementations of + list-update policies. The first + is <classname>lu_counter_policy</classname>, which implements the + counter algorithm described above. The second is + <classname>lu_move_to_front_policy</classname>, + which unconditionally move an accessed element to the front of + the list. The latter type is very useful in this library, + since there is no need to associate metadata with each element. + (See <xref linkend="biblio.andrew04mtf"/> + </para> + + </section> + + <section xml:id="container.list.details.mapped"> + <info><title>Use in Multimaps</title></info> + + <para>In this library, there are no equivalents for the standard's + multimaps and multisets; instead one uses an associative + container mapping primary keys to secondary keys.</para> + + <para>List-based containers are especially useful as associative + containers for secondary keys. In fact, they are implemented + here expressly for this purpose.</para> + + <para>To begin with, these containers use very little per-entry + structure memory overhead, since they can be implemented as + singly-linked lists. (Arrays use even lower per-entry memory + overhead, but they are less flexible in moving around entries, + and have weaker invalidation guarantees).</para> + + <para>More importantly, though, list-based containers use very + little per-container memory overhead. The memory overhead of an + empty list-based container is practically that of a pointer. + This is important for when they are used as secondary + associative-containers in situations where the average ratio of + secondary keys to primary keys is low (or even 1).</para> + + <para>In order to reduce the per-container memory overhead as much + as possible, they are implemented as closely as possible to + singly-linked lists.</para> + + <orderedlist> + <listitem> + <para> + List-based containers do not store internally the number + of values that they hold. This means that their <function>size</function> + method has linear complexity (just like <classname>std::list</classname>). + Note that finding the number of equivalent-key values in a + standard multimap also has linear complexity (because it must be + done, via <function>std::distance</function> of the + multimap's <function>equal_range</function> method), but usually with + higher constants. + </para> + </listitem> + + <listitem> + <para> + Most associative-container objects each hold a policy + object (a hash-based container object holds a + hash functor). List-based containers, conversely, only have + class-wide policy objects. + </para> + </listitem> + </orderedlist> + + + </section> + + </section> <!-- details --> + + </section> <!-- list --> + + + <!-- priority_queue --> + <section xml:id="pbds.design.container.priority_queue"> + <info><title>Priority Queue</title></info> + + <section xml:id="container.priority_queue.interface"> + <info><title>Interface</title></info> + + <para>The priority queue container has the following + declaration: + </para> + <programlisting> + template<typename Value_Type, + typename Cmp_Fn = std::less<Value_Type>, + typename Tag = pairing_heap_tag, + typename Allocator = std::allocator<char > > + class priority_queue; + </programlisting> + + <para>The parameters have the following meaning:</para> + + <orderedlist> + <listitem><para><classname>Value_Type</classname> is the value type.</para></listitem> + + <listitem><para><classname>Cmp_Fn</classname> is a value comparison functor</para></listitem> + + <listitem><para><classname>Tag</classname> specifies which underlying data structure + to use.</para></listitem> + + <listitem><para><classname>Allocator</classname> is an allocator + type.</para></listitem> + </orderedlist> + + <para>The <classname>Tag</classname> parameter specifies which underlying + data structure to use. Instantiating it by<classname>pairing_heap_tag</classname>,<classname>binary_heap_tag</classname>, + <classname>binomial_heap_tag</classname>, + <classname>rc_binomial_heap_tag</classname>, + or <classname>thin_heap_tag</classname>, + specifies, respectively, + an underlying pairing heap (<xref linkend="biblio.fredman86pairing"/>), + binary heap (<xref linkend="biblio.clrs2001"/>), + binomial heap (<xref linkend="biblio.clrs2001"/>), + a binomial heap with a redundant binary counter (<xref linkend="biblio.maverik_lowerbounds"/>), + or a thin heap (<xref linkend="biblio.kt99fat_heaps"/>). + </para> + + <para> + As mentioned in the tutorial, + <classname>__gnu_pbds::priority_queue</classname> shares most of the + same interface with <classname>std::priority_queue</classname>. + E.g. if <varname>q</varname> is a priority queue of type + <classname>Q</classname>, then <function>q.top()</function> will + return the "largest" value in the container (according to + <classname>typename + Q::cmp_fn</classname>). <classname>__gnu_pbds::priority_queue</classname> + has a larger (and very slightly different) interface than + <classname>std::priority_queue</classname>, however, since typically + <classname>push</classname> and <classname>pop</classname> are deemed + insufficient for manipulating priority-queues. </para> + + <para>Different settings require different priority-queue + implementations which are described in later; see traits + discusses ways to differentiate between the different traits of + different implementations.</para> + + + </section> + + <section xml:id="container.priority_queue.details"> + <info><title>Details</title></info> + + <section xml:id="container.priority_queue.details.iterators"> + <info><title>Iterators</title></info> + + <para>There are many different underlying-data structures for + implementing priority queues. Unfortunately, most such + structures are oriented towards making <function>push</function> and + <function>top</function> efficient, and consequently don't allow efficient + access of other elements: for instance, they cannot support an efficient + <function>find</function> method. In the use case where it + is important to both access and "do something with" an + arbitrary value, one would be out of luck. For example, many graph algorithms require + modifying a value (typically increasing it in the sense of the + priority queue's comparison functor).</para> + + <para>In order to access and manipulate an arbitrary value in a + priority queue, one needs to reference the internals of the + priority queue from some form of an associative container - + this is unavoidable. Of course, in order to maintain the + encapsulation of the priority queue, this needs to be done in a + way that minimizes exposure to implementation internals.</para> + + <para>In this library the priority queue's <function>insert</function> + method returns an iterator, which if valid can be used for subsequent <function>modify</function> and + <function>erase</function> operations. This both preserves the priority + queue's encapsulation, and allows accessing arbitrary values (since the + returned iterators from the <function>push</function> operation can be + stored in some form of associative container).</para> + + <para>Priority queues' iterators present a problem regarding their + invalidation guarantees. One assumes that calling + <function>operator++</function> on an iterator will associate it + with the "next" value. Priority-queues are + self-organizing: each operation changes what the "next" value + means. Consequently, it does not make sense that <function>push</function> + will return an iterator that can be incremented - this can have + no possible use. Also, as in the case of hash-based containers, + it is awkward to define if a subsequent <function>push</function> operation + invalidates a prior returned iterator: it invalidates it in the + sense that its "next" value is not related to what it + previously considered to be its "next" value. However, it might not + invalidate it, in the sense that it can be + de-referenced and used for <function>modify</function> and <function>erase</function> + operations.</para> + + <para>Similarly to the case of the other unordered associative + containers, this library uses a distinction between + point-type and range type iterators. A priority queue's <classname>iterator</classname> can always be + converted to a <classname>point_iterator</classname>, and a + <classname>const_iterator</classname> can always be converted to a + <classname>point_const_iterator</classname>.</para> + + <para>The following snippet demonstrates manipulating an arbitrary + value:</para> + <programlisting> + // A priority queue of integers. + priority_queue<int > p; + + // Insert some values into the priority queue. + priority_queue<int >::point_iterator it = p.push(0); + + p.push(1); + p.push(2); + + // Now modify a value. + p.modify(it, 3); + + assert(p.top() == 3); + </programlisting> + + + <para>It should be noted that an alternative design could embed an + associative container in a priority queue. Could, but most + probably should not. To begin with, it should be noted that one + could always encapsulate a priority queue and an associative + container mapping values to priority queue iterators with no + performance loss. One cannot, however, "un-encapsulate" a priority + queue embedding an associative container, which might lead to + performance loss. Assume, that one needs to associate each value + with some data unrelated to priority queues. Then using + this library's design, one could use an + associative container mapping each value to a pair consisting of + this data and a priority queue's iterator. Using the embedded + method would need to use two associative containers. Similar + problems might arise in cases where a value can reside + simultaneously in many priority queues.</para> + + </section> + + + <section xml:id="container.priority_queue.details.d"> + <info><title>Underlying Data Structure</title></info> + + <para>There are three main implementations of priority queues: the + first employs a binary heap, typically one which uses a + sequence; the second uses a tree (or forest of trees), which is + typically less structured than an associative container's tree; + the third simply uses an associative container. These are + shown in the graphic below, in labels A1 and A2, label B, and label C.</para> + + <figure> + <title>Underlying Priority-Queue Data-Structures.</title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_priority_queue_different_underlying_dss.png"/> + </imageobject> + <textobject> + <phrase>Underlying Priority-Queue Data-Structures.</phrase> + </textobject> + </mediaobject> + </figure> + + <para>Roughly speaking, any value that is both pushed and popped + from a priority queue must incur a logarithmic expense (in the + amortized sense). Any priority queue implementation that would + avoid this, would violate known bounds on comparison-based + sorting (see <xref linkend="biblio.clrs2001"/> and <xref linkend="biblio.brodal96priority"/>). + </para> + + <para>Most implementations do + not differ in the asymptotic amortized complexity of + <function>push</function> and <function>pop</function> operations, but they differ in + the constants involved, in the complexity of other operations + (e.g., <function>modify</function>), and in the worst-case + complexity of single operations. In general, the more + "structured" an implementation (i.e., the more internal + invariants it possesses) - the higher its amortized complexity + of <function>push</function> and <function>pop</function> operations.</para> + + <para>This library implements different algorithms using a + single class: <classname>priority_queue</classname>. + Instantiating the <classname>Tag</classname> template parameter, "selects" + the implementation:</para> + + <orderedlist> + <listitem><para> + Instantiating <classname>Tag = binary_heap_tag</classname> creates + a binary heap of the form in represented in the graphic with labels A1 or A2. The former is internally + selected by priority_queue + if <classname>Value_Type</classname> is instantiated by a primitive type + (e.g., an <type>int</type>); the latter is + internally selected for all other types (e.g., + <classname>std::string</classname>). This implementations is relatively + unstructured, and so has good <classname>push</classname> and <classname>pop</classname> + performance; it is the "best-in-kind" for primitive + types, e.g., <type>int</type>s. Conversely, it has + high worst-case performance, and can support only linear-time + <function>modify</function> and <function>erase</function> operations.</para></listitem> + + <listitem><para>Instantiating <classname>Tag = + pairing_heap_tag</classname> creates a pairing heap of the form + in represented by label B in the graphic above. This + implementations too is relatively unstructured, and so has good + <function>push</function> and <function>pop</function> + performance; it is the "best-in-kind" for non-primitive types, + e.g., <classname>std:string</classname>s. It also has very good + worst-case <function>push</function> and + <function>join</function> performance (O(1)), but has high + worst-case <function>pop</function> + complexity.</para></listitem> + + <listitem><para>Instantiating <classname>Tag = + binomial_heap_tag</classname> creates a binomial heap of the + form repsented by label B in the graphic above. This + implementations is more structured than a pairing heap, and so + has worse <function>push</function> and <function>pop</function> + performance. Conversely, it has sub-linear worst-case bounds for + <function>pop</function>, e.g., and so it might be preferred in + cases where responsiveness is important.</para></listitem> + + <listitem><para>Instantiating <classname>Tag = + rc_binomial_heap_tag</classname> creates a binomial heap of the + form represented in label B above, accompanied by a redundant + counter which governs the trees. This implementations is + therefore more structured than a binomial heap, and so has worse + <function>push</function> and <function>pop</function> + performance. Conversely, it guarantees O(1) + <function>push</function> complexity, and so it might be + preferred in cases where the responsiveness of a binomial heap + is insufficient.</para></listitem> + + <listitem><para>Instantiating <classname>Tag = + thin_heap_tag</classname> creates a thin heap of the form + represented by the label B in the graphic above. This + implementations too is more structured than a pairing heap, and + so has worse <function>push</function> and + <function>pop</function> performance. Conversely, it has better + worst-case and identical amortized complexities than a Fibonacci + heap, and so might be more appropriate for some graph + algorithms.</para></listitem> + </orderedlist> + + <para>Of course, one can use any order-preserving associative + container as a priority queue, as in the graphic above label C, possibly by creating an adapter class + over the associative container (much as + <classname>std::priority_queue</classname> can adapt <classname>std::vector</classname>). + This has the advantage that no cross-referencing is necessary + at all; the priority queue itself is an associative container. + Most associative containers are too structured to compete with + priority queues in terms of <function>push</function> and <function>pop</function> + performance.</para> + + + + </section> + + <section xml:id="container.priority_queue.details.traits"> + <info><title>Traits</title></info> + + <para>It would be nice if all priority queues could + share exactly the same behavior regardless of implementation. Sadly, this is not possible. Just one for instance is in join operations: joining + two binary heaps might throw an exception (not corrupt + any of the heaps on which it operates), but joining two pairing + heaps is exception free.</para> + + <para>Tags and traits are very useful for manipulating generic + types. <classname>__gnu_pbds::priority_queue</classname> + publicly defines <classname>container_category</classname> as one of the tags. Given any + container <classname>Cntnr</classname>, the tag of the underlying + data structure can be found via <classname>typename + Cntnr::container_category</classname>; this is one of the possible tags shown in the graphic below. + </para> + + <figure> + <title>Priority-Queue Data-Structure Tags.</title> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_priority_queue_tag_hierarchy.png"/> + </imageobject> + <textobject> + <phrase>Priority-Queue Data-Structure Tags.</phrase> + </textobject> + </mediaobject> + </figure> + + + <para>Additionally, a traits mechanism can be used to query a + container type for its attributes. Given any container + <classname>Cntnr</classname>, then <programlisting>__gnu_pbds::container_traits<Cntnr></programlisting> + is a traits class identifying the properties of the + container.</para> + + <para>To find if a container might throw if two of its objects are + joined, one can use + <programlisting> + container_traits<Cntnr>::split_join_can_throw + </programlisting> + </para> + + <para> + Different priority-queue implementations have different invalidation guarantees. This is + especially important, since there is no way to access an arbitrary + value of priority queues except for iterators. Similarly to + associative containers, one can use + <programlisting> + container_traits<Cntnr>::invalidation_guarantee + </programlisting> + to get the invalidation guarantee type of a priority queue.</para> + + <para>It is easy to understand from the graphic above, what <classname>container_traits<Cntnr>::invalidation_guarantee</classname> + will be for different implementations. All implementations of + type represented by label B have <classname>point_invalidation_guarantee</classname>: + the container can freely internally reorganize the nodes - + range-type iterators are invalidated, but point-type iterators + are always valid. Implementations of type represented by labels A1 and A2 have <classname>basic_invalidation_guarantee</classname>: + the container can freely internally reallocate the array - both + point-type and range-type iterators might be invalidated.</para> + + <para> + This has major implications, and constitutes a good reason to avoid + using binary heaps. A binary heap can perform <function>modify</function> + or <function>erase</function> efficiently given a valid point-type + iterator. However, in order to supply it with a valid point-type + iterator, one needs to iterate (linearly) over all + values, then supply the relevant iterator (recall that a + range-type iterator can always be converted to a point-type + iterator). This means that if the number of <function>modify</function> or + <function>erase</function> operations is non-negligible (say + super-logarithmic in the total sequence of operations) - binary + heaps will perform badly. + </para> + + </section> + + </section> <!-- details --> + + </section> <!-- priority_queue --> + + + + </section> <!-- container --> + + </section> <!-- design --> + + + + <!-- S04: Test --> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" + href="test_policy_data_structures.xml"> + </xi:include> + + <!-- S05: Reference/Acknowledgments --> + <section xml:id="pbds.ack"> + <info><title>Acknowledgments</title></info> + <?dbhtml filename="policy_data_structures_biblio.html"?> + + <para> + Written by Ami Tavory and Vladimir Dreizin (IBM Haifa Research + Laboratories), and Benjamin Kosnik (Red Hat). + </para> + + <para> + This library was partially written at + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.haifa.il.ibm.com/">IBM's Haifa Research Labs</link>. + It is based heavily on policy-based design and uses many useful + techniques from Modern C++ Design: Generic Programming and Design + Patterns Applied by Andrei Alexandrescu. + </para> + + <para> + Two ideas are borrowed from the SGI-STL implementation: + </para> + + <orderedlist> + <listitem> + <para> + The prime-based resize policies use a list of primes taken from + the SGI-STL implementation. + </para> + </listitem> + + <listitem> + <para> + 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. + </para> + </listitem> + </orderedlist> + + <para> + Some test utilities borrow ideas from + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.boost.org/doc/libs/release/libs/timer/index.html">boost::timer</link>. + </para> + + <para> + We would like to thank Scott Meyers for useful comments (without + attributing to him any flaws in the design or implementation of the + library). + </para> + <para>We would like to thank Matt Austern for the suggestion to + include tries.</para> + </section> + + <!-- S06: Biblio --> + <bibliography xml:id="pbds.biblio"> + <info> + <title> + Bibliography + </title> + </info> + <?dbhtml filename="policy_data_structures_biblio.html"?> + + <!-- 01 --> + <biblioentry xml:id="biblio.abrahams97exception"> + <title> + <link xmlns:xlink="http://www.w3.org/1999/xlink" + xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/1997/N1075.pdf"> + STL Exception Handling Contract + </link> + </title> + <date>1997</date> + + <author> + <personname> + <firstname> + Dave + </firstname> + <surname> + Abrahams + </surname> + </personname> + </author> + + <publisher> + <publishername> + ISO SC22/WG21 + </publishername> + </publisher> + </biblioentry> + + + <!-- 02 --> + <biblioentry xml:id="biblio.alexandrescu01modern"> + <title> + Modern C++ Design: Generic Programming and Design Patterns Applied + </title> + <date> + 2001 + </date> + + <author> + <personname> + <firstname> + Andrei + </firstname> + <surname> + Alexandrescu + </surname> + </personname> + </author> + + <publisher> + <publishername> + Addison-Wesley Publishing Company + </publishername> + </publisher> + </biblioentry> + + + <!-- 03 --> + <biblioentry xml:id="biblio.andrew04mtf"> + <title> + MTF, Bit, and COMB: A Guide to Deterministic and Randomized + Algorithms for the List Update Problem + </title> + + <authorgroup> + <author> + <personname> + <firstname> + K. + </firstname> + <surname> + Andrew + </surname> + </personname> + </author> + + <author> + <personname> + <firstname> + D. + </firstname> + <surname> + Gleich + </surname> + </personname> + </author> + </authorgroup> + </biblioentry> + + <!-- 04 --> + <biblioentry xml:id="biblio.austern00noset"> + <title> + Why You Shouldn't Use set - and What You Should Use Instead + </title> + <date> + April, 2000 + </date> + + <author> + <personname> + <firstname> + Matthew + </firstname> + <surname> + Austern + </surname> + </personname> + </author> + + <publisher> + <publishername> + C++ Report + </publishername> + </publisher> + </biblioentry> + + <!-- 05 --> + <biblioentry xml:id="biblio.austern01htprop"> + <title> + <link xmlns:xlink="http://www.w3.org/1999/xlink" + xlink:href="http://www.open-std.org/JTC1/sc22/wg21/docs/papers/2001/n1326.html"> + A Proposal to Add Hashtables to the Standard Library + </link> + </title> + <date> + 2001 + </date> + + <author> + <personname> + <firstname> + Matthew + </firstname> + <surname> + Austern + </surname> + </personname> + </author> + + <publisher> + <publishername> + ISO SC22/WG21 + </publishername> + </publisher> + </biblioentry> + + <!-- 06 --> + <biblioentry xml:id="biblio.austern98segmentedit"> + <title> + Segmented iterators and hierarchical algorithms + </title> + <date> + April, 1998 + </date> + + <author> + <personname> + <firstname> + Matthew + </firstname> + <surname> + Austern + </surname> + </personname> + </author> + + <publisher> + <publishername> + Generic Programming + </publishername> + </publisher> + </biblioentry> + + <!-- 07 --> + <biblioentry xml:id="biblio.dawestimer"> + <title> + <link xmlns:xlink="http://www.w3.org/1999/xlink" + xlink:href="www.boost.org/doc/libs/release/libs/timer/"> + Boost Timer Library + </link> + </title> + + <author> + <personname> + <firstname> + Beeman + </firstname> + <surname> + Dawes + </surname> + </personname> + </author> + + <publisher> + <publishername> + Boost + </publishername> + </publisher> + </biblioentry> + + <!-- 08 --> + <biblioentry xml:id="biblio.clearypool"> + <title> + <link xmlns:xlink="http://www.w3.org/1999/xlink" + xlink:href="www.boost.org/doc/libs/release/libs/pool/"> + Boost Pool Library + </link> + </title> + + <author> + <personname> + <firstname> + Stephen + </firstname> + <surname> + Cleary + </surname> + </personname> + </author> + + <publisher> + <publishername> + Boost + </publishername> + </publisher> + </biblioentry> + + + <!-- 09 --> + <biblioentry xml:id="biblio.maddocktraits"> + <title> + <link xmlns:xlink="http://www.w3.org/1999/xlink" + xlink:href="www.boost.org/doc/libs/release/libs/type_traits/"> + Boost Type Traits Library + </link> + </title> + <authorgroup> + <author> + <personname> + <firstname> + Maddock + </firstname> + <surname> + John + </surname> + </personname> + </author> + <author> + <personname> + <firstname> + Stephen + </firstname> + <surname> + Cleary + </surname> + </personname> + </author> + </authorgroup> + <publisher> + <publishername> + Boost + </publishername> + </publisher> + </biblioentry> + + <!-- 10 --> + <biblioentry xml:id="biblio.brodal96priority"> + <title> + <link xmlns:xlink="http://www.w3.org/1999/xlink" + xlink:href="http://portal.acm.org/citation.cfm?id=313883"> + Worst-case efficient priority queues + </link> + </title> + + <author> + <personname> + <firstname> + Gerth + </firstname> + <surname> + Stolting Brodal + </surname> + </personname> + </author> + + </biblioentry> + + <!-- 11 --> + <biblioentry xml:id="biblio.bulkamayheweff"> + <title> + Efficient C++ Programming Techniques + </title> + <date> + 1997 + </date> + + <authorgroup> + <author> + <personname> + <firstname> + D. + </firstname> + <surname> + Bulka + </surname> + </personname> + </author> + <author> + <personname> + <firstname> + D. + </firstname> + <surname> + Mayhew + </surname> + </personname> + </author> + </authorgroup> + + <publisher> + <publishername> + Addison-Wesley Publishing Company + </publishername> + </publisher> + </biblioentry> + + <!-- 12 --> + <biblioentry xml:id="biblio.clrs2001"> + <title> + Introduction to Algorithms, 2nd edition + </title> + <date> + 2001 + </date> + <authorgroup> + <author> + <personname> + <firstname> + T. H. + </firstname> + <surname> + Cormen + </surname> + </personname> + </author> + + <author> + <personname> + <firstname> + C. E. + </firstname> + <surname> + Leiserson + </surname> + </personname> + </author> + + <author> + <personname> + <firstname> + R. L. + </firstname> + <surname> + Rivest + </surname> + </personname> + </author> + + <author> + <personname> + <firstname> + C. + </firstname> + <surname> + Stein + </surname> + </personname> + </author> + </authorgroup> + <publisher> + <publishername> + MIT Press + </publishername> + </publisher> + </biblioentry> + + <!-- 13 --> + <biblioentry xml:id="biblio.dubhashi98neg"> + <title> + Balls and bins: A study in negative dependence + </title> + <date> + 1998 + </date> + <authorgroup> + <author> + <personname> + <firstname> + D. + </firstname> + <surname> + Dubashi + </surname> + </personname> + </author> + <author> + <personname> + <firstname> + D. + </firstname> + <surname> + Ranjan + </surname> + </personname> + </author> + </authorgroup> + + <publisher> + <publishername> + Random Structures and Algorithms 13 + </publishername> + </publisher> + </biblioentry> + + + <!-- 14 --> + <biblioentry xml:id="biblio.fagin79extendible"> + <title> + Extendible hashing - a fast access method for dynamic files + </title> + <date> + 1979 + </date> + + <authorgroup> + <author> + <personname> + <firstname> + R. + </firstname> + <surname> + Fagin + </surname> + </personname> + </author> + <author> + <personname> + <firstname> + J. + </firstname> + <surname> + Nievergelt + </surname> + </personname> + </author> + <author> + <personname> + <firstname> + N. + </firstname> + <surname> + Pippenger + </surname> + </personname> + </author> + <author> + <personname> + <firstname> + H. R. + </firstname> + <surname> + Strong + </surname> + </personname> + </author> + </authorgroup> + + <publisher> + <publishername> + ACM Trans. Database Syst. 4 + </publishername> + </publisher> + </biblioentry> + + + + <!-- 15 --> + <biblioentry xml:id="biblio.filliatre2000ptset"> + <title> + <link xmlns:xlink="http://www.w3.org/1999/xlink" + xlink:href="http://cristal.inria.fr/~frisch/icfp06_contest/advtr/applyOmatic/ptset.ml"> + Ptset: Sets of integers implemented as Patricia trees + </link> + </title> + + <date> + 2000 + </date> + + <author> + <personname> + <firstname> + Jean-Christophe + </firstname> + <surname> + Filliatre + </surname> + </personname> + </author> + </biblioentry> + + + + <!-- 16 --> + <biblioentry xml:id="biblio.fredman86pairing"> + <title> + <link xmlns:xlink="http://www.w3.org/1999/xlink" + xlink:href="http://www.cs.cmu.edu/~sleator/papers/pairing-heaps.pdf"> + The pairing heap: a new form of self-adjusting heap + </link> + </title> + <date> + 1986 + </date> + <authorgroup> + <author> + <personname> + <firstname> + M. L. + </firstname> + <surname> + Fredman + </surname> + </personname> + </author> + <author> + <personname> + <firstname> + R. + </firstname> + <surname> + Sedgewick + </surname> + </personname> + </author> + <author> + <personname> + <firstname> + D. D. + </firstname> + <surname> + Sleator + </surname> + </personname> + </author> + <author> + <personname> + <firstname> + R. E. + </firstname> + <surname> + Tarjan + </surname> + </personname> + </author> + </authorgroup> + </biblioentry> + + + <!-- 17 --> + <biblioentry xml:id="biblio.gof"> + <title> + Design Patterns - Elements of Reusable Object-Oriented Software + </title> + <date> + 1995 + </date> + <authorgroup> + <author> + <personname> + <firstname> + E. + </firstname> + <surname> + Gamma + </surname> + </personname> + </author> + <author> + <personname> + <firstname> + R. + </firstname> + <surname> + Helm + </surname> + </personname> + </author> + <author> + <personname> + <firstname> + R. + </firstname> + <surname> + Johnson + </surname> + </personname> + </author> + <author> + <personname> + <firstname> + J. + </firstname> + <surname> + Vlissides + </surname> + </personname> + </author> + </authorgroup> + <publisher> + <publishername> + Addison-Wesley Publishing Company + </publishername> + </publisher> + </biblioentry> + + + <!-- 18 --> + <biblioentry xml:id="biblio.garg86order"> + <title> + Order-preserving key transformations + </title> + <date> + 1986 + </date> + <authorgroup> + <author> + <personname> + <firstname> + A. K. + </firstname> + <surname> + Garg + </surname> + </personname> + </author> + <author> + <personname> + <firstname> + C. C. + </firstname> + <surname> + Gotlieb + </surname> + </personname> + </author> + </authorgroup> + + <publisher> + <publishername> + Trans. Database Syst. 11 + </publishername> + </publisher> + </biblioentry> + + <!-- 19 --> + <biblioentry xml:id="biblio.hyslop02making"> + <title> + Making a real hash of things + </title> + <date> + May 2002 + </date> + <authorgroup> + <author> + <personname> + <firstname> + J. + </firstname> + <surname> + Hyslop + </surname> + </personname> + </author> + <author> + <personname> + <firstname> + Herb + </firstname> + <surname> + Sutter + </surname> + </personname> + </author> + </authorgroup> + + <publisher> + <publishername> + C++ Report + </publishername> + </publisher> + </biblioentry> + + + <!-- 20 --> + <biblioentry xml:id="biblio.jossutis01stl"> + <title> + The C++ Standard Library - A Tutorial and Reference + </title> + <date> + 2001 + </date> + + <author> + <personname> + <firstname> + N. M. + </firstname> + <surname> + Jossutis + </surname> + </personname> + </author> + <publisher> + <publishername> + Addison-Wesley Publishing Company + </publishername> + </publisher> + </biblioentry> + + <!-- 21 --> + <biblioentry xml:id="biblio.kt99fat_heaps"> + <title> + <link xmlns:xlink="http://www.w3.org/1999/xlink" + xlink:href="http://www.cs.princeton.edu/research/techreps/TR-597-99"> + New Heap Data Structures + </link> + </title> + <date> + 1999 + </date> + + <authorgroup> + <author> + <personname> + <firstname> + Haim + </firstname> + <surname> + Kaplan + </surname> + </personname> + </author> + <author> + <personname> + <firstname> + Robert E. + </firstname> + <surname> + Tarjan + </surname> + </personname> + </author> + </authorgroup> + </biblioentry> + + + <!-- 22 --> + <biblioentry xml:id="biblio.kleft00sets"> + <title> + Are Set Iterators Mutable or Immutable? + </title> + <date> + October 2000 + </date> + <authorgroup> + <author> + <personname> + <firstname> + Angelika + </firstname> + <surname> + Langer + </surname> + </personname> + </author> + + <author> + <personname> + <firstname> + Klaus + </firstname> + <surname> + Kleft + </surname> + </personname> + </author> + </authorgroup> + + <publisher> + <publishername> + C/C++ Users Jornal + </publishername> + </publisher> + </biblioentry> + + <!-- 23 --> + <biblioentry xml:id="biblio.knuth98sorting"> + <title> + The Art of Computer Programming - Sorting and Searching + </title> + <date> + 1998 + </date> + + <author> + <personname> + <firstname> + D. E. + </firstname> + <surname> + Knuth + </surname> + </personname> + </author> + + <publisher> + <publishername> + Addison-Wesley Publishing Company + </publishername> + </publisher> + </biblioentry> + + <!-- 24 --> + <biblioentry xml:id="biblio.liskov98data"> + <title> + Data abstraction and hierarchy + </title> + <date> + May 1998 + </date> + + <author> + <personname> + <firstname> + B. + </firstname> + <surname> + Liskov + </surname> + </personname> + </author> + + <publisher> + <publishername> + SIGPLAN Notices 23 + </publishername> + </publisher> + </biblioentry> + + <!-- 25 --> + <biblioentry xml:id="biblio.litwin80lh"> + <title> + Linear hashing: A new tool for file and table addressing + </title> + <date> + June 1980 + </date> + + <author> + <personname> + <firstname> + W. + </firstname> + <surname> + Litwin + </surname> + </personname> + </author> + + <publisher> + <publishername> + Proceedings of International Conference on Very Large Data Bases + </publishername> + </publisher> + </biblioentry> + + <!-- 26 --> + <biblioentry xml:id="biblio.maverik_lowerbounds"> + <title> + <link xmlns:xlink="http://www.w3.org/1999/xlink" + xlink:href="http://magic.aladdin.cs.cmu.edu/2005/08/01/deamortization-part-2-binomial-heaps"> + Deamortization - Part 2: Binomial Heaps + </link> + </title> + <date> + 2005 + </date> + + <author> + <personname> + <firstname> + Maverik + </firstname> + <surname> + Woo + </surname> + </personname> + </author> + </biblioentry> + + <!-- 27 --> + <biblioentry xml:id="biblio.meyers96more"> + <title> + More Effective C++: 35 New Ways to Improve Your Programs and Designs + </title> + <date> + 1996 + </date> + + <author> + <personname> + <firstname> + Scott + </firstname> + <surname> + Meyers + </surname> + </personname> + </author> + + <publisher> + <publishername> + Addison-Wesley Publishing Company + </publishername> + </publisher> + </biblioentry> + + <!-- 28 --> + <biblioentry xml:id="biblio.meyers00nonmember"> + <title> + How Non-Member Functions Improve Encapsulation + </title> + <date> + 2000 + </date> + + <author> + <personname> + <firstname> + Scott + </firstname> + <surname> + Meyers + </surname> + </personname> + </author> + + <publisher> + <publishername> + C/C++ Users Journal + </publishername> + </publisher> + </biblioentry> + + <!-- 29 --> + <biblioentry xml:id="biblio.meyers01stl"> + <title> + Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library + </title> + <date> + 2001 + </date> + + <author> + <personname> + <firstname> + Scott + </firstname> + <surname> + Meyers + </surname> + </personname> + </author> + + <publisher> + <publishername> + Addison-Wesley Publishing Company + </publishername> + </publisher> + </biblioentry> + + <!-- 30 --> + <biblioentry xml:id="biblio.meyers02both"> + <title> + Class Template, Member Template - or Both? + </title> + <date> + 2003 + </date> + + <author> + <personname> + <firstname> + Scott + </firstname> + <surname> + Meyers + </surname> + </personname> + </author> + + <publisher> + <publishername> + C/C++ Users Journal + </publishername> + </publisher> + </biblioentry> + + <!-- 31 --> + <biblioentry xml:id="biblio.motwani95random"> + <title> + Randomized Algorithms + </title> + <date> + 2003 + </date> + <authorgroup> + <author> + <personname> + <firstname> + R. + </firstname> + <surname> + Motwani + </surname> + </personname> + </author> + <author> + <personname> + <firstname> + P. + </firstname> + <surname> + Raghavan + </surname> + </personname> + </author> + </authorgroup> + <publisher> + <publishername> + Cambridge University Press + </publishername> + </publisher> + </biblioentry> + + + <!-- 32 --> + <biblioentry xml:id="biblio.mscom"> + <title> + <link xmlns:xlink="http://www.w3.org/1999/xlink" + xlink:href="http://www.microsoft.com/com"> + COM: Component Model Object Technologies + </link> + </title> + <publisher> + <publishername> + Microsoft + </publishername> + </publisher> + </biblioentry> + + <!-- 33 --> + <biblioentry xml:id="biblio.musser95rationale"> + <title> + Rationale for Adding Hash Tables to the C++ Standard Template Library + </title> + <date> + 1995 + </date> + + <author> + <personname> + <firstname> + David R. + </firstname> + <surname> + Musser + </surname> + </personname> + </author> + + </biblioentry> + + <!-- 35 --> + <biblioentry xml:id="biblio.musser96stltutorial"> + <title> + STL Tutorial and Reference Guide + </title> + <date> + 1996 + </date> + + <authorgroup> + <author> + <personname> + <firstname> + David R. + </firstname> + <surname> + Musser + </surname> + </personname> + </author> + <author> + <personname> + <firstname> + A. + </firstname> + <surname> + Saini + </surname> + </personname> + </author> + </authorgroup> + <publisher> + <publishername> + Addison-Wesley Publishing Company + </publishername> + </publisher> + + </biblioentry> + + + <!-- 36 --> + <biblioentry xml:id="biblio.nelson96stlpq"> + <title> + <link xmlns:xlink="http://www.w3.org/1999/xlink" + xlink:href="http://www.dogma.net/markn/articles/pq_stl/priority.htm">Priority Queues and the STL + </link> + </title> + <date> + January 1996 + </date> + + <author> + <personname> + <firstname> + Mark + </firstname> + <surname> + Nelson + </surname> + </personname> + </author> + + <publisher> + <publishername> + Dr. Dobbs Journal + </publishername> + </publisher> + </biblioentry> + + + <!-- 37 --> + <biblioentry xml:id="biblio.okasaki98mereable"> + <title> + Fast mergeable integer maps + </title> + <date> + September 1998 + </date> + <authorgroup> + <author> + <personname> + <firstname> + C. + </firstname> + <surname> + Okasaki + </surname> + </personname> + </author> + <author> + <personname> + <firstname> + A. + </firstname> + <surname> + Gill + </surname> + </personname> + </author> + </authorgroup> + <publisher> + <publishername> + In Workshop on ML + </publishername> + </publisher> + </biblioentry> + + <!-- 38 --> + <biblioentry xml:id="biblio.sgi_stl"> + <title> + <link xmlns:xlink="http://www.w3.org/1999/xlink" + xlink:href="http://www.sgi.com/tech/stl"> + Standard Template Library Programmer's Guide + </link> + </title> + <author> + <personname> + <firstname> + Matt + </firstname> + <surname> + Austern + </surname> + </personname> + </author> + + <publisher> + <publishername> + SGI + </publishername> + </publisher> + </biblioentry> + + <!-- 39 --> + <biblioentry xml:id="biblio.select_man"> + <title> + <link xmlns:xlink="http://www.w3.org/1999/xlink" + xlink:href="http://www.scit.wlv.ac.uk/cgi-bin/mansec?3C+select"> + select + </link> + </title> + </biblioentry> + + + <!-- 40 --> + <biblioentry xml:id="biblio.sleator84amortized"> + <title> + Amortized Efficiency of List Update Problems + </title> + <date> + 1984 + </date> + <authorgroup> + <author> + <personname> + <firstname> + D. D. + </firstname> + <surname> + Sleator + </surname> + </personname> + </author> + + <author> + <personname> + <firstname> + R. E. + </firstname> + <surname> + Tarjan + </surname> + </personname> + </author> + </authorgroup> + + <publisher> + <publishername> + ACM Symposium on Theory of Computing + </publishername> + </publisher> + </biblioentry> + + <!-- 41 --> + <biblioentry xml:id="biblio.sleator85self"> + <title> + Self-Adjusting Binary Search Trees + </title> + <date> + 1985 + </date> + + <authorgroup> + <author> + <personname> + <firstname> + D. D. + </firstname> + <surname> + Sleator + </surname> + </personname> + </author> + + <author> + <personname> + <firstname> + R. E. + </firstname> + <surname> + Tarjan + </surname> + </personname> + </author> + </authorgroup> + + <publisher> + <publishername> + ACM Symposium on Theory of Computing + </publishername> + </publisher> + </biblioentry> + + <!-- 42 --> + <biblioentry xml:id="biblio.stepanov94standard"> + <title> + The Standard Template Library + </title> + <date> + 1984 + </date> + <authorgroup> + <author> + <personname> + <firstname> + A. A. + </firstname> + <surname> + Stepanov + </surname> + </personname> + </author> + <author> + <personname> + <firstname> + M. + </firstname> + <surname> + Lee + </surname> + </personname> + </author> + </authorgroup> + </biblioentry> + + <!-- 43 --> + <biblioentry xml:id="biblio.stroustrup97cpp"> + <title> + The C++ Programming Langugage + </title> + <date> + 1997 + </date> + + <author> + <personname> + <firstname> + Bjarne + </firstname> + <surname> + Stroustrup + </surname> + </personname> + </author> + + <publisher> + <publishername> + Addison-Wesley Publishing Company + </publishername> + </publisher> + </biblioentry> + + <!-- 44 --> + <biblioentry xml:id="biblio.vandevoorde2002cpptemplates"> + <title> + C++ Templates: The Complete Guide + </title> + <date> + 2002 + </date> + <authorgroup> + <author> + <personname> + <firstname> + D. + </firstname> + <surname> + Vandevoorde + </surname> + </personname> + </author> + + <author> + <personname> + <firstname> + N. M. + </firstname> + <surname> + Josuttis + </surname> + </personname> + </author> + </authorgroup> + <publisher> + <publishername> + Addison-Wesley Publishing Company + </publishername> + </publisher> + </biblioentry> + + + <!-- 45 --> + <biblioentry xml:id="biblio.wickland96thirty"> + <title> + <link xmlns:xlink="http://www.w3.org/1999/xlink" + xlink:href="http://myweb.wvnet.edu/~gsa00121/books/amongdead30.zip"> + Thirty Years Among the Dead + </link> + </title> + <date> + 1996 + </date> + + <author> + <personname> + <firstname> + C. A. + </firstname> + <surname> + Wickland + </surname> + </personname> + </author> + + <publisher> + <publishername> + National Psychological Institute + </publishername> + </publisher> + </biblioentry> + + + </bibliography> + +</chapter> diff --git a/libstdc++-v3/doc/xml/manual/spine.xml b/libstdc++-v3/doc/xml/manual/spine.xml index 808ca0341cd..fd4b6fd910a 100644 --- a/libstdc++-v3/doc/xml/manual/spine.xml +++ b/libstdc++-v3/doc/xml/manual/spine.xml @@ -8,6 +8,7 @@ <copyright> <year>2009</year> <year>2010</year> + <year>2011</year> <holder> <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.fsf.org">FSF</link> </holder> diff --git a/libstdc++-v3/doc/xml/manual/test_policy_data_structures.xml b/libstdc++-v3/doc/xml/manual/test_policy_data_structures.xml new file mode 100644 index 00000000000..0c0fc0349e5 --- /dev/null +++ b/libstdc++-v3/doc/xml/manual/test_policy_data_structures.xml @@ -0,0 +1,9774 @@ +<section xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="pbds.test" xreflabel="Test"> + <info><title>Testing</title></info> + <?dbhtml filename="policy_based_data_structures_test.html"?> + + <!-- S01 regression --> + <section xml:id="pbds.test.regression"> + <info><title>Regression</title></info> + + <para>The library contains a single comprehensive regression test. + For a given container type in this library, the test creates + an object of the container type and an object of the + corresponding standard type (e.g., <classname>std::set</classname>). 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 this library's + object with the standard's object as well as performing other + consistency checks on this library's object (e.g., + order preservation, when applicable, or node invariants, when + applicable).</para> + + <para>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 + this library's containers and the containers' value-types are + configured to use this allocator.</para> + + <para>For granularity, the test is split into the + several sources, each checking only some containers.</para> + + <para>For more details, consult the files in + <filename>testsuite/ext/pb_ds/regression</filename>.</para> + </section> + + <!-- S02 performance --> + <section xml:id="pbds.test.performance"> + <info><title>Performance</title></info> + + <section xml:id="performance.hash"> + <info><title>Hash-Based</title></info> + <para></para> + + <!-- 01 <a href="hash_text_find_find_timing_test"> --> + <section xml:id="performance.hash.text_find"> + <info><title> + Text <function>find</function> + </title></info> + <para></para> + + <section xml:id="hash.text_find.info"> + <info><title> + Description + </title></info> + + <para> + This test inserts a number of values with keys from an + arbitrary text (<xref + linkend="biblio.wickland96thirty"/>) into a container, + then performs a series of finds using + <function>find</function> . It measures the average + time for <function>find</function> as a function of + the number of values inserted.</para> + <para> + It uses the test file: + <filename> + performance/ext/pb_ds/text_find_timing_test.cc + </filename> + </para> + + <para> + And uses the data file: + <filename> + filethirty_years_among_the_dead_preproc.txt + </filename> + </para> + + <para>The test checks the effect of different range-hashing + functions, trigger policies, and cache-hashing policies. + </para> + + </section> + + <section xml:id="hash.text_find.results"> + <info><title> + Results + </title></info> + + <para>The graphic below show the results for the native + and collision-chaining hash types the the function + applied being a text find timing test using + <function>find</function>. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PDF" scale="75" + fileref="../images/pbds_text_find_timing_test_hash_local.pdf"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_text_find_timing_test_hash_local.png"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + + <informaltable frame="all"> + + <tgroup cols="5" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <colspec colname="c4"/> + <colspec colname="c5"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + n_hash_map_ncah + </entry> + </row> + + <row> + <entry> + <classname>std::tr1::unordered_map</classname> + </entry> + <entry> + <classname>cache_hash_code</classname> + </entry> + <entry> + <constant>false</constant> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <!-- hash 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map + </entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname>cc_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mod_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_prime_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/1 + </entry> + </row> + + <!-- hash 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + cc_hash_mask_exp_nea_lc_1div8_1div2_sth_map + </entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname> + cc_hash_table + </classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + </row> + + <!-- hash 03 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map + </entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname>cc_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/1 + </entry> + </row> + + <!-- hash 04 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map + </entry> + </row> + <row> + <entry morerows="2" valign="top"> + <classname>cc_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + </section> + + <section xml:id="hash.text_find.observations"> + <info><title> + Observations + </title></info> + + <para>In this setting, the range-hashing scheme affects performance + more than other policies. As the results show, 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 (<xref + linkend="biblio.knuth98sorting"/>).</para> + + <para>Trigger policies, i.e. the load-checks constants, affect + performance to a lesser extent.</para> + + <para>Perhaps surprisingly, storing the hash value alongside each + entry affects performance only marginally, at least in this + library's implementation. (Unfortunately, it was not possible to run + the tests with <classname>std::tr1::unordered_map</classname> 's + <classname>cache_hash_code = true</classname> , as it appeared to + malfuntion.)</para> + + </section> + + </section> + + <!-- 02 <a href="hash_int_find_timing_test"> --> + <section xml:id="performance.hash.int_find"> + <info><title> + Integer <function>find</function> + </title></info> + <para></para> + + <section xml:id="hash.int_find.info"> + <info><title> + Description + </title></info> + + <para>This test inserts a number of values with uniform + integer keys into a container, then performs a series of finds + using <function>find</function>. It measures the average time + for <function>find</function> as a function of the number of values + inserted.</para> + + <para> + It uses the test file: + <filename> + performance/ext/pb_ds/random_int_find_timing.cc + </filename> + </para> + + <para>The test checks the effect of different underlying + hash-tables, + range-hashing functions, and trigger policies.</para> + + </section> + + <section xml:id="hash.int_find.results"> + <info><title> + Results + </title></info> + + <para> + There are two sets of results for this type, one for + collision-chaining hashes, and one for general-probe hashes. + </para> + + <para>The first graphic below shows the results for the native and + collision-chaining hash types. The function applied being a random + integer timing test using <function>find</function>. + </para> + + <!-- results graphic 01 --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PDF" scale="75" + fileref="../images/pbds_cc_hash_random_int_find_timing_test_local.pdf"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_find_timing_test_local.png"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + + <informaltable frame="all"> + + <tgroup cols="5" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <colspec colname="c4"/> + <colspec colname="c5"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + n_hash_map_ncah + </entry> + </row> + + <row> + <entry> + <classname>std::tr1::unordered_map</classname> + </entry> + <entry> + <classname>cache_hash_code</classname> + </entry> + <entry> + <constant>false</constant> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <!-- hash 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map + </entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname>cc_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mod_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_prime_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/1 + </entry> + </row> + + <!-- hash 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + cc_hash_mod_prime_nea_lc_1div8_1div2_nsth_map + </entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname> + cc_hash_table + </classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mod_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_prime_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + </row> + + <!-- hash 03 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map + </entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname>cc_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/1 + </entry> + </row> + + <!-- hash 04 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map + </entry> + </row> + <row> + <entry morerows="2" valign="top"> + <classname>cc_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + <para> + </para> + + <para> + </para> + + <para>And the second graphic shows the results for the native and + general-probe hash types. The function applied being a random + integer timing test using <function>find</function>. + </para> + + <!-- results graphic 02 --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PDF" scale="75" + fileref="../images/pbds_gp_hash_random_int_find_timing_test_local.pdf"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_find_timing_test_local.png"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + + <informaltable frame="all"> + + <tgroup cols="5" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <colspec colname="c4"/> + <colspec colname="c5"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + n_hash_map_ncah + </entry> + </row> + + <row> + <entry> + <classname>std::tr1::unordered_map</classname> + </entry> + <entry> + <classname>cache_hash_code</classname> + </entry> + <entry> + <constant>false</constant> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <!-- hash 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map + </entry> + </row> + + <row> + <entry morerows="3" valign="top"> + <classname>gp_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mod_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry> + <classname>Probe_Fn</classname> + </entry> + <entry> + <classname>quadratic_probe_fn</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_prime_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + </row> + + <!-- hash 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_map + </entry> + </row> + + <row> + <entry morerows="3" valign="top"> + <classname> + gp_hash_table + </classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry> + <classname>Probe_Fn</classname> + </entry> + <entry> + <classname>linear_probe_fn</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + </section> + + <section xml:id="hash.int_find.observations"> + <info><title> + Observations + </title></info> + + <para>In this setting, the choice of underlying hash-table affects + performance most, then the range-hashing scheme and, only finally, + other policies.</para> + + <para>When comparing probing and chaining containers, it is + apparent that the probing containers are less efficient than the + collision-chaining containers ( + <classname>std::tr1::unordered_map</classname> uses + collision-chaining) in this case.</para> + + <para>Hash-Based Integer Subscript Insert Timing Test shows + a different case, where the situation is reversed; + </para> + + <para>Within each type of hash-table, the range-hashing scheme + affects performance more than other policies; Hash-Based Text + <function>find</function> Find Timing Test also shows this. In the + above graphics should be noted that + <classname>std::tr1::unordered_map</classname> are hard-wired + currently to mod-based schemes. + </para> + + </section> + + </section> + + <!-- 03 <a href="hash_int_subscript_find_test"> --> + <section xml:id="performance.hash.int_subscript_find"> + <info><title> + Integer Subscript <function>find</function> + </title></info> + <para></para> + + <section xml:id="hash.int_subscript_find.info"> + <info><title> + Description + </title></info> + + <para>This test inserts a number of values with uniform + integer keys into a container, then performs a series of finds + using <function>operator[]</function>. It measures the average time + for <function>operator[]</function> as a function of the number of + values inserted.</para> + + <para> + It uses the test file: + <filename> + performance/ext/pb_ds/random_int_subscript_find_timing.cc + </filename> + </para> + + <para>The test checks the effect of different underlying + hash-tables, range-hashing functions, and trigger policies.</para> + + + </section> + + <section xml:id="hash.int_subscript_find.results"> + <info><title> + Results + </title></info> + + <para> + There are two sets of results for this type, one for + collision-chaining hashes, and one for general-probe hashes. + </para> + + <para>The first graphic below shows the results for the native + and collision-chaining hash types, using as the function + applied an integer subscript timing test with + <function>find</function>. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PDF" scale="75" + fileref="../images/pbds_cc_hash_random_int_subscript_timing_test_find_local.pdf"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_subscript_timing_test_find_local.png"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + <informaltable frame="all"> + + <tgroup cols="5" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <colspec colname="c4"/> + <colspec colname="c5"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + n_hash_map_ncah + </entry> + </row> + + <row> + <entry> + <classname>std::tr1::unordered_map</classname> + </entry> + <entry> + <classname>cache_hash_code</classname> + </entry> + <entry> + <constant>false</constant> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <!-- hash 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map + </entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname>cc_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mod_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_prime_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/1 + </entry> + </row> + + <!-- hash 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + cc_hash_mod_prime_nea_lc_1div8_1div2_nsth_map + </entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname>cc_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mod_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_prime_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + </row> + + <!-- hash 03 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map + </entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname>cc_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/1 + </entry> + </row> + + <!-- hash 04 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map + </entry> + </row> + <row> + <entry morerows="2" valign="top"> + <classname>cc_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + + <para> + </para> + + <para> + </para> + + <para>And the second graphic shows the results for the native and + general-probe hash types. The function applied being a random + integer timing test using <function>find</function>. + </para> + + <!-- results graphic 02 --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PDF" scale="75" + fileref="../images/pbds_gp_hash_random_int_subscript_timing_test_find_local.pdf"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_subscript_timing_test_find_local.png"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + + <informaltable frame="all"> + + <tgroup cols="5" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <colspec colname="c4"/> + <colspec colname="c5"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + n_hash_map_ncah + </entry> + </row> + + <row> + <entry> + <classname>std::tr1::unordered_map</classname> + </entry> + <entry> + <classname>cache_hash_code</classname> + </entry> + <entry> + <constant>false</constant> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <!-- hash 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map + </entry> + </row> + + <row> + <entry morerows="3" valign="top"> + <classname>gp_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mod_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry> + <classname>Probe_Fn</classname> + </entry> + <entry> + <classname>quadratic_probe_fn</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_prime_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + </row> + + <!-- hash 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_map + </entry> + </row> + + <row> + <entry morerows="3" valign="top"> + <classname> + gp_hash_table + </classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry> + <classname>Probe_Fn</classname> + </entry> + <entry> + <classname>linear_probe_fn</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + + </section> + + <section xml:id="hash.int_subscript_find.observations"> + <info><title> + Observations + </title></info> + <para>This test shows similar results to Hash-Based + Integer <classname>find</classname> Find Timing test.</para> + + </section> + + </section> + + <!-- 04 <a href="hash_random_int_subscript_insert_timing_test"> --> + <section xml:id="performance.hash.int_subscript_insert"> + <info><title> + Integer Subscript <function>insert</function> + </title></info> + <para></para> + + <section xml:id="hash.int_subscript_insert.info"> + <info><title> + Description + </title></info> + + <para>This test inserts a number of values with uniform i.i.d. + integer keys into a container, using + <function>operator[]</function>. It measures the average time for + <function>operator[]</function> as a function of the number of + values inserted.</para> + + <para> + It uses the test file: + <filename> + performance/ext/pb_ds/random_int_subscript_insert_timing.cc + </filename> + </para> + + <para>The test checks the effect of different underlying + hash-tables.</para> + + + </section> + + <section xml:id="hash.int_subscript_insert.results"> + <info><title> + Results + </title></info> + + <para> + There are two sets of results for this type, one for + collision-chaining hashes, and one for general-probe hashes. + </para> + + <para>The first graphic below shows the results for the native + and collision-chaining hash types, using as the function + applied an integer subscript timing test with + <function>insert</function>. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PDF" scale="75" + fileref="../images/pbds_cc_hash_random_int_subscript_timing_test_insert_local.pdf"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_cc_hash_random_int_subscript_timing_test_insert_local.png"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + <informaltable frame="all"> + + <tgroup cols="5" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <colspec colname="c4"/> + <colspec colname="c5"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + n_hash_map_ncah + </entry> + </row> + + <row> + <entry> + <classname>std::tr1::unordered_map</classname> + </entry> + <entry> + <classname>cache_hash_code</classname> + </entry> + <entry> + <constant>false</constant> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <!-- hash 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map + </entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname>cc_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mod_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_prime_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/1 + </entry> + </row> + + <!-- hash 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + cc_hash_mod_prime_nea_lc_1div8_1div2_nsth_map + </entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname>cc_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mod_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_prime_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + </row> + + <!-- hash 03 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map + </entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname>cc_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/1 + </entry> + </row> + + <!-- hash 04 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map + </entry> + </row> + <row> + <entry morerows="2" valign="top"> + <classname>cc_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + + <para> + </para> + + <para> + </para> + + <para>And the second graphic shows the results for the native and + general-probe hash types. The function applied being a random + integer timing test using <function>find</function>. + </para> + + <!-- results graphic 02 --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PDF" scale="75" + fileref="../images/pbds_gp_hash_random_int_subscript_timing_test_insert_local.pdf"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_gp_hash_random_int_subscript_timing_test_insert_local.png"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + + <informaltable frame="all"> + + <tgroup cols="5" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <colspec colname="c4"/> + <colspec colname="c5"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + n_hash_map_ncah + </entry> + </row> + + <row> + <entry> + <classname>std::tr1::unordered_map</classname> + </entry> + <entry> + <classname>cache_hash_code</classname> + </entry> + <entry> + <constant>false</constant> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <!-- hash 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map + </entry> + </row> + + <row> + <entry morerows="3" valign="top"> + <classname>gp_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mod_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry> + <classname>Probe_Fn</classname> + </entry> + <entry> + <classname>quadratic_probe_fn</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_prime_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + </row> + + <!-- hash 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_map + </entry> + </row> + + <row> + <entry morerows="3" valign="top"> + <classname> + gp_hash_table + </classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry> + <classname>Probe_Fn</classname> + </entry> + <entry> + <classname>linear_probe_fn</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + + </section> + + <section xml:id="hash.int_subscript_insert.observations"> + <info><title> + Observations + </title></info> + + <para>In this setting, as in Hash-Based Text + <function>find</function> Find Timing test and Hash-Based + Integer <function>find</function> Find Timing test , the choice + of underlying hash-table underlying hash-table affects performance + most, then the range-hashing scheme, and + finally any other policies.</para> + <para>There are some differences, however:</para> + <orderedlist> + <listitem><para>In this setting, probing tables function sometimes more + efficiently than collision-chaining tables. + This is explained shortly.</para></listitem> + <listitem><para>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.</para></listitem> + </orderedlist> + + <para>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.</para> + + <para> + 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 + <function>find</function> Find Timing Test and Hash-Based + Integer <function>find</function> Find Timing Test. + Unsurprisingly, however, containers with lower α<subscript>max</subscript> perform worse in this case, + since more re-hashes are performed.</para> + + </section> + + </section> + + + <!-- 05 <a href="hash_zlob_random_int_find_find_timing_test"> --> + + <!-- 05 <a href="hash_zlob_random_int_find_find_timing_test"> --> + <section xml:id="performance.hash.zlob_int_find"> + <info><title> + Integer <function>find</function> with Skewed-Distribution + </title></info> + <para></para> + + <section xml:id="hash.zlob_int_find.info"> + <info><title> + Description + </title></info> + + <para>This test inserts a number of values with a markedly + non-uniform integer keys into a container, then performs + a series of finds using <function>find</function>. It measures the average + time for <function>find</function> as a function of the number of values in + the containers. The keys are generated as follows. First, a + uniform integer is created. Then it is then shifted left 8 bits.</para> + + <para> + It uses the test file: + <filename> + performance/ext/pb_ds/hash_zlob_random_int_find_timing.cc + </filename> + </para> + + <para>The test checks the effect of different range-hashing + functions and trigger policies.</para> + + + </section> + + <section xml:id="hash.zlob_int_find.results"> + <info><title> + Results + </title></info> + + <para>The graphic below show the results for the native, collision-chaining, and general-probing hash types. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PDF" scale="75" + fileref="../images/pbds_hash_zlob_random_int_find_timing_test_local.pdf"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_hash_zlob_random_int_find_timing_test_local.png"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + + <informaltable frame="all"> + + <tgroup cols="5" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <colspec colname="c4"/> + <colspec colname="c5"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + n_hash_map_ncah + </entry> + </row> + + <row> + <entry> + <classname>std::tr1::unordered_map</classname> + </entry> + <entry> + <classname>cache_hash_code</classname> + </entry> + <entry> + <constant>false</constant> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <!-- hash 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map + </entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname>cc_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mod_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_prime_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/1 + </entry> + </row> + + <!-- hash 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + cc_hash_mask_exp_nea_lc_1div8_1div1_nsth_map + </entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname> + cc_hash_table + </classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/1 + </entry> + </row> + + <!-- hash 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + gp_hash_mod_quadp_prime_nea_lc_1div8_1div2_nsth_map + </entry> + </row> + + <row> + <entry morerows="3" valign="top"> + <classname>gp_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mod_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry> + <classname>Probe_Fn</classname> + </entry> + <entry> + <classname>quadratic_probe_fn</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_prime_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + </row> + + + </tbody> + </tgroup> + </informaltable> + + </section> + + <section xml:id="hash.zlob_int_find.observations"> + <info><title> + Observations + </title></info> + + <para>In this setting, the distribution of keys is so skewed that + the underlying hash-table type affects performance marginally. + (This is in contrast with Hash-Based Text + <function>find</function> Find Timing Test, Hash-Based + Integer <function>find</function> Find Timing Test, Hash-Based + Integer Subscript Find Timing Test and Hash-Based + Integer Subscript Insert Timing Test.)</para> + + <para>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 the graphic above, it should be noted that + <classname>std::tr1::unordered_map</classname> is hard-wired currently to mod-based and mask-based schemes, + respectively.</para> + + <para>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. A + more natural case in which mod-based range hashing is better was not encountered. + Thus the inescapable conclusion: real-life key distributions are handled better + with an appropriate hash function and a mask-based + range-hashing function. (<filename>pb_ds/example/hash_shift_mask.cc</filename> + shows an example of handling this a-priori known skewed + distribution with a mask-based range-hashing function). If hash + performance is bad, a χ<superscript>2</superscript> test can be used + to check how to transform it into a more uniform + distribution.</para> + <para>For this reason, this library's default range-hashing + function is mask-based.</para> + + </section> + + </section> + + + <!-- 06 <a href="hash_random_int_erase_mem_usage_test"> --> + + <!-- 06 <a href="hash_random_int_erase_mem_usage_test"> --> + <section xml:id="performance.hash.erase_mem"> + <info><title> + Erase Memory Use + </title></info> + <para></para> + + <section xml:id="hash.erase_mem.info"> + <info><title> + Description + </title></info> + + <para>This test inserts a number of uniform integer keys + into a container, then erases all keys except one. It measures + the final size of the container.</para> + + <para> + It uses the test file: + <filename> + performance/ext/pb_ds/hash_random_int_erase_mem_usage.cc + </filename> + </para> + + + <para>The test checks how containers adjust internally as their + logical size decreases.</para> + + </section> + + <section xml:id="hash.erase_mem.results"> + <info><title> + Results + </title></info> + + <para>The graphic below show the results for the native, collision-chaining, and general-probing hash types. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PDF" scale="75" + fileref="../images/pbds_hash_random_int_erase_mem_usage_test_local.pdf"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_hash_random_int_erase_mem_usage_test_local.png"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + + <informaltable frame="all"> + + <tgroup cols="5" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <colspec colname="c4"/> + <colspec colname="c5"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + n_hash_map_ncah + </entry> + </row> + + <row> + <entry> + <classname>std::tr1::unordered_map</classname> + </entry> + <entry> + <classname>cache_hash_code</classname> + </entry> + <entry> + <constant>false</constant> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <!-- hash 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + cc_hash_mod_prime_nea_lc_1div8_1div1_nsth_map + </entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname>cc_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mod_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_prime_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/1 + </entry> + </row> + + <!-- hash 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_map + </entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname> + cc_hash_table + </classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + </row> + + <!-- hash 03 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c5"> + gp_hash_mask_linp_exp_nea_lc_1div8_1div2_nsth_set + </entry> + </row> + + <row> + <entry morerows="3" valign="top"> + <classname>gp_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry> + <classname>Probe_Fn</classname> + </entry> + <entry> + <classname>linear_probe_fn</classname> + </entry> + <entry namest="c4" nameend="c5"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + </row> + + + </tbody> + </tgroup> + </informaltable> + + </section> + + <section xml:id="hash.erase_mem.observations"> + <info><title> + Observations + </title></info> + <para>The standard's hash-based containers act very differently than trees in + this respect. When erasing numerous keys from an standard + associative-container, the resulting memory user varies greatly + depending on whether the container is tree-based or hash-based. + This is a fundamental consequence of the standard's interface for + associative containers, and it is not due to a specific + implementation.</para> + </section> + + </section> + </section> + + + <section xml:id="performance.branch"> + <info><title>Branch-Based</title></info> + <para></para> + + <!-- 01 <a href="tree_text_insert_timing_test"> --> + <section xml:id="performance.branch.text_insert"> + <info><title> + Text <function>insert</function> + </title></info> + <para></para> + + <section xml:id="branch.text_insert.info"> + <info><title> + Description + </title></info> + + + <para>This test inserts a number of values with keys from an arbitrary + text ([ wickland96thirty ]) into a container + using <function>insert</function> . It measures the average time + for <function>insert</function> as a function of the number of + values inserted.</para> + + <para>The test checks the effect of different underlying + data structures.</para> + + <para> + It uses the test file: + <filename> + performance/ext/pb_ds/tree_text_insert_timing.cc + </filename> + </para> + + + </section> + + <section xml:id="branch.text_insert.results"> + <info><title> + Results + </title></info> + + <para>The three graphics below show the results for the native + tree and this library's node-based trees, the native tree and + this library's vector-based trees, and the native tree + and this library's PATRICIA-trie, respectively. + </para> + + <para>The graphic immediately below shows the results for the + native tree type and several node-based tree types. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PDF" scale="75" + fileref="../images/pbds_tree_text_insert_timing_test_node_tree_local.pdf"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_node_tree_local.png"/> + </imageobject> + </mediaobject> + + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + </informalfigure> + + <informaltable frame="all"> + <tgroup cols="3" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + n_map + </entry> + </row> + + <row> + <entry> + <classname>std::map</classname> + </entry> + <entry namest="c2" nameend="c3"></entry> + </row> + + <!-- branch 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + splay_tree_map + </entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>tree</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>splay_tree_tag</classname> + </entry> + </row> + + <row> + <entry> + <classname>Node_update</classname> + </entry> + <entry> + <classname>null_node_update</classname> + </entry> + </row> + + + <!-- branch 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + rb_tree_map + </entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>tree</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>rb_tree_tag</classname> + </entry> + </row> + + <row> + <entry> + <classname>Node_update</classname> + </entry> + <entry> + <classname>null_node_update</classname> + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + + + <para>The graphic below shows the results for the + native tree type and a vector-based tree type. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PDF" scale="75" + fileref="../images/pbds_tree_text_insert_timing_test_vector_tree_local.pdf"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_vector_tree_local.png"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + + <informaltable frame="all"> + + <tgroup cols="3" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + n_map + </entry> + </row> + + <row> + <entry> + <classname>std::map</classname> + </entry> + <entry namest="c2" nameend="c3"></entry> + </row> + + <!-- branch 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + ov_tree_map + </entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>tree</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>ov_tree_tag</classname> + </entry> + </row> + + <row> + <entry> + <classname>Node_update</classname> + </entry> + <entry> + <classname>null_node_update</classname> + </entry> + </row> + + + </tbody> + </tgroup> + </informaltable> + + + + + <para>The graphic below shows the results for the + native tree type and a PATRICIA trie type. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PDF" scale="75" + fileref="../images/pbds_tree_text_insert_timing_test_pat_trie_local.pdf"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_tree_text_insert_timing_test_pat_trie_local.png"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + + <informaltable frame="all"> + + <tgroup cols="3" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + n_map + </entry> + </row> + + <row> + <entry> + <classname>std::map</classname> + </entry> + <entry namest="c2" nameend="c3"></entry> + </row> + + <!-- branch 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + pat_trie_map + </entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>tree</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>pat_trie_tag</classname> + </entry> + </row> + + <row> + <entry> + <classname>Node_update</classname> + </entry> + <entry> + <classname>null_node_update</classname> + </entry> + </row> + + + </tbody> + </tgroup> + </informaltable> + + </section> + + <section xml:id="branch.text_insert.observations"> + <info><title> + Observations + </title></info> + + <para>Observing the first graphic implies that for this setting, a splay tree + (<classname>tree</classname> with <classname>Tag + </classname> = <classname>splay_tree_tag</classname>) does not do + well. See also the Branch-Based + Text <function>find</function> Find Timing Test. The two + red-black trees perform better.</para> + + <para>Observing the second graphic, an ordered-vector tree + (<classname>tree</classname> with <classname>Tag + </classname> = <classname>ov_tree_tag</classname>) performs + abysmally. Inserting into this type of tree has linear complexity + [ austern00noset].</para> + + <para>Observing the third and last graphic, A PATRICIA trie + (<classname>trie</classname> with <classname>Tag + </classname> = <classname>pat_trie_tag</classname>) has abysmal + performance, as well. This is not that surprising, since a + large-fan-out PATRICIA trie works like a hash table with + collisions resolved by a sub-trie. Each time a collision is + encountered, a new "hash-table" is built A large fan-out PATRICIA + trie, however, doe does well in look-ups (see Branch-Based + Text <function>find</function> Find Timing Test). It may be + beneficial in semi-static settings.</para> + </section> + + </section> + + + <!-- 02 <a href="tree_text_find_find_timing_test"> --> + <section xml:id="performance.branch.text_find"> + <info><title> + Text <function>find</function> + </title></info> + <para></para> + + <section xml:id="branch.text_find.info"> + <info><title> + Description + </title></info> + + + <para>This test inserts a number of values with keys from an + arbitrary text ([wickland96thirty]) into + a container, then performs a series of finds using + <function>find</function>. It measures the average time + for <function>find</function> as a function of the number of + values inserted.</para> + + <para> + It uses the test file: + <filename> + performance/ext/pb_ds/text_find_timing.cc + </filename> + </para> + + + <para>The test checks the effect of different underlying + data structures.</para> + + </section> + + <section xml:id="branch.text_find.results"> + <info><title> + Results + </title></info> + + <para>The graphic immediately below shows the results for the + native tree type and several other tree types. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PDF" scale="75" + fileref="../images/pbds_text_find_timing_test_tree_like_local.pdf"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_text_find_timing_test_tree_like_local.png"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + + <informaltable frame="all"> + + <tgroup cols="3" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + n_map + </entry> + </row> + + <row> + <entry> + <classname>std::map</classname> + </entry> + <entry namest="c2" nameend="c3"></entry> + </row> + + <!-- branch 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + splay_tree_map + </entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>tree</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>splay_tree_tag</classname> + </entry> + </row> + + <row> + <entry> + <classname>Node_Update</classname> + </entry> + <entry> + <classname>null_node_update</classname> + </entry> + </row> + + + <!-- branch 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + rb_tree_map + </entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>tree</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>rb_tree_tag</classname> + </entry> + </row> + + <row> + <entry> + <classname>Node_Update</classname> + </entry> + <entry> + <classname>null_node_update</classname> + </entry> + </row> + + + <!-- branch 03 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + ov_tree_map + </entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>tree</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>ov_tree_tag</classname> + </entry> + </row> + + <row> + <entry> + <classname>Node_Update</classname> + </entry> + <entry> + <classname>null_node_update</classname> + </entry> + </row> + + + <!-- branch 05 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + pat_trie_map + </entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>tree</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>pat_trie_tag</classname> + </entry> + </row> + + <row> + <entry> + <classname>Node_Update</classname> + </entry> + <entry> + <classname>null_node_update</classname> + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + </section> + + <section xml:id="branch.text_find.observations"> + <info><title> + Observations + </title></info> + + <para>For this setting, a splay tree (<classname>tree</classname> + with <classname>Tag + </classname> = <classname>splay_tree_tag</classname>) does not do + well. This is possibly due to two reasons:</para> + + <orderedlist> + <listitem><para>A splay tree is not guaranteed to be balanced [motwani95random]. If a + splay tree contains n nodes, its average root-leaf + path can be m >> log(n).</para></listitem> + <listitem><para>Assume a specific root-leaf search path has length + m, and the search-target node has distance m' + from the root. A red-black tree will require m + 1 + comparisons to find the required node; a splay tree will + require 2 m' comparisons. A splay tree, consequently, + can perform many more comparisons than a red-black tree.</para></listitem> + </orderedlist> + <para>An ordered-vector tree (<classname>tree</classname> + with <classname>Tag</classname> = <classname>ov_tree_tag</classname>), a red-black + tree (<classname>tree</classname> + with <classname>Tag</classname> = <classname>rb_tree_tag</classname>), and the + native red-black tree all share approximately the same + performance.</para> + <para>An ordered-vector tree is slightly slower than red-black + trees, since it requires, in order to find a key, more math + operations than they do. Conversely, an ordered-vector tree + requires far lower space than the others. ([austern00noset], however, + seems to have an implementation that is also faster than a + red-black tree).</para> + <para>A PATRICIA trie (<classname>trie</classname> + with <classname>Tag</classname> = <classname>pat_trie_tag</classname>) has good + look-up performance, due to its large fan-out in this case. In + this setting, a PATRICIA trie has look-up performance comparable + to a hash table (see Hash-Based Text + <classname>find</classname> Timing Test), but it is order + preserving. This is not that surprising, since a large-fan-out + PATRICIA trie works like a hash table with collisions resolved + by a sub-trie. A large-fan-out PATRICIA trie does not do well on + modifications (see Tree-Based and Trie-Based + Text Insert Timing Test). Therefore, it is possibly beneficial in + semi-static settings.</para> + </section> + </section> + + + <!-- 03 <a href="tree_text_lor_find_find_timing_test"> --> + <section xml:id="performance.branch.text_lor_find"> + + <info><title> + Text <function>find</function> with Locality-of-Reference + </title></info> + <para></para> + + <section xml:id="branch.text_lor_find.info"> + <info><title> + Description + </title></info> + + + + <para>This test inserts a number of values with keys from an + arbitrary text ([ wickland96thirty ]) into + a container, then performs a series of finds using + <function>find</function>. It is different than Tree-Based and + Trie-Based Text <function>find</function> Find Timing Test in the + sequence of finds it performs: this test performs multiple + <function>find</function>s on the same key before moving on to the next + key. It measures the average time for <function>find</function> as a + function of the number of values inserted.</para> + + + <para> + It uses the test file: + <filename> + performance/ext/pb_ds/tree_text_lor_find_timing.cc + </filename> + </para> + + <para>The test checks the effect of different underlying + data structures in a locality-of-reference setting.</para> + + </section> + + <section xml:id="branch.text_lor_find.results"> + <info><title> + Results + </title></info> + + <para>The graphic immediately below shows the results for the + native tree type and several other tree types. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PDF" scale="75" + fileref="../images/pbds_tree_text_lor_find_timing_test_local.pdf"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_tree_text_lor_find_timing_test_local.png"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + + <informaltable frame="all"> + + <tgroup cols="3" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + n_map + </entry> + </row> + + <row> + <entry> + <classname>std::map</classname> + </entry> + <entry namest="c2" nameend="c3"></entry> + </row> + + <!-- branch 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + splay_tree_map + </entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>tree</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>splay_tree_tag</classname> + </entry> + </row> + + <row> + <entry> + <classname>Node_Update</classname> + </entry> + <entry> + <classname>null_node_update</classname> + </entry> + </row> + + + <!-- branch 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + rb_tree_map + </entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>tree</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>rb_tree_tag</classname> + </entry> + </row> + + <row> + <entry> + <classname>Node_Update</classname> + </entry> + <entry> + <classname>null_node_update</classname> + </entry> + </row> + + + <!-- branch 03 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + ov_tree_map + </entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>tree</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>ov_tree_tag</classname> + </entry> + </row> + + <row> + <entry> + <classname>Node_Update</classname> + </entry> + <entry> + <classname>null_node_update</classname> + </entry> + </row> + + + <!-- branch 05 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + pat_trie_map + </entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>tree</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>pat_trie_tag</classname> + </entry> + </row> + + <row> + <entry> + <classname>Node_Update</classname> + </entry> + <entry> + <classname>null_node_update</classname> + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + </section> + + <section xml:id="branch.text_lor_find.observations"> + <info><title> + Observations + </title></info> + + <para>For this setting, an ordered-vector tree + (<classname>tree</classname> with <classname>Tag</classname> + = <classname>ov_tree_tag</classname>), a red-black tree + (<classname>tree</classname> with <classname>Tag</classname> + = <classname>rb_tree_tag</classname>), and the native red-black + tree all share approximately the same performance.</para> + <para>A splay tree (<classname>tree</classname> + with <classname>Tag</classname> = <classname>splay_tree_tag</classname>) does + much better, since each (successful) find "bubbles" the + corresponding node to the root of the tree.</para> + + </section> + </section> + + <!-- 04 <a href="tree_split_join_timing_test"> --> + <section xml:id="performance.branch.split_join"> + + <info><title> + <function>split</function> and <function>join</function> + </title></info> + <para></para> + + <section xml:id="branch.split_join.info"> + <info><title> + Description + </title></info> + + + <para>This test a container, inserts into a number of values, splits + the container at the median, and joins the two containers. (If the + containers are one of this library's trees, + it splits and joins with the <function>split</function> and + <function>join</function> method; otherwise, it uses the <function>erase</function> and + <function>insert</function> methods.) It measures the time for splitting + and joining the containers as a function of the number of + values inserted.</para> + + <para> + It uses the test file: + <filename> + performance/ext/pb_ds/tree_split_join_timing.cc + </filename> + </para> + + + <para>The test checks the performance difference of <function>join</function> + as opposed to a sequence of <function>insert</function> operations; by + implication, this test checks the most efficient way to erase a + sub-sequence from a tree-like-based container, since this can + always be performed by a small sequence of splits and joins. + </para> + </section> + + <section xml:id="branch.split_join.results"> + <info><title> + Results + </title></info> + + <para>The graphic immediately below shows the results for the + native tree type and several other tree types. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PDF" scale="75" + fileref="../images/pbds_tree_split_join_timing_test_local.pdf"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_tree_split_join_timing_test_local.png"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + + <informaltable frame="all"> + + <tgroup cols="3" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + n_set + </entry> + </row> + + <row> + <entry> + <classname>std::set</classname> + </entry> + <entry namest="c2" nameend="c3"></entry> + </row> + + <!-- branch 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + splay_tree_set + </entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>tree</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>splay_tree_tag</classname> + </entry> + </row> + + <row> + <entry> + <classname>Node_Update</classname> + </entry> + <entry> + <classname>null_node_update</classname> + </entry> + </row> + + + <!-- branch 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + rb_tree_set + </entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>tree</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>rb_tree_tag</classname> + </entry> + </row> + + <row> + <entry> + <classname>Node_Update</classname> + </entry> + <entry> + <classname>null_node_update</classname> + </entry> + </row> + + + <!-- branch 03 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + ov_tree_set + </entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>tree</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>ov_tree_tag</classname> + </entry> + </row> + + <row> + <entry> + <classname>Node_Update</classname> + </entry> + <entry> + <classname>null_node_update</classname> + </entry> + </row> + + + <!-- branch 05 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + pat_trie_map + </entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>tree</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>pat_trie_tag</classname> + </entry> + </row> + + <row> + <entry> + <classname>Node_Update</classname> + </entry> + <entry> + <classname>null_node_update</classname> + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + </section> + + <section xml:id="branch.split_join.observations"> + <info><title> + Observations + </title></info> + + <para>In this test, the native red-black trees must be split and + joined externally, through a sequence of <function>erase</function> and + <function>insert</function> operations. This is clearly + super-linear, and it is not that surprising that the cost is + high.</para> + <para>This library's tree-based containers use in this test the + <function>split</function> and <function>join</function> methods, + which have lower complexity: the <function>join</function> method + of a splay tree (<classname>tree</classname> + with <classname>Tag </classname> + = <classname>splay_tree_tag</classname>) is quadratic in the + length of the longest root-leaf path, and linear in the total + number of elements; the <function>join</function> method of a + red-black tree (<classname>tree</classname> + with <classname>Tag </classname> + = <classname>rb_tree_tag</classname>) or an ordered-vector tree + (<classname>tree</classname> with <classname>Tag </classname> + = <classname>ov_tree_tag</classname>) is linear in the number of + elements.</para> + + <para>Asides from orders of growth, this library's trees access their + allocator very little in these operations, and some of them do not + access it at all. This leads to lower constants in their + complexity, and, for some containers, to exception-free splits and + joins (which can be determined + via <classname>container_traits</classname>).</para> + + <para>It is important to note that <function>split</function> and + <function>join</function> are not esoteric methods - they are the most + efficient means of erasing a contiguous range of values from a + tree based container.</para> + </section> + </section> + + <!-- 05 <a href="tree_order_statistics_timing_test"> --> + <section xml:id="performance.branch.order_statistics"> + + <info><title> + Order-Statistics + </title></info> + <para></para> + + <section xml:id="branch.order_statistics.info"> + <info><title> + Description + </title></info> + + <para>This test creates a container, inserts random integers into the + the container, and then checks the order-statistics of the + container's values. (If the container is one of this + library's trees, it does this with + the <function>order_of_key</function> method of + <classname>tree_order_statistics_node_update</classname> + ; otherwise, it uses the <function>find</function> method and + <function>std::distance</function>.) It measures the average + time for such queries as a function of the number of values + inserted.</para> + + <para> + It uses the test file: + <filename> + performance/ext/pb_ds/tree_order_statistics_timing.cc + </filename> + </para> + + <para>The test checks the performance difference of policies based + on node-invariant as opposed to a external functions.</para> + + </section> + + <section xml:id="branch.order_statistics.results"> + <info><title> + Results + </title></info> + + <para>The graphic immediately below shows the results for the + native tree type and several other tree types. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PDF" scale="75" + fileref="../images/pbds_tree_order_statistics_timing_test_local.pdf"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_tree_order_statistics_timing_test_local.png"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + + <informaltable frame="all"> + + <tgroup cols="3" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + n_set + </entry> + </row> + + <row> + <entry> + <classname>std::set</classname> + </entry> + <entry namest="c2" nameend="c3"></entry> + </row> + + <!-- branch 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + splay_tree_ost_set + </entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>tree</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>splay_tree_tag</classname> + </entry> + </row> + + <row> + <entry> + <classname>Node_Update</classname> + </entry> + <entry> + <classname>tree_order_statistics_node_update</classname> + </entry> + </row> + + + <!-- branch 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + rb_tree_ost_set + </entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>tree</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>rb_tree_tag</classname> + </entry> + </row> + + <row> + <entry> + <classname>Node_Update</classname> + </entry> + <entry> + <classname>tree_order_statistics_node_update</classname> + </entry> + </row> + + + </tbody> + </tgroup> + </informaltable> + + </section> + + <section xml:id="branch.order_statistics.observations"> + <info><title> + Observations + </title></info> + <para>In this test, the native red-black tree can support + order-statistics queries only externally, by performing a + <classname>find</classname> (alternatively, <classname>lower_bound</classname> or + <classname>upper_bound</classname> ) and then using <classname>std::distance</classname> . + This is clearly linear, and it is not that surprising that the + cost is high.</para> + <para>This library's tree-based containers use in this test the + <classname>order_of_key</classname> method of <classname>tree_order_statistics_node_update</classname>. + This method has only linear complexity in the length of the + root-node path. Unfortunately, the average path of a splay tree + (<classname>tree</classname> + with <classname>Tag =</classname> <classname>splay_tree_tag</classname> ) can + be higher than logarithmic; the longest path of a red-black + tree (<classname>tree</classname> + with <classname>Tag =</classname> <classname>rb_tree_tag</classname> ) is + logarithmic in the number of elements. Consequently, the splay + tree has worse performance than the red-black tree.</para> + </section> + </section> + + </section> <!-- branch --> + + <section xml:id="performance.multimap"> + <info><title>Multimap</title></info> + <para></para> + + + <!-- 01 <a href="multimap_text_find_timing_test_small"> --> + <section xml:id="performance.multimap.text_find_small"> + <info><title> + Text <function>find</function> with Small Secondary-to-Primary Key Ratios + </title></info> + <para></para> + + <section xml:id="multimap.text_find_small.info"> + <info><title> + Description + </title></info> + + <para>This test inserts a number of pairs into a container. The + first item of each pair is a string from an arbitrary text + [wickland96thirty], and + the second is a uniform i.i.d.integer. The container is a + "multimap" - it considers the first member of each pair as a + primary key, and the second member of each pair as a secondary + key (see Motivation::Associative + Containers::Alternative to Multiple Equivalent Keys). There + are 400 distinct primary keys, and the ratio of secondary keys + to primary keys ranges from 1 to 5.</para> + <para>The test measures the average find-time as a function of the + number of values inserted. For this library's containers, it + finds the secondary key from a container obtained from finding + a primary key. For the native multimaps, it searches a range + obtained using <classname>std::equal_range</classname> on a primary key.</para> + + <para> + It uses the test file: + <filename> + performance/ext/pb_ds/multimap_text_find_timing_small.cc + </filename> + </para> + + <para>The test checks the find-time scalability of different + "multimap" designs.</para> + + </section> + + <section xml:id="multimap.text_find_small.results"> + <info><title> + Results + </title></info> + + <para>The graphic below show the results for "multimaps" which + use a tree-based container for primary keys. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_small_s2p_tree_local.png"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PDF" scale="33" + fileref="../images/pbds_multimap_text_find_timing_test_small_s2p_tree_local.pdf"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + + <informaltable frame="all"> + + <tgroup cols="7" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <colspec colname="c4"/> + <colspec colname="c5"/> + <colspec colname="c6"/> + <colspec colname="c7"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + n_mmap + </entry> + </row> + + <row> + <entry> + <classname>std::multimap</classname> + </entry> + <entry namest="c2" nameend="c7"></entry> + </row> + + <!-- multimap 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + rb_tree_mmap_lu_mtf_set + </entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname>tree</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>rb_tree_tag</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + + <row> + <entry> + <classname>Node_Update</classname> + </entry> + <entry> + <classname>null_node_update</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + <row> + <entry> + <classname>Mapped</classname> + </entry> + <entry> + <classname>list_update</classname> + </entry> + <entry> + <classname>Update_Policy</classname> + </entry> + <entry> + <classname>lu_move_to_front_policy</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <!-- multimap 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set + </entry> + </row> + + <row> + <entry morerows="4" valign="top"> + <classname>tree</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>rb_tree_tag</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + + <row> + <entry> + <classname>Node_Update</classname> + </entry> + <entry> + <classname>null_node_update</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname>Mapped</classname> + </entry> + <entry morerows="2" valign="top"> + <classname>cc_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + + <para>The graphic below show the results for "multimaps" which + use a hash-based container for primary keys. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_small_s2p_hash_local.png"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PDF" scale="33" + fileref="../images/pbds_multimap_text_find_timing_test_small_s2p_hash_local.pdf"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + <informaltable frame="all"> + + <tgroup cols="7" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <colspec colname="c4"/> + <colspec colname="c5"/> + <colspec colname="c6"/> + <colspec colname="c7"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + n_hash_mmap + </entry> + </row> + + <row> + <entry> + <classname>std::tr1::unordered_multimap</classname> + </entry> + <entry namest="c2" nameend="c7"></entry> + </row> + + <!-- multimap 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + rb_tree_mmap_lu_mtf_set + </entry> + </row> + + <row> + <entry morerows="3" valign="top"> + <classname> + cc_hash_table + </classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry> + <classname>Mapped</classname> + </entry> + <entry> + <classname>list_update</classname> + </entry> + <entry> + <classname>Update_Policy</classname> + </entry> + <entry> + <classname>lu_move_to_front_policy</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <!-- multimap 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set + </entry> + </row> + + <row> + <entry morerows="5" valign="top"> + <classname> + cc_hash_table + </classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname>Mapped</classname> + </entry> + <entry morerows="2" valign="top"> + <classname>cc_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + </section> + + <section xml:id="multimap.text_find_small.observations"> + <info><title> + Observations + </title></info> + + <para>See Observations::Mapping-Semantics + Considerations.</para> + + </section> + + </section> + + <!-- 02 <a href="multimap_text_find_timing_test_large"> --> + <section xml:id="performance.multimap.text_find_large"> + <info><title> + Text <function>find</function> with Large Secondary-to-Primary Key Ratios + </title></info> + <para></para> + + <section xml:id="multimap.text_find_large.info"> + <info><title> + Description + </title></info> + + <para>This test inserts a number of pairs into a container. The + first item of each pair is a string from an arbitrary text + [wickland96thirty], and + the second is a uniform integer. The container is a + "multimap" - it considers the first member of each pair as a + primary key, and the second member of each pair as a secondary + key. There + are 400 distinct primary keys, and the ratio of secondary keys + to primary keys ranges from 1 to 5.</para> + <para>The test measures the average find-time as a function of the + number of values inserted. For this library's containers, it + finds the secondary key from a container obtained from finding + a primary key. For the native multimaps, it searches a range + obtained using <classname>std::equal_range</classname> on a primary key.</para> + + <para> + It uses the test file: + <filename> + performance/ext/pb_ds/multimap_text_find_timing_large.cc + </filename> + </para> + + <para>The test checks the find-time scalability of different + "multimap" designs.</para> + + </section> + + <section xml:id="multimap.text_find_large.results"> + <info><title> + Results + </title></info> + + <para>The graphic below show the results for "multimaps" which + use a tree-based container for primary keys. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_large_s2p_tree_local.png"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PDF" scale="33" + fileref="../images/pbds_multimap_text_find_timing_test_large_s2p_tree_local.pdf"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + + <informaltable frame="all"> + + <tgroup cols="7" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <colspec colname="c4"/> + <colspec colname="c5"/> + <colspec colname="c6"/> + <colspec colname="c7"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + n_mmap + </entry> + </row> + + <row> + <entry> + <classname>std::multimap</classname> + </entry> + <entry namest="c2" nameend="c7"></entry> + </row> + + <!-- multimap 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + rb_tree_mmap_lu_mtf_set + </entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname>tree</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>rb_tree_tag</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + + <row> + <entry> + <classname>Node_Update</classname> + </entry> + <entry> + <classname>null_node_update</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + <row> + <entry> + <classname>Mapped</classname> + </entry> + <entry> + <classname>list_update</classname> + </entry> + <entry> + <classname>Update_Policy</classname> + </entry> + <entry> + <classname>lu_move_to_front_policy</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <!-- multimap 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set + </entry> + </row> + + <row> + <entry morerows="4" valign="top"> + <classname>tree</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>rb_tree_tag</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + + <row> + <entry> + <classname>Node_Update</classname> + </entry> + <entry> + <classname>null_node_update</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname>Mapped</classname> + </entry> + <entry morerows="2" valign="top"> + <classname>cc_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + + <para>The graphic below show the results for "multimaps" which + use a hash-based container for primary keys. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_large_s2p_hash_local.png"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PDF" scale="33" + fileref="../images/pbds_multimap_text_find_timing_test_large_s2p_hash_local.pdf"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + <informaltable frame="all"> + + <tgroup cols="7" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <colspec colname="c4"/> + <colspec colname="c5"/> + <colspec colname="c6"/> + <colspec colname="c7"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + n_hash_mmap + </entry> + </row> + + <row> + <entry> + <classname>std::tr1::unordered_multimap</classname> + </entry> + <entry namest="c2" nameend="c7"></entry> + </row> + + <!-- multimap 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + rb_tree_mmap_lu_mtf_set + </entry> + </row> + + <row> + <entry morerows="3" valign="top"> + <classname> + cc_hash_table + </classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry> + <classname>Mapped</classname> + </entry> + <entry> + <classname>list_update</classname> + </entry> + <entry> + <classname>Update_Policy</classname> + </entry> + <entry> + <classname>lu_move_to_front_policy</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <!-- multimap 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set + </entry> + </row> + + <row> + <entry morerows="5" valign="top"> + <classname> + cc_hash_table + </classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname>Mapped</classname> + </entry> + <entry morerows="2" valign="top"> + <classname>cc_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + </section> + + <section xml:id="multimap.text_find_large.observations"> + <info><title> + Observations + </title></info> + + <para>See Observations::Mapping-Semantics + Considerations.</para> + + </section> + + </section> + + + <!-- 03 <a href="multimap_text_insert_timing_test_small"> --> + <section xml:id="performance.multimap.text_insert_small"> + <info><title> + Text <function>insert</function> with Small + Secondary-to-Primary Key Ratios + </title></info> + <para></para> + + <section xml:id="multimap.text_insert_small.info"> + <info><title> + Description + </title></info> + + <para>This test inserts a number of pairs into a container. The + first item of each pair is a string from an arbitrary text + [wickland96thirty], and + the second is a uniform integer. The container is a + "multimap" - it considers the first member of each pair as a + primary key, and the second member of each pair as a secondary + key. There + are 400 distinct primary keys, and the ratio of secondary keys + to primary keys ranges from 1 to 5.</para> + <para>The test measures the average insert-time as a function of + the number of values inserted. For this library's containers, + it inserts a primary key into the primary associative + container, then a secondary key into the secondary associative + container. For the native multimaps, it obtains a range using + <classname>std::equal_range</classname>, and inserts a value only if it was + not contained already.</para> + + <para> + It uses the test file: + <filename> + performance/ext/pb_ds/multimap_text_insert_timing_small.cc + </filename> + </para> + + <para>The test checks the insert-time scalability of different + "multimap" designs.</para> + + </section> + + <section xml:id="multimap.text_insert_small.results"> + <info><title> + Results + </title></info> + + <para>The graphic below show the results for "multimaps" which + use a tree-based container for primary keys. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_small_s2p_tree_local.png"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PDF" scale="33" + fileref="../images/pbds_multimap_text_insert_timing_test_small_s2p_tree_local.pdf"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + + <informaltable frame="all"> + + <tgroup cols="7" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <colspec colname="c4"/> + <colspec colname="c5"/> + <colspec colname="c6"/> + <colspec colname="c7"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + n_mmap + </entry> + </row> + + <row> + <entry> + <classname>std::multimap</classname> + </entry> + <entry namest="c2" nameend="c7"></entry> + </row> + + <!-- multimap 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + rb_tree_mmap_lu_mtf_set + </entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname>tree</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>rb_tree_tag</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + + <row> + <entry> + <classname>Node_Update</classname> + </entry> + <entry> + <classname>null_node_update</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + <row> + <entry> + <classname>Mapped</classname> + </entry> + <entry> + <classname>list_update</classname> + </entry> + <entry> + <classname>Update_Policy</classname> + </entry> + <entry> + <classname>lu_move_to_front_policy</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <!-- multimap 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set + </entry> + </row> + + <row> + <entry morerows="4" valign="top"> + <classname>tree</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>rb_tree_tag</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + + <row> + <entry> + <classname>Node_Update</classname> + </entry> + <entry> + <classname>null_node_update</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname>Mapped</classname> + </entry> + <entry morerows="2" valign="top"> + <classname>cc_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + + <para>The graphic below show the results for "multimaps" which + use a hash-based container for primary keys. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_small_s2p_hash_local.png"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PDF" scale="33" + fileref="../images/pbds_multimap_text_find_timing_test_small_s2p_hash_local.pdf"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + <informaltable frame="all"> + + <tgroup cols="7" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <colspec colname="c4"/> + <colspec colname="c5"/> + <colspec colname="c6"/> + <colspec colname="c7"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + n_hash_mmap + </entry> + </row> + + <row> + <entry> + <classname>std::tr1::unordered_multimap</classname> + </entry> + <entry namest="c2" nameend="c7"></entry> + </row> + + <!-- multimap 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + rb_tree_mmap_lu_mtf_set + </entry> + </row> + + <row> + <entry morerows="3" valign="top"> + <classname> + cc_hash_table + </classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry> + <classname>Mapped</classname> + </entry> + <entry> + <classname>list_update</classname> + </entry> + <entry> + <classname>Update_Policy</classname> + </entry> + <entry> + <classname>lu_move_to_front_policy</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <!-- multimap 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set + </entry> + </row> + + <row> + <entry morerows="5" valign="top"> + <classname> + cc_hash_table + </classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname>Mapped</classname> + </entry> + <entry morerows="2" valign="top"> + <classname>cc_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + </section> + + <section xml:id="multimap.text_insert_small.observations"> + <info><title> + Observations + </title></info> + + <para>See Observations::Mapping-Semantics + Considerations.</para> + + </section> + + </section> + + + <!-- 04 <a href="multimap_text_insert_timing_test_large"> --> + <section xml:id="performance.multimap.text_insert_large"> + <info><title> + Text <function>insert</function> with Small + Secondary-to-Primary Key Ratios + </title></info> + <para></para> + + <section xml:id="multimap.text_insert_large.info"> + <info><title> + Description + </title></info> + + <para>This test inserts a number of pairs into a container. The + first item of each pair is a string from an arbitrary text + [wickland96thirty], and + the second is a uniform integer. The container is a + "multimap" - it considers the first member of each pair as a + primary key, and the second member of each pair as a secondary + key. There + are 400 distinct primary keys, and the ratio of secondary keys + to primary keys ranges from 1 to 5.</para> + <para>The test measures the average insert-time as a function of + the number of values inserted. For this library's containers, + it inserts a primary key into the primary associative + container, then a secondary key into the secondary associative + container. For the native multimaps, it obtains a range using + <classname>std::equal_range</classname>, and inserts a value only if it was + not contained already.</para> + + <para> + It uses the test file: + <filename> + performance/ext/pb_ds/multimap_text_insert_timing_large.cc + </filename> + </para> + + <para>The test checks the insert-time scalability of different + "multimap" designs.</para> + + </section> + + <section xml:id="multimap.text_insert_large.results"> + <info><title> + Results + </title></info> + + <para>The graphic below show the results for "multimaps" which + use a tree-based container for primary keys. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_timing_test_large_s2p_tree_local.png"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PDF" scale="33" + fileref="../images/pbds_multimap_text_insert_timing_test_large_s2p_tree_local.pdf"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + + <informaltable frame="all"> + + <tgroup cols="7" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <colspec colname="c4"/> + <colspec colname="c5"/> + <colspec colname="c6"/> + <colspec colname="c7"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + n_mmap + </entry> + </row> + + <row> + <entry> + <classname>std::multimap</classname> + </entry> + <entry namest="c2" nameend="c7"></entry> + </row> + + <!-- multimap 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + rb_tree_mmap_lu_mtf_set + </entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname>tree</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>rb_tree_tag</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + + <row> + <entry> + <classname>Node_Update</classname> + </entry> + <entry> + <classname>null_node_update</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + <row> + <entry> + <classname>Mapped</classname> + </entry> + <entry> + <classname>list_update</classname> + </entry> + <entry> + <classname>Update_Policy</classname> + </entry> + <entry> + <classname>lu_move_to_front_policy</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <!-- multimap 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set + </entry> + </row> + + <row> + <entry morerows="4" valign="top"> + <classname>tree</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>rb_tree_tag</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + + <row> + <entry> + <classname>Node_Update</classname> + </entry> + <entry> + <classname>null_node_update</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname>Mapped</classname> + </entry> + <entry morerows="2" valign="top"> + <classname>cc_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + + <para>The graphic below show the results for "multimaps" which + use a hash-based container for primary keys. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_large_s2p_hash_local.png"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PDF" scale="33" + fileref="../images/pbds_multimap_text_find_timing_test_large_s2p_hash_local.pdf"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + <informaltable frame="all"> + + <tgroup cols="7" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <colspec colname="c4"/> + <colspec colname="c5"/> + <colspec colname="c6"/> + <colspec colname="c7"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + n_hash_mmap + </entry> + </row> + + <row> + <entry> + <classname>std::tr1::unordered_multimap</classname> + </entry> + <entry namest="c2" nameend="c7"></entry> + </row> + + <!-- multimap 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + rb_tree_mmap_lu_mtf_set + </entry> + </row> + + <row> + <entry morerows="3" valign="top"> + <classname> + cc_hash_table + </classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry> + <classname>Mapped</classname> + </entry> + <entry> + <classname>list_update</classname> + </entry> + <entry> + <classname>Update_Policy</classname> + </entry> + <entry> + <classname>lu_move_to_front_policy</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <!-- multimap 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set + </entry> + </row> + + <row> + <entry morerows="5" valign="top"> + <classname> + cc_hash_table + </classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname>Mapped</classname> + </entry> + <entry morerows="2" valign="top"> + <classname>cc_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + </section> + + <section xml:id="multimap.text_insert_large.observations"> + <info><title> + Observations + </title></info> + + <para>See Observations::Mapping-Semantics + Considerations.</para> + + </section> + + </section> + + + <!-- 05 <a href="multimap_text_insert_mem_usage_test_small"> --> + <section xml:id="performance.multimap.text_insert_mem_small"> + <info><title> + Text <function>insert</function> with Small + Secondary-to-Primary Key Ratios Memory Use + </title></info> + <para></para> + + <section xml:id="multimap.text_insert_mem_small.info"> + <info><title> + Description + </title></info> + <para>This test inserts a number of pairs into a container. The + first item of each pair is a string from an arbitrary text + [wickland96thirty], and + the second is a uniform integer. The container is a + "multimap" - it considers the first member of each pair as a + primary key, and the second member of each pair as a secondary + key. There + are 100 distinct primary keys, and the ratio of secondary keys + to primary keys ranges to about 20.</para> + <para>The test measures the memory use as a function of the number + of values inserted.</para> + + <para> + It uses the test file: + <filename> + performance/ext/pb_ds/multimap_text_insert_mem_usage_small.cc + </filename> + </para> + + <para>The test checks the memory scalability of different + "multimap" designs.</para> + + </section> + + <section xml:id="multimap.text_insert_mem_small.results"> + <info><title> + Results + </title></info> + + <para>The graphic below show the results for "multimaps" which + use a tree-based container for primary keys. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_small_s2p_tree_local.png"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PDF" scale="33" + fileref="../images/pbds_multimap_text_insert_mem_usage_test_small_s2p_tree_local.pdf"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + + <informaltable frame="all"> + + <tgroup cols="7" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <colspec colname="c4"/> + <colspec colname="c5"/> + <colspec colname="c6"/> + <colspec colname="c7"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + n_mmap + </entry> + </row> + + <row> + <entry> + <classname>std::multimap</classname> + </entry> + <entry namest="c2" nameend="c7"></entry> + </row> + + <!-- multimap 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + rb_tree_mmap_lu_mtf_set + </entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname>tree</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>rb_tree_tag</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + + <row> + <entry> + <classname>Node_Update</classname> + </entry> + <entry> + <classname>null_node_update</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + <row> + <entry> + <classname>Mapped</classname> + </entry> + <entry> + <classname>list_update</classname> + </entry> + <entry> + <classname>Update_Policy</classname> + </entry> + <entry> + <classname>lu_move_to_front_policy</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <!-- multimap 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set + </entry> + </row> + + <row> + <entry morerows="4" valign="top"> + <classname>tree</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>rb_tree_tag</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + + <row> + <entry> + <classname>Node_Update</classname> + </entry> + <entry> + <classname>null_node_update</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname>Mapped</classname> + </entry> + <entry morerows="2" valign="top"> + <classname>cc_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + + <para>The graphic below show the results for "multimaps" which + use a hash-based container for primary keys. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_large_s2p_hash_local.png"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PDF" scale="33" + fileref="../images/pbds_multimap_text_find_timing_test_large_s2p_hash_local.pdf"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + <informaltable frame="all"> + + <tgroup cols="7" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <colspec colname="c4"/> + <colspec colname="c5"/> + <colspec colname="c6"/> + <colspec colname="c7"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + n_hash_mmap + </entry> + </row> + + <row> + <entry> + <classname>std::tr1::unordered_multimap</classname> + </entry> + <entry namest="c2" nameend="c7"></entry> + </row> + + <!-- multimap 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + rb_tree_mmap_lu_mtf_set + </entry> + </row> + + <row> + <entry morerows="3" valign="top"> + <classname> + cc_hash_table + </classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry> + <classname>Mapped</classname> + </entry> + <entry> + <classname>list_update</classname> + </entry> + <entry> + <classname>Update_Policy</classname> + </entry> + <entry> + <classname>lu_move_to_front_policy</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <!-- multimap 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set + </entry> + </row> + + <row> + <entry morerows="5" valign="top"> + <classname> + cc_hash_table + </classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname>Mapped</classname> + </entry> + <entry morerows="2" valign="top"> + <classname>cc_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + </section> + + <section xml:id="multimap.text_insert_mem_small.observations"> + <info><title> + Observations + </title></info> + + <para>See Observations::Mapping-Semantics + Considerations.</para> + + </section> + + </section> + + <!-- 06 <a href="multimap_text_insert_mem_usage_test_large"> --> + <section xml:id="performance.multimap.text_insert_mem_large"> + <info><title> + Text <function>insert</function> with Small + Secondary-to-Primary Key Ratios Memory Use + </title></info> + <para></para> + + <section xml:id="multimap.text_insert_mem_large.info"> + <info><title> + Description + </title></info> + <para>This test inserts a number of pairs into a container. The + first item of each pair is a string from an arbitrary text + [wickland96thirty], and + the second is a uniform integer. The container is a + "multimap" - it considers the first member of each pair as a + primary key, and the second member of each pair as a secondary + key. There + are 100 distinct primary keys, and the ratio of secondary keys + to primary keys ranges to about 20.</para> + <para>The test measures the memory use as a function of the number + of values inserted.</para> + + <para> + It uses the test file: + <filename> + performance/ext/pb_ds/multimap_text_insert_mem_usage_large.cc + </filename> + </para> + + <para>The test checks the memory scalability of different + "multimap" designs.</para> + + </section> + + <section xml:id="multimap.text_insert_mem_large.results"> + <info><title> + Results + </title></info> + + <para>The graphic below show the results for "multimaps" which + use a tree-based container for primary keys. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_multimap_text_insert_mem_usage_test_large_s2p_tree_local.png"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PDF" scale="33" + fileref="../images/pbds_multimap_text_insert_mem_usage_test_large_s2p_tree_local.pdf"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + + <informaltable frame="all"> + + <tgroup cols="7" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <colspec colname="c4"/> + <colspec colname="c5"/> + <colspec colname="c6"/> + <colspec colname="c7"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + n_mmap + </entry> + </row> + + <row> + <entry> + <classname>std::multimap</classname> + </entry> + <entry namest="c2" nameend="c7"></entry> + </row> + + <!-- multimap 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + rb_tree_mmap_lu_mtf_set + </entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname>tree</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>rb_tree_tag</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + + <row> + <entry> + <classname>Node_Update</classname> + </entry> + <entry> + <classname>null_node_update</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + <row> + <entry> + <classname>Mapped</classname> + </entry> + <entry> + <classname>list_update</classname> + </entry> + <entry> + <classname>Update_Policy</classname> + </entry> + <entry> + <classname>lu_move_to_front_policy</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <!-- multimap 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set + </entry> + </row> + + <row> + <entry morerows="4" valign="top"> + <classname>tree</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>rb_tree_tag</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + + <row> + <entry> + <classname>Node_Update</classname> + </entry> + <entry> + <classname>null_node_update</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname>Mapped</classname> + </entry> + <entry morerows="2" valign="top"> + <classname>cc_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + + <para>The graphic below show the results for "multimaps" which + use a hash-based container for primary keys. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_multimap_text_find_timing_test_large_s2p_hash_local.png"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PDF" scale="33" + fileref="../images/pbds_multimap_text_find_timing_test_large_s2p_hash_local.pdf"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + <informaltable frame="all"> + + <tgroup cols="7" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <colspec colname="c4"/> + <colspec colname="c5"/> + <colspec colname="c6"/> + <colspec colname="c7"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + n_hash_mmap + </entry> + </row> + + <row> + <entry> + <classname>std::tr1::unordered_multimap</classname> + </entry> + <entry namest="c2" nameend="c7"></entry> + </row> + + <!-- multimap 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + rb_tree_mmap_lu_mtf_set + </entry> + </row> + + <row> + <entry morerows="3" valign="top"> + <classname> + cc_hash_table + </classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry> + <classname>Mapped</classname> + </entry> + <entry> + <classname>list_update</classname> + </entry> + <entry> + <classname>Update_Policy</classname> + </entry> + <entry> + <classname>lu_move_to_front_policy</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <!-- multimap 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c7"> + rb_tree_mmap_cc_hash_mask_exp_nea_lc_1div8_1div2_nsth_set + </entry> + </row> + + <row> + <entry morerows="5" valign="top"> + <classname> + cc_hash_table + </classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c4" nameend="c7"></entry> + </row> + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry morerows="2" valign="top"> + <classname>Mapped</classname> + </entry> + <entry morerows="2" valign="top"> + <classname>cc_hash_table</classname> + </entry> + <entry> + <classname>Comb_Hash_Fn</classname> + </entry> + <entry> + <classname>direct_mask_range_hashing</classname> + </entry> + <entry namest="c6" nameend="c7"></entry> + </row> + + <row> + <entry morerows="1" valign="top"> + <classname>Resize_Policy</classname> + </entry> + <entry morerows="1" valign="top"> + <classname>hash_standard_resize_policy</classname> + </entry> + <entry> + <classname>Size_Policy</classname> + </entry> + <entry> + <classname>hash_exponential_size_policy</classname> + </entry> + </row> + + <row> + <entry valign="top"> + <classname>Trigger_Policy</classname> + </entry> + <entry> + <classname>hash_load_check_resize_trigger</classname> with + α<subscript>min</subscript> = 1/8 and α<subscript>max</subscript> = 1/2 + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + </section> + + <section xml:id="multimap.text_insert_mem_large.observations"> + <info><title> + Observations + </title></info> + + <para>See Observations::Mapping-Semantics + Considerations.</para> + + </section> + + </section> + + </section> <!-- multimap --> + + <section xml:id="performance.priority_queue"> + <info><title>Priority Queue</title></info> + + <!-- 01 <a href="priority_queue_text_push_timing_test"> --> + <section xml:id="performance.priority_queue.text_push"> + <info><title> + Text <function>push</function> + </title></info> + <para></para> + + <section xml:id="priority_queue.text_push.info"> + <info><title> + Description + </title></info> + + + <para>This test inserts a number of values with keys from an + arbitrary text ([ wickland96thirty ]) into + a container using <function>push</function>. It measures the average time + for <function>push</function> as a function of the number of values + pushed.</para> + + <para> + It uses the test file: + <filename> + performance/ext/pb_ds/priority_queue_text_push_timing.cc + </filename> + </para> + + <para>The test checks the effect of different underlying data + structures. + </para> + + </section> + + <section xml:id="priority_queue.text_push.results"> + <info><title> + Results + </title></info> + + <para>The two graphics below show the results for the native + priority_queues and this library's priority_queues. + </para> + + <para>The graphic immediately below shows the results for the + native priority_queue type instantiated with different underlying + container types versus several different versions of library's + priority_queues. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PDF" scale="75" + fileref="../images/pbds_priority_queue_text_push_timing_test_local.pdf"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_push_timing_test_local.png"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + + <informaltable frame="all"> + + <tgroup cols="3" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + n_pq_vector + </entry> + </row> + + <row> + <entry> + <classname>std::priority_queue</classname> + </entry> + <entry> + <classname>Sequence</classname> + </entry> + <entry> + <classname>std::vector</classname> + </entry> + </row> + + <!-- native 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + n_pq_deque + </entry> + </row> + + <row> + <entry> + <classname>std::priority_queue</classname> + </entry> + <entry> + <classname>Sequence</classname> + </entry> + <entry> + <classname>std::deque</classname> + </entry> + </row> + + <!-- priority_queue 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + binary_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>binary_heap_tag</classname> + </entry> + </row> + + <!-- priority_queue 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + binomial_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>binomial_heap_tag</classname> + </entry> + </row> + + <!-- priority_queue 03 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + rc_binomial_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>rc_binomial_heap_tag</classname> + </entry> + </row> + + <!-- priority_queue 04 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + thin_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>thin_heap_tag</classname> + </entry> + </row> + + + <!-- priority_queue 05 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + pairing_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>pairing_heap_tag</classname> + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + + + <para>The graphic below shows the results for the binary-heap + based native priority queues and this library's pairing-heap + priority_queue data structures. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PDF" scale="75" + fileref="../images/pbds_pairing_priority_queue_text_push_timing_test_local.pdf"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml//images/pbds_pairing_priority_queue_text_push_timing_test_local.png"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + + <informaltable frame="all"> + + <tgroup cols="3" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + <!-- native 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + n_pq_vector + </entry> + </row> + + <row> + <entry> + <classname>std::priority_queue</classname> + </entry> + <entry> + <classname>Sequence</classname> + </entry> + <entry> + <classname>std::vector</classname> + </entry> + </row> + + <!-- native 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + n_pq_deque + </entry> + </row> + + <row> + <entry> + <classname>std::priority_queue</classname> + </entry> + <entry> + <classname>Sequence</classname> + </entry> + <entry> + <classname>std::deque</classname> + </entry> + + </row> + + <!-- priority_queue 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + thin_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>thin_heap_tag</classname> + </entry> + </row> + + + <!-- priority_queue 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + pairing_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>pairing_heap_tag</classname> + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + + </section> + + <section xml:id="priority_queue.text_push.observations"> + <info><title> + Observations + </title></info> + + <para>Pairing heaps (<classname>priority_queue</classname> with + <classname>Tag</classname> = <classname>pairing_heap_tag</classname>) + are the most suited for sequences of <function>push</function> and + <function>pop</function> operations of non-primitive types (e.g. + <classname>std::string</classname>s). (See Priority Queue + Text <function>push</function> and <function>pop</function> Timing Test.) They are + less constrained than binomial heaps, e.g., and since + they are node-based, they outperform binary heaps. (See + Priority + Queue Random Integer <function>push</function> Timing Test for the case + of primitive types.)</para> + + <para>The standard's priority queues do not seem to perform well in + this case: the <classname>std::vector</classname> implementation needs to + perform a logarithmic sequence of string operations for each + operation, and the deque implementation is possibly hampered by + its need to manipulate a relatively-complex type (deques + support a O(1) <function>push_front</function>, even though it is + not used by <classname>std::priority_queue</classname>.)</para> + + </section> + </section> + + <!-- 02 <a href="priority_queue_text_push_pop_timing_test"> --> + <section xml:id="performance.priority_queue.text_push_pop"> + <info><title> + Text <function>push</function> and <function>pop</function> + </title></info> + <para></para> + + <section xml:id="priority_queue.text_push_pop.info"> + <info><title> + Description + </title></info> + + <para>This test inserts a number of values with keys from an + arbitrary text ([ wickland96thirty ]) into + a container using <classname>push</classname> , then removes them using + <classname>pop</classname> . It measures the average time for <classname>push</classname> + as a function of the number of values.</para> + + + <para> + It uses the test file: + <filename> + performance/ext/pb_ds/priority_queue_text_push_pop_timing.cc + </filename> + </para> + + <para>The test checks the effect of different underlying data + structures. + </para> + + </section> + + <section xml:id="priority_queue.text_push_pop.results"> + <info><title> + Results + </title></info> + + <para>The two graphics below show the results for the native + priority_queues and this library's priority_queues. + </para> + + <para>The graphic immediately below shows the results for the + native priority_queue type instantiated with different underlying + container types versus several different versions of library's + priority_queues. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PDF" scale="75" + fileref="../images/pbds_priority_queue_text_push_pop_timing_test_local.pdf"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_push_pop_timing_test_local.png"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + + <informaltable frame="all"> + + <tgroup cols="3" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + n_pq_vector + </entry> + </row> + + <row> + <entry> + <classname>std::priority_queue</classname> + </entry> + <entry> + <classname>Sequence</classname> + </entry> + <entry> + <classname>std::vector</classname> + </entry> + </row> + + <!-- native 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + n_pq_deque + </entry> + </row> + + <row> + <entry> + <classname>std::priority_queue</classname> + </entry> + <entry> + <classname>Sequence</classname> + </entry> + <entry> + <classname>std::deque</classname> + </entry> + + </row> + + <!-- priority_queue 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + binary_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>binary_heap_tag</classname> + </entry> + </row> + + <!-- priority_queue 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + binomial_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>binomial_heap_tag</classname> + </entry> + </row> + + <!-- priority_queue 03 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + rc_binomial_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>rc_binomial_heap_tag</classname> + </entry> + </row> + + <!-- priority_queue 04 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + thin_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>thin_heap_tag</classname> + </entry> + </row> + + <!-- priority_queue 05 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + pairing_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>pairing_heap_tag</classname> + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + + + <para>The graphic below shows the results for the native priority + queues and this library's pairing-heap priority_queue data + structures. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PDF" scale="75" + fileref="../images/pbds_pairing_priority_queue_text_push_pop_timing_test_local.pdf"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml//images/pbds_pairing_priority_queue_text_push_pop_timing_test_local.png"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + + <informaltable frame="all"> + + <tgroup cols="3" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + n_pq_vector + </entry> + </row> + + <row> + <entry> + <classname>std::priority_queue</classname> adapting <classname>std::vector</classname> + </entry> + <entry> + <classname>Sequence</classname> + </entry> + <entry> + <classname>std::vector</classname> + </entry> + + </row> + + <!-- native 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + n_pq_deque + </entry> + </row> + + <row> + <entry> + <classname>std::priority_queue</classname> + </entry> + <entry> + <classname>Sequence</classname> + </entry> + <entry> + <classname>std::deque</classname> + </entry> + + </row> + + <!-- priority_queue 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + pairing_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>pairing_heap_tag</classname> + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + + </section> + + <section xml:id="priority_queue.text_push_pop.observations"> + <info><title> + Observations + </title></info> + + <para>These results are very similar to Priority Queue Text + <function>push</function> Timing Test. As stated there, pairing heaps + (<classname>priority_queue</classname> with + <classname>Tag</classname> + = <classname>pairing_heap_tag</classname>) are most suited + for <function>push</function> and <function>pop</function> + sequences of non-primitive types such as strings. Observing these + two tests, one can note that a pairing heap outperforms the others + in terms of <function>push</function> operations, but equals + binary heaps (<classname>priority_queue</classname> with + <classname>Tag</classname> + = <classname>binary_heap_tag</classname>) if the number + of <function>push</function> and <function>pop</function> + operations is equal. As the number of <function>pop</function> + operations is at most equal to the number + of <function>push</function> operations, pairing heaps are better + in this case. See Priority Queue Random + Integer <function>push</function> and <function>pop</function> + Timing Test for a case which is different.</para> + + </section> + </section> + + + <!-- 03 <a href="priority_queue_random_int_push_timing_test"> --> + <section xml:id="performance.priority_queue.int_push"> + <info><title> + Integer <function>push</function> + </title></info> + <para></para> + + <section xml:id="priority_queue.int_push.info"> + <info><title> + Description + </title></info> + + <para>This test inserts a number of values with integer keys + into a container using <function>push</function>. It + measures the average time for <function>push</function> as a + function of the number of values.</para> + + <para> + It uses the test file: + <filename> + performance/ext/pb_ds/priority_queue_random_int_push_timing.cc + </filename> + </para> + + <para>The test checks the effect of different underlying data + structures. + </para> + + </section> + + <section xml:id="priority_queue.int_push.results"> + <info><title> + Results + </title></info> + + <para>The two graphics below show the results for the native + priority_queues and this library's priority_queues. + </para> + + <para>The graphic immediately below shows the results for the + native priority_queue type instantiated with different underlying + container types versus several different versions of library's + priority_queues. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PDF" scale="75" + fileref="../images/pbds_priority_queue_random_int_push_timing_test_local.pdf"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_priority_queue_random_int_push_timing_test_local.png"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + + <informaltable frame="all"> + + <tgroup cols="3" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + n_pq_vector + </entry> + </row> + + <row> + <entry> + <classname>std::priority_queue</classname> + </entry> + <entry> + <classname>Sequence</classname> + </entry> + <entry> + <classname>std::vector</classname> + </entry> + </row> + + <!-- native 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + n_pq_deque + </entry> + </row> + + <row> + <entry> + <classname>std::priority_queue</classname> + </entry> + <entry> + <classname>Sequence</classname> + </entry> + <entry> + <classname>std::deque</classname> + </entry> + + </row> + + <!-- priority_queue 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + binary_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>binary_heap_tag</classname> + </entry> + </row> + + <!-- priority_queue 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + binomial_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>binomial_heap_tag</classname> + </entry> + </row> + + <!-- priority_queue 03 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + rc_binomial_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>rc_binomial_heap_tag</classname> + </entry> + </row> + + <!-- priority_queue 04 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + thin_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>thin_heap_tag</classname> + </entry> + </row> + + <!-- priority_queue 05 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + pairing_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>pairing_heap_tag</classname> + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + + + <para>The graphic below shows the results for the binary-heap + based native priority queues and this library's + priority_queue data structures. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PDF" scale="75" + fileref="../images/pbds_binary_priority_queue_random_int_push_timing_test_local.pdf"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml//images/pbds_binary_priority_queue_random_int_push_timing_test_local.png"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + + <informaltable frame="all"> + + <tgroup cols="3" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + n_pq_vector + </entry> + </row> + + <row> + <entry> + <classname>std::priority_queue</classname> adapting <classname>std::vector</classname> + </entry> + <entry> + <classname>Sequence</classname> + </entry> + <entry> + <classname>std::vector</classname> + </entry> + + </row> + + <!-- native 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + n_pq_deque + </entry> + </row> + + <row> + <entry> + <classname>std::priority_queue</classname> + </entry> + <entry> + <classname>Sequence</classname> + </entry> + <entry> + <classname>std::deque</classname> + </entry> + + </row> + + <!-- priority_queue 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + binary_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>binary_heap_tag</classname> + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + + </section> + + <section xml:id="priority_queue.int_push.observations"> + <info><title> + Observations + </title></info> + + + <para>Binary heaps are the most suited for sequences of + <function>push</function> and <function>pop</function> operations of primitive types + (e.g. <type>int</type>s). They are less constrained + than any other type, and since it is very efficient to store + such types in arrays, they outperform even pairing heaps. (See + Priority + Queue Text <function>push</function> Timing Test for the case of + non-primitive types.)</para> + </section> + </section> + + <!-- 04 "priority_queue_random_int_push_pop_timing_test" --> + <section xml:id="performance.priority_queue.int_push_pop"> + <info><title> + Integer <function>push</function> + </title></info> + <para></para> + + <section xml:id="priority_queue.int_push_pop.info"> + <info><title> + Description + </title></info> + + <para>This test inserts a number of values with integer keys + into a container using <function>push</function> , then removes them + using <function>pop</function> . It measures the average time for + <function>push</function> and <function>pop</function> as a function + of the number of values.</para> + + <para> + It uses the test file: + <filename> + performance/ext/pb_ds/priority_queue_random_int_push_pop_timing.cc + </filename> + </para> + + <para>The test checks the effect of different underlying data + structures. + </para> + + </section> + + <section xml:id="priority_queue.int_push_pop.results"> + <info><title> + Results + </title></info> + + <para>The graphic immediately below shows the results for the + native priority_queue type instantiated with different underlying + container types versus several different versions of library's + priority_queues. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PDF" scale="75" + fileref="../images/pbds_priority_queue_random_int_push_pop_timing_test_local.pdf"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_priority_queue_random_int_push_pop_timing_test_local.png"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + + <informaltable frame="all"> + + <tgroup cols="3" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + n_pq_vector + </entry> + </row> + + <row> + <entry> + <classname>std::priority_queue</classname> + </entry> + <entry> + <classname>Sequence</classname> + </entry> + <entry> + <classname>std::vector</classname> + </entry> + </row> + + <!-- native 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + n_pq_deque + </entry> + </row> + + <row> + <entry> + <classname>std::priority_queue</classname> + </entry> + <entry> + <classname>Sequence</classname> + </entry> + <entry> + <classname>std::deque</classname> + </entry> + + </row> + + <!-- priority_queue 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + binary_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>binary_heap_tag</classname> + </entry> + </row> + + <!-- priority_queue 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + binomial_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>binomial_heap_tag</classname> + </entry> + </row> + + <!-- priority_queue 03 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + rc_binomial_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>rc_binomial_heap_tag</classname> + </entry> + </row> + + <!-- priority_queue 04 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + thin_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>thin_heap_tag</classname> + </entry> + </row> + + <!-- priority_queue 05 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + pairing_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>pairing_heap_tag</classname> + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + + + </section> + + <section xml:id="priority_queue.int_push_pop.observations"> + <info><title> + Observations + </title></info> + + <para>Binary heaps are the most suited for sequences of + <function>push</function> and <function>pop</function> operations of primitive types + (e.g. <type>int</type>s). This is explained in + Priority + Queue Random Int <function>push</function> Timing Test. (See Priority Queue + Text <function>push</function> Timing Test for the case of primitive + types.)</para> + + <para>At first glance it seems that the standard's vector-based + priority queue is approximately on par with this + library's corresponding priority queue. There are two + differences however:</para> + <orderedlist> + <listitem><para>The standard's priority queue does not downsize the underlying + vector (or deque) as the priority queue becomes smaller + (see Priority Queue + Text <function>pop</function> Memory Use Test). It is therefore + gaining some speed at the expense of space.</para></listitem> + <listitem><para>From Priority Queue Random + Integer <function>push</function> and <function>pop</function> + Timing Test, it seems that the standard's priority queue is + slower in terms of <function>push</function> operations. Since + the number of + <function>pop</function> operations is at most that of <function>push</function> + operations, the test here is the "best" for the standard's + priority queue.</para></listitem> + </orderedlist> + + + </section> + </section> + + + <!-- 05 <a href="priority_queue_text_pop_mem_usage_test"> --> + <section xml:id="performance.priority_queue.text_pop"> + <info><title> + Text <function>pop</function> Memory Use + </title></info> + <para></para> + + <section xml:id="priority_queue.text_pop.info"> + <info><title> + Description + </title></info> + + + <para>This test inserts a number of values with keys from an + arbitrary text ([ wickland96thirty ]) into + a container, then pops them until only one is left in the + container. It measures the memory use as a function of the + number of values pushed to the container.</para> + <para> + It uses the test file: + <filename> + performance/ext/pb_ds/priority_queue_text_pop_mem_usage.cc + </filename> + </para> + + <para>The test checks the effect of different underlying data + structures. + </para> + + </section> + + <section xml:id="priority_queue.text_pop.results"> + <info><title> + Results + </title></info> + + <para>The graphic immediately below shows the results for the + native priority_queue type instantiated with different underlying + container types versus several different versions of library's + priority_queues. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PDF" scale="75" + fileref="../images/pbds_priority_queue_text_pop_mem_usage_test_local.pdf"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_pop_mem_usage_test_local.png"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + + <informaltable frame="all"> + + <tgroup cols="3" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + n_pq_vector + </entry> + </row> + + <row> + <entry> + <classname>std::priority_queue</classname> + </entry> + <entry> + <classname>Sequence</classname> + </entry> + <entry> + <classname>std::vector</classname> + </entry> + </row> + + <!-- native 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + n_pq_deque + </entry> + </row> + + <row> + <entry> + <classname>std::priority_queue</classname> + </entry> + <entry> + <classname>Sequence</classname> + </entry> + <entry> + <classname>std::deque</classname> + </entry> + + </row> + + <!-- priority_queue 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + binary_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>binary_heap_tag</classname> + </entry> + </row> + + <!-- priority_queue 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + binomial_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>binomial_heap_tag</classname> + </entry> + </row> + + <!-- priority_queue 03 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + rc_binomial_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>rc_binomial_heap_tag</classname> + </entry> + </row> + + <!-- priority_queue 04 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + thin_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>thin_heap_tag</classname> + </entry> + </row> + + <!-- priority_queue 05 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + pairing_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>pairing_heap_tag</classname> + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + + + </section> + + <section xml:id="priority_queue.text_pop.observations"> + <info><title> + Observations + </title></info> + + + <para>The priority queue implementations (excluding the standard's) use + memory proportionally to the number of values they hold: + node-based implementations (e.g., a pairing heap) do so + naturally; this library's binary heap de-allocates memory when + a certain lower threshold is exceeded.</para> + + <para>Note from Priority Queue Text <function>push</function> + and <function>pop</function> Timing Test and Priority Queue + Random Integer <function>push</function> + and <function>pop</function> Timing Test that this does not + impede performance compared to the standard's priority + queues.</para> + <para>See Hash-Based Erase + Memory Use Test for a similar phenomenon regarding priority + queues.</para> + </section> + </section> + + <!-- 06 <a href="priority_queue_text_join_timing_test"> --> + <section xml:id="performance.priority_queue.text_join"> + <info><title> + Text <function>join</function> + </title></info> + <para></para> + + <section xml:id="priority_queue.text_join.info"> + <info><title> + Description + </title></info> + + <para>This test inserts a number of values with keys from an + arbitrary text ([ wickland96thirty ]) into + two containers, then merges the containers. It uses + <function>join</function> for this library's priority queues; for + the standard's priority queues, it successively pops values from + one container and pushes them into the other. The test measures + the average time as a function of the number of values.</para> + <para> + It uses the test file: + <filename> + performance/ext/pb_ds/priority_queue_text_join_timing.cc + </filename> + </para> + + <para>The test checks the effect of different underlying data + structures. + </para> + + </section> + + <section xml:id="priority_queue.text_join.results"> + <info><title> + Results + </title></info> + + <para>The graphic immediately below shows the results for the + native priority_queue type instantiated with different underlying + container types versus several different versions of library's + priority_queues. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PDF" scale="75" + fileref="../images/pbds_priority_queue_text_join_timing_test_local.pdf"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_join_timing_test_local.png"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + + <informaltable frame="all"> + + <tgroup cols="3" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + n_pq_vector + </entry> + </row> + + <row> + <entry> + <classname>std::priority_queue</classname> + </entry> + <entry> + <classname>Sequence</classname> + </entry> + <entry> + <classname>std::vector</classname> + </entry> + </row> + + <!-- native 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + n_pq_deque + </entry> + </row> + + <row> + <entry> + <classname>std::priority_queue</classname> + </entry> + <entry> + <classname>Sequence</classname> + </entry> + <entry> + <classname>std::deque</classname> + </entry> + + </row> + + <!-- priority_queue 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + binary_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>binary_heap_tag</classname> + </entry> + </row> + + <!-- priority_queue 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + binomial_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>binomial_heap_tag</classname> + </entry> + </row> + + <!-- priority_queue 03 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + rc_binomial_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>rc_binomial_heap_tag</classname> + </entry> + </row> + + <!-- priority_queue 04 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + thin_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>thin_heap_tag</classname> + </entry> + </row> + + <!-- priority_queue 05 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + pairing_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>pairing_heap_tag</classname> + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + + + </section> + + <section xml:id="priority_queue.text_join.observations"> + <info><title> + Observations + </title></info> + + <para>In this test the node-based heaps perform <function>join</function> in + either logarithmic or constant time. The binary heap requires + linear time, since the well-known heapify algorithm [clrs2001] is linear.</para> + <para>It would be possible to apply the heapify algorithm to the + standard containers, if they would support iteration (which they + don't). Barring iterators, it is still somehow possible to perform + linear-time merge on a <classname>std::vector</classname>-based + standard priority queue, using <function>top()</function> + and <function>size()</function> (since they are enough to expose + the underlying array), but this is impossible for + a <classname>std::deque</classname>-based standard priority queue. + Without heapify, the cost is super-linear.</para> + </section> + </section> + + + <!-- 07 <a href="priority_queue_text_push_timing_test"> --> + <section xml:id="performance.priority_queue.text_modify_up"> + <info><title> + Text <function>modify</function> Up + </title></info> + <para></para> + + <section xml:id="priority_queue.text_modify_up.info"> + <info><title> + Description + </title></info> + + <para>This test inserts a number of values with keys from an + arbitrary text ([ wickland96thirty ]) into + into a container then modifies each one "up" (i.e., it + makes it larger). It uses <function>modify</function> for this library's + priority queues; for the standard's priority queues, it pops values + from a container until it reaches the value that should be + modified, then pushes values back in. It measures the average + time for <function>modify</function> as a function of the number of + values.</para> + + <para> + It uses the test file: + <filename> + performance/ext/pb_ds/priority_queue_text_modify_up_timing.cc + </filename> + </para> + + <para>The test checks the effect of different underlying data + structures for graph algorithms settings. Note that making an + arbitrary value larger (in the sense of the priority queue's + comparison functor) corresponds to decrease-key in standard graph + algorithms [clrs2001]. + </para> + + </section> + + <section xml:id="priority_queue.text_modify_up.results"> + <info><title> + Results + </title></info> + + <para>The two graphics below show the results for the native + priority_queues and this library's priority_queues. + </para> + + <para>The graphic immediately below shows the results for the + native priority_queue type instantiated with different underlying + container types versus several different versions of library's + priority_queues. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PDF" scale="75" + fileref="../images/pbds_priority_queue_text_modify_up_timing_test_local.pdf"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_up_timing_test_local.png"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + + <informaltable frame="all"> + + <tgroup cols="3" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + n_pq_vector + </entry> + </row> + + <row> + <entry> + <classname>std::priority_queue</classname> + </entry> + <entry> + <classname>Sequence</classname> + </entry> + <entry> + <classname>std::vector</classname> + </entry> + </row> + + <!-- native 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + n_pq_deque + </entry> + </row> + + <row> + <entry> + <classname>std::priority_queue</classname> + </entry> + <entry> + <classname>Sequence</classname> + </entry> + <entry> + <classname>std::deque</classname> + </entry> + </row> + + <!-- priority_queue 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + binary_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>binary_heap_tag</classname> + </entry> + </row> + + <!-- priority_queue 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + binomial_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>binomial_heap_tag</classname> + </entry> + </row> + + <!-- priority_queue 03 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + rc_binomial_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>rc_binomial_heap_tag</classname> + </entry> + </row> + + <!-- priority_queue 04 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + thin_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>thin_heap_tag</classname> + </entry> + </row> + + + <!-- priority_queue 05 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + pairing_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>pairing_heap_tag</classname> + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + + + <para>The graphic below shows the results for the + native priority queues and this library's pairing and thin heap + priority_queue data structures. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PDF" scale="75" + fileref="../images/pbds_priority_queue_text_modify_up_timing_test_pairing_thin_local.pdf"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml//images/pbds_priority_queue_text_modify_up_timing_test_pairing_thin_local.png"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + + <informaltable frame="all"> + + <tgroup cols="3" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- priority_queue 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + thin_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>thin_heap_tag</classname> + </entry> + </row> + + + <!-- priority_queue 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + pairing_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>pairing_heap_tag</classname> + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + + </section> + + <section xml:id="priority_queue.text_modify_up.observations"> + <info><title> + Observations + </title></info> + + <para>As noted above, increasing an arbitrary value (in the sense of + the priority queue's comparison functor) is very common in + graph-related algorithms. In this case, a thin heap + (<classname>priority_queue</classname> with + <classname>Tag</classname> = <classname>thin_heap_tag</classname>) + outperforms a pairing heap (<classname>priority_queue</classname> with + <classname>Tag</classname> = <classname>pairing_heap_tag</classname>). + Conversely, Priority Queue Text + <function>push</function> Timing Test, Priority Queue + Text <function>push</function> and <function>pop</function> Timing Test, Priority + Queue Random Integer <function>push</function> Timing Test, and + Priority + Queue Random Integer <function>push</function> and <function>pop</function> Timing + Test show that the situation is reversed for other + operations. It is not clear when to prefer one of these two + different types.</para> + + <para>In this test this library's binary heaps + effectively perform modify in linear time. As explained in + Priority Queue Design::Traits, given a valid point-type iterator, + a binary heap can perform + <function>modify</function> logarithmically. The problem is that binary + heaps invalidate their find iterators with each modifying + operation, and so the only way to obtain a valid point-type + iterator is to iterate using a range-type iterator until + finding the appropriate value, then use the range-type iterator + for the <function>modify</function> operation.</para> + <para>The explanation for the standard's priority queues' performance + is similar to that in Priority Queue Text + <function>join</function> Timing Test.</para> + + + </section> + </section> + + <!-- 08 <a href="priority_queue_text_modify_down_timing_test"> --> + + <section xml:id="performance.priority_queue.text_modify_down"> + <info><title> + Text <function>modify</function> Down + </title></info> + <para></para> + + <section xml:id="priority_queue.text_modify_down.info"> + <info><title> + Description + </title></info> + + <para>This test inserts a number of values with keys from an + arbitrary text ([ wickland96thirty ]) into + into a container then modifies each one "down" (i.e., it + makes it smaller). It uses <function>modify</function> for this library's + priority queues; for the standard's priority queues, it pops values + from a container until it reaches the value that should be + modified, then pushes values back in. It measures the average + time for <function>modify</function> as a function of the number of + values.</para> + + <para> + It uses the test file: + <filename> + performance/ext/pb_ds/priority_queue_text_modify_down_timing.cc + </filename> + </para> + + <para>The main purpose of this test is to contrast Priority Queue + Text <classname>modify</classname> Up Timing Test.</para> + + </section> + + <section xml:id="priority_queue.text_modify_down.results"> + <info><title> + Results + </title></info> + + <para>The two graphics below show the results for the native + priority_queues and this library's priority_queues. + </para> + + <para>The graphic immediately below shows the results for the + native priority_queue type instantiated with different underlying + container types versus several different versions of library's + priority_queues. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PDF" scale="75" + fileref="../images/pbds_priority_queue_text_modify_down_timing_test_local.pdf"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml/images/pbds_priority_queue_text_modify_down_timing_test_local.png"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + + <informaltable frame="all"> + + <tgroup cols="3" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- native 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + n_pq_vector + </entry> + </row> + + <row> + <entry> + <classname>std::priority_queue</classname> + </entry> + <entry> + <classname>Sequence</classname> + </entry> + <entry> + <classname>std::vector</classname> + </entry> + </row> + + <!-- native 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + n_pq_deque + </entry> + </row> + + <row> + <entry> + <classname>std::priority_queue</classname> + </entry> + <entry> + <classname>Sequence</classname> + </entry> + <entry> + <classname>std::deque</classname> + </entry> + </row> + + <!-- priority_queue 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + binary_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>binary_heap_tag</classname> + </entry> + </row> + + <!-- priority_queue 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + binomial_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>binomial_heap_tag</classname> + </entry> + </row> + + <!-- priority_queue 03 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + rc_binomial_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>rc_binomial_heap_tag</classname> + </entry> + </row> + + <!-- priority_queue 04 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + thin_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>thin_heap_tag</classname> + </entry> + </row> + + + <!-- priority_queue 05 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + pairing_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>pairing_heap_tag</classname> + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + + + <para>The graphic below shows the results for the + native priority queues and this library's pairing and thin heap + priority_queue data structures. + </para> + + <!-- results graphic --> + <informalfigure> + <mediaobject> + <imageobject> + <imagedata align="center" format="PDF" scale="75" + fileref="../images/pbds_priority_queue_text_modify_down_timing_test_pairing_thin_local.pdf"/> + </imageobject> + <imageobject> + <imagedata align="center" format="PNG" scale="100" + fileref="/mnt/share/src/gcc.svn-trunk/libstdc++-v3/doc/xml//images/pbds_priority_queue_text_modify_down_timing_test_pairing_thin_local.png"/> + </imageobject> + </mediaobject> + </informalfigure> + + <para> + The abbreviated names in the legend of the graphic above are + instantiated with the types in the following table. + </para> + + + <informaltable frame="all"> + + <tgroup cols="3" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <thead> + <row> + <entry><emphasis>Name/Instantiating Type</emphasis></entry> + <entry><emphasis>Parameter</emphasis></entry> + <entry><emphasis>Details</emphasis></entry> + </row> + </thead> + + <tbody> + + <!-- priority_queue 01 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + thin_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>thin_heap_tag</classname> + </entry> + </row> + + + <!-- priority_queue 02 --> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry namest="c1" nameend="c3"> + pairing_heap + </entry> + </row> + + <row> + <entry> + <classname>priority_queue</classname> + </entry> + <entry> + <classname>Tag</classname> + </entry> + <entry> + <classname>pairing_heap_tag</classname> + </entry> + </row> + + </tbody> + </tgroup> + </informaltable> + + + </section> + + <section xml:id="priority_queue.text_modify_down.observations"> + <info><title> + Observations + </title></info> + + <para>Most points in these results are similar to Priority Queue + Text <function>modify</function> Up Timing Test.</para> + + <para>It is interesting to note, however, that as opposed to that + test, a thin heap (<classname>priority_queue</classname> with + <classname>Tag</classname> = <classname>thin_heap_tag</classname>) is + outperformed by a pairing heap (<classname>priority_queue</classname> with + <classname>Tag</classname> = <classname>pairing_heap_tag</classname>). + In this case, both heaps essentially perform an <function>erase</function> + operation followed by a <function>push</function> operation. As the other + tests show, a pairing heap is usually far more efficient than a + thin heap, so this is not surprising.</para> + <para>Most algorithms that involve priority queues increase values + (in the sense of the priority queue's comparison functor), and + so Priority Queue + Text <classname>modify</classname> Up Timing Test - is more interesting + than this test.</para> + </section> + </section> + + + </section> <!-- priority_queue --> + + <section xml:id="pbds.test.performance.observations"> + <info><title>Observations</title></info> + + <section xml:id="observations.associative"> + <info><title>Associative</title></info> + + <section xml:id="observations.associative.underlying"> + <info><title> + Underlying Data-Structure Families + </title></info> + + <para>In general, hash-based containers have better timing performance + than containers based on different underlying-data structures. The + main reason to choose a tree-based or trie-based container is if a + byproduct of the tree-like structure is required: either + order-preservation, or the ability to utilize node invariants. If + memory-use is the major factor, an ordered-vector tree gives + optimal results (albeit with high modificiation costs), and a + list-based container gives reasonable results.</para> + + </section> + + <section xml:id="observations.associative.hash"> + <info><title> + Hash-Based Containers + </title></info> + + <para>Hash-based containers are typically either collision + chaining or probing. 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 standard, allocators have + class-wise semantics (see [meyers96more] - Item 10); a + probing container might incur less contention in this case.</para> + </section> + + <section xml:id="observations.associative.hash_policies"> + <info><title> + Hash Policies + </title></info> + + <para>In hash-based containers, the range-hashing scheme 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.</para> + <para>The range-hashing scheme determines many of the other + policies. A mask-based scheme works + well with an exponential-size policy; for + probing-based containers, it goes well with a linear-probe + function.</para> + <para>An orthogonal consideration is the trigger policy. This + presents difficult tradeoffs. E.g., different load + factors in a load-check trigger policy yield a + space/amortized-cost tradeoff.</para> + </section> + + <section xml:id="observations.associative.branch"> + <info><title> + Branch-Based Containers + </title></info> + <para>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.</para> + + <para>Of the balanced node-based trees, this library includes a + red-black tree, as does standard (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].</para> + <para>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.</para> + <para>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., + <classname>std::string</classname>, 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.</para> + <para>Ordered-vector trees use very little space + [austern00noset]. + They do not have any other advantages (at least in this + implementation).</para> + <para>Large-fan-out PATRICIA tries 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.</para> + </section> + + <section xml:id="observations.associative.mapping_semantics"> + <info><title> + Mapping-Semantics + </title></info> + <para>Different mapping semantics were discussed in the introduction and design sections.Here + the focus will be 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:</para> + <orderedlist> + <listitem><para>Use an associative container that allows equivalent-key + values (such as <classname>std::multimap</classname>)</para></listitem> + <listitem><para>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. + </para></listitem> + <listitem><para>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.</para></listitem> + <listitem><para>Use a unique-key value associative container that maps + each primary key to some non-associative container + (e.g., <classname>std::vector</classname>)</para></listitem> + <listitem><para>Use a unique-key value associative container that takes + into account both primary and secondary keys.</para></listitem> + </orderedlist> + <para>Stated simply: there is a simple answer for this. (Excluding + option 1, which should be avoided in all cases).</para> + <para>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).</para> + <para>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.</para> + <para>To be more precise, assume there are m primary keys, + primary key i is mapped to n<subscript>i</subscript> + secondary keys, and each primary key is mapped, on average, to + n secondary keys (i.e., + E(n<subscript>i</subscript>) = n).</para> + <para>Suppose one wants to find a specific pair of primary and + secondary keys. Using 1 with a tree based container + (<classname>std::multimap</classname>), the expected cost is + E(Θ(log(m) + n<subscript>i</subscript>)) = Θ(log(m) + + n); using 1 with a hash-based container + (<classname>std::tr1::unordered_multimap</classname>), 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(n<subscript>i</subscript>)) = O(log(m)) + + E(O(log(n<subscript>i</subscript>)) = 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)).</para> + <para>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).</para> + <para>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.</para> + + </section> + + </section> + + + <section xml:id="observations.priority_queue"> + <info><title>Priority_Queue</title></info> + + <section xml:id="observations.priority_queue.complexity"> + <info><title>Complexity</title></info> + + <para>The following table shows the complexities of the different + underlying data structures in terms of orders of growth. It is + interesting to note that this table implies something about the + constants of the operations as well (see Amortized <function>push</function> + and <function>pop</function> operations).</para> + + <informaltable frame="all"> + + <tgroup cols="6" align="left" colsep="1" rowsep="1"> + <colspec colname="c1"/> + <colspec colname="c2"/> + <colspec colname="c3"/> + <colspec colname="c4"/> + <colspec colname="c5"/> + <colspec colname="c6"/> + <thead> + <row> + <entry></entry> + <entry><emphasis><function>push</function></emphasis></entry> + <entry><emphasis><function>pop</function></emphasis></entry> + <entry><emphasis><function>modify</function></emphasis></entry> + <entry><emphasis><function>erase</function></emphasis></entry> + <entry><emphasis><function>join</function></emphasis></entry> + </row> + </thead> + + <tbody> + + <row> + <entry> + <classname>std::priority_queue</classname> + </entry> + <entry> + Θ(n) worst + Θ(log(n)) amortized + </entry> + <entry> + Θ(log(n)) Worst + </entry> + <entry> + Θ(n log(n)) Worst + <subscript>[std note 1]</subscript> + </entry> + <entry> + Θ(n log(n)) + <subscript>[std note 2]</subscript> + </entry> + <entry> + Θ(n log(n)) + <subscript>[std note 1]</subscript> + </entry> + </row> + <row> + <entry> + <classname>priority_queue</classname> + <<classname>Tag</classname> = + <classname>pairing_heap_tag</classname>> + </entry> + <entry> + O(1) + </entry> + <entry> + Θ(n) worst + Θ(log(n)) amortized + </entry> + <entry> + Θ(n) worst + Θ(log(n)) amortized + </entry> + <entry> + Θ(n) worst + Θ(log(n)) amortized + </entry> + <entry> + O(1) + </entry> + </row> + <row> + <entry> + <classname>priority_queue</classname> + <<classname>Tag</classname> = + <classname>binary_heap_tag</classname>> + </entry> + <entry> + Θ(n) worst + Θ(log(n)) amortized + </entry> + <entry> + Θ(n) worst + Θ(log(n)) amortized + </entry> + <entry> + Θ(n) + </entry> + <entry> + Θ(n) + </entry> + <entry> + Θ(n) + </entry> + </row> + <row> + <entry> + <classname>priority_queue</classname> + <<classname>Tag</classname> = + <classname>binomial_heap_tag</classname>> + </entry> + <entry> + Θ(log(n)) worst + O(1) amortized + </entry> + <entry> + Θ(log(n)) + </entry> + <entry> + Θ(log(n)) + </entry> + <entry> + Θ(log(n)) + </entry> + <entry> + Θ(log(n)) + </entry> + </row> + <row> + <entry> + <classname>priority_queue</classname> + <<classname>Tag</classname> = + <classname>rc_binomial_heap_tag</classname>> + </entry> + <entry> + O(1) + </entry> + <entry> + Θ(log(n)) + </entry> + <entry> + Θ(log(n)) + </entry> + <entry> + Θ(log(n)) + </entry> + <entry> + Θ(log(n)) + </entry> + </row> + <row> + <entry> + <classname>priority_queue</classname><<classname>Tag</classname> = + <classname>thin_heap_tag</classname>> + </entry> + <entry> + O(1) + </entry> + <entry> + Θ(n) worst + Θ(log(n)) amortized + </entry> + <entry> + Θ(log(n)) worst + O(1) amortized, + or Θ(log(n)) amortized + <subscript>[thin_heap_note]</subscript> + </entry> + <entry> + Θ(n) worst + Θ(log(n)) amortized + </entry> + <entry> + Θ(n) + </entry> + </row> + </tbody> + </tgroup> + + </informaltable> + + <para>[std note 1] This + is not a property of the algorithm, but rather due to the fact + that the standard's priority queue implementation does not support + iterators (and consequently the ability to access a specific + value inside it). If the priority queue is adapting an + <classname>std::vector</classname>, then it is still possible to reduce this + to Θ(n) by adapting over the standard's adapter and + using the fact that <function>top</function> returns a reference to the + first value; if, however, it is adapting an + <classname>std::deque</classname>, then this is impossible.</para> + + <para>[std note 2] As + with [std note 1], this is not a + property of the algorithm, but rather the standard's implementation. + Again, if the priority queue is adapting an + <classname>std::vector</classname> then it is possible to reduce this to + Θ(n), but with a very high constant (one must call + <function>std::make_heap</function> which is an expensive linear + operation); if the priority queue is adapting an + <classname>std::deque</classname>, then this is impossible.</para> + + <para>[thin_heap_note] A thin heap has + Θ(log(n)) worst case <function>modify</function> time + always, but the amortized time depends on the nature of the + operation: I) if the operation increases the key (in the sense + of the priority queue's comparison functor), then the amortized + time is O(1), but if II) it decreases it, then the + amortized time is the same as the worst case time. Note that + for most algorithms, I) is important and II) is not.</para> + + </section> + + <section xml:id="observations.priority_queue.amortized_ops"> + <info><title> + Amortized <function>push</function> + and <function>pop</function> operations + </title></info> + + + <para>In many cases, a priority queue is needed primarily for + sequences of <function>push</function> and <function>pop</function> operations. All of + the underlying data structures have the same amortized + logarithmic complexity, but they differ in terms of + constants.</para> + <para>The table above shows that the different data structures are + "constrained" in some respects. In general, if a data structure + has lower worst-case complexity than another, then it will + perform slower in the amortized sense. Thus, for example a + redundant-counter binomial heap (<classname>priority_queue</classname> with + <classname>Tag</classname> = <classname>rc_binomial_heap_tag</classname>) + has lower worst-case <function>push</function> performance than a binomial + heap (<classname>priority_queue</classname> + with <classname>Tag</classname> = <classname>binomial_heap_tag</classname>), + and so its amortized <function>push</function> performance is slower in + terms of constants.</para> + <para>As the table shows, the "least constrained" underlying + data structures are binary heaps and pairing heaps. + Consequently, it is not surprising that they perform best in + terms of amortized constants.</para> + <orderedlist> + <listitem><para>Pairing heaps seem to perform best for non-primitive + types (e.g., <classname>std::string</classname>s), as shown by + Priority + Queue Text <function>push</function> Timing Test and Priority + Queue Text <function>push</function> and <function>pop</function> Timing + Test</para></listitem> + <listitem><para>binary heaps seem to perform best for primitive types + (e.g., <type>int</type>s), as shown by Priority + Queue Random Integer <function>push</function> Timing Test and + Priority + Queue Random Integer <function>push</function> and <function>pop</function> Timing + Test.</para></listitem> + </orderedlist> + + </section> + + <section xml:id="observations.priority_queue.graphs"> + <info><title> + Graph Algorithms + </title></info> + + <para>In some graph algorithms, a decrease-key operation is + required [clrs2001]; + this operation is identical to <function>modify</function> if a value is + increased (in the sense of the priority queue's comparison + functor). The table above and Priority Queue + Text <function>modify</function> Up Timing Test show that a thin heap + (<classname>priority_queue</classname> with + <classname>Tag</classname> = <classname>thin_heap_tag</classname>) + outperforms a pairing heap (<classname>priority_queue</classname> with + <classname>Tag</classname> = <classname>Tag</classname> = <classname>pairing_heap_tag</classname>), + but the rest of the tests show otherwise.</para> + + <para>This makes it difficult to decide which implementation to use in + this case. Dijkstra's shortest-path algorithm, for example, requires + Θ(n) <function>push</function> and <function>pop</function> operations + (in the number of vertices), but O(n<superscript>2</superscript>) + <function>modify</function> operations, which can be in practice Θ(n) + as well. It is difficult to find an a-priori characterization of + graphs in which the actual number of <function>modify</function> + operations will dwarf the number of <function>push</function> and + <function>pop</function> operations.</para> + + </section> + + </section> <!-- priority_queue --> + + </section> + + + </section> <!-- performance --> + +</section>
\ No newline at end of file diff --git a/libstdc++-v3/doc/xml/spine.xml b/libstdc++-v3/doc/xml/spine.xml index 5fb739fb2bc..5b12d48547d 100644 --- a/libstdc++-v3/doc/xml/spine.xml +++ b/libstdc++-v3/doc/xml/spine.xml @@ -18,6 +18,7 @@ <year>2008</year> <year>2009</year> <year>2010</year> + <year>2011</year> <holder> <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.fsf.org">FSF</link> </holder> |