Enhance those algos overloads to generalize existing optimization for __gnu_debug::_Safe_iterator w/o _GLIBCXX_DEBUG mode and for std::deque iterators. Also extend __copy_move_a2 ostreambuf_iterator overloads to std::vector and std::deque iterators. * include/bits/stl_algobase.h (__copy_move_a1<>(_II, _II, _OI)): New. (__copy_move_a1<>(_Deque_iterator<>, _Deque_iterator<>, _OI)): New. (__copy_move_a1<>(_Deque_iterator<>, _Deque_iterator<>, _Deque_iterator<>)): New. (__copy_move_a1<>(_II, _II, _Deque_iterator<>)): New. (__copy_move_a<>(_II, _II, _OI)): Adapt, call __copy_move_a1<>. (__copy_move_a<>(const _Safe_iterator<>&, const _Safe_iterator<>&, _OI)): New. (__copy_move_a<>(const _Safe_iterator<>&, const _Safe_iterator<>&, const _Safe_iterator<>&)): New. (__copy_move_a<>(_II, _II, const _Safe_iterator<>&)): New. (copy, move): Adapt, call __copy_move_a. (__copy_move_backward_a1<>(_II, _II, _OI)): New, call __copy_move_backward_a2. (__copy_move_backward_a1<>(_Deque_iterator<>, _Deque_iterator<>, _OI)): New. (__copy_move_backward_a1<>(_Deque_iterator<>, _Deque_iterator<>, _Deque_iterator<>)): New. (__copy_move_backward_a1<>(_II, _II, _Deque_iterator<>)): New. (__copy_move_backward_a<>(_II, _II, _OI)): Adapt, call __copy_move_backward_a1<>. (__copy_move_backward_a<>(const _Safe_iterator<>&, const _Safe_iterator<>&, _OI)): New. (__copy_move_backward_a<>(const _Safe_iterator<>&, const _Safe_iterator<>&, const _Safe_iterator<>&)): New. (__copy_move_backward_a<>(_II, _II, const _Safe_iterator<>&)): New. (copy_backward, move_backward): Adapt, call __copy_move_backward_a<>. (__fill_a): Rename into... (__fill_a1): ... this. (__fill_a1(__normal_iterator<>, __normal_iterator<>, const _Tp&)): New. (__fill_a1(const _Deque_iterator<>&, const _Deque_iterator<>&, _VTp)): New. (__fill_a(_FIte, _FIte, const _Tp&)): New, call __fill_a1. (__fill_a(const _Safe_iterator<>&, const _Safe_iterator<>&, const _Tp&)): New. (fill): Adapt, remove __niter_base usage. (__fill_n_a): Rename into... (__fill_n_a1): ...this. (__fill_n_a(const _Safe_iterator<>&, _Size, const _Tp&, input_iterator_tag)): New. (__fill_n_a(_OI, _Size, const _Tp&, output_iterator_tag)): New, call __fill_n_a1. (__fill_n_a(_OI, _Size, const _Tp&, random_access_iterator_tag)): New, call __fill_a. (__equal_aux): Rename into... (__equal_aux1): ...this. (__equal_aux1(_Deque_iterator<>, _Deque_iterator<>, _OI)): New. (__equal_aux1(_Deque_iterator<>, _Deque_iterator<>, _Deque_iterator<>)): New. (__equal_aux1(_II, _II, _Deque_iterator<>)): New. (__equal_aux(_II1, _II1, _II2)): New, call __equal_aux1. (__equal_aux(const _Safe_iterator<>&, const _Safe_iterator<>&, _OI)): New. (__equal_aux(const _Safe_iterator<>&, const _Safe_iterator<>&, const _Safe_iterator<>&)): New. (__equal_aux(_II, _II, const _Safe_iterator<>&)): New. (equal(_II1, _II1, _II2)): Adapt. * include/bits/stl_deque.h (fill, copy, copy_backward, move, move_backward): Remove. * include/bits/deque.tcc: Include <bits/stl_algobase.h>. (__fill_a1): New. (__copy_move_dit): New. (__copy_move_a1): New, use latter. (__copy_move_a1(_II, _II, _Deque_iterator<>)): New. (__copy_move_backward_dit): New. (__copy_move_backward_a1): New, use latter. (__copy_move_backward_a1(_II, _II, _Deque_iterator<>)): New. (__equal_dit): New. (__equal_aux1): New, use latter. (__equal_aux1(_II, _II, _Deque_iterator<>)): New. * include/std/numeric (__is_random_access_iter): Move... * include/bits/stl_iterator_base_types.h (__is_random_access_iter): ... here. Provide pre-C++11 definition. * include/debug/debug.h (_Safe_iterator<>): New declaration. * include/debug/safe_iterator.h (_Safe_iterator<>::_M_can_advance): Add __strict parameter. * include/debug/safe_iterator.tcc: Include <bits/stl_algobase.h>. (_Safe_iterator<>::_M_can_advance): Adapt. (std::__copy_move_a, std::__copy_move_backward_a, __fill_a): New. (__fill_n_a, __equal_aux): New. * include/debug/stl_iterator.h (__niter_base): Remove. * include/debug/vector (__niter_base): Remove. * testsuite/performance/25_algorithms/copy_backward_deque_iterators.cc: Include <vector> and <list>. Add benches. * testsuite/performance/25_algorithms/copy_deque_iterators.cc: Likewise. * testsuite/performance/25_algorithms/equal_deque_iterators.cc: Likewise. * testsuite/25_algorithms/copy/debug/1_neg.cc: New. * testsuite/25_algorithms/copy/deque_iterators/2.cc: New. * testsuite/25_algorithms/copy/deque_iterators/31.cc: New. * testsuite/25_algorithms/copy/deque_iterators/32.cc: New. * testsuite/25_algorithms/copy/deque_iterators/33.cc: New. * testsuite/25_algorithms/copy/deque_iterators/41.cc: New. * testsuite/25_algorithms/copy/deque_iterators/42.cc: New. * testsuite/25_algorithms/copy/deque_iterators/43.cc: New. * testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc (test02): New. * testsuite/25_algorithms/copy_backward/deque_iterators/2.cc: New. * testsuite/25_algorithms/equal/deque_iterators/1.cc: New. * testsuite/25_algorithms/fill/deque_iterators/1.cc: New. * testsuite/25_algorithms/move/deque_iterators/2.cc: New. * testsuite/25_algorithms/move_backward/deque_iterators/2.cc: New. From-SVN: r279201
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| adjacent_find | Loading commit data... | |
| advance/istreambuf_iterators | Loading commit data... | |
| all_of | Loading commit data... | |
| any_of | Loading commit data... | |
| binary_search | Loading commit data... | |
| clamp | Loading commit data... | |
| copy | Loading commit data... | |
| copy_backward | Loading commit data... | |
| copy_if | Loading commit data... | |
| copy_n | Loading commit data... | |
| count | Loading commit data... | |
| count_if | Loading commit data... | |
| equal | Loading commit data... | |
| equal_range | Loading commit data... | |
| fill | Loading commit data... | |
| fill_n | Loading commit data... | |
| find | Loading commit data... | |
| find_end | Loading commit data... | |
| find_first_of | Loading commit data... | |
| find_if | Loading commit data... | |
| find_if_not | Loading commit data... | |
| for_each | Loading commit data... | |
| generate | Loading commit data... | |
| generate_n | Loading commit data... | |
| headers | Loading commit data... | |
| heap | Loading commit data... | |
| includes | Loading commit data... | |
| inplace_merge | Loading commit data... | |
| is_heap | Loading commit data... | |
| is_heap_until | Loading commit data... | |
| is_partitioned | Loading commit data... | |
| is_permutation | Loading commit data... | |
| is_sorted | Loading commit data... | |
| is_sorted_until | Loading commit data... | |
| iter_swap | Loading commit data... | |
| lexicographical_compare | Loading commit data... | |
| lexicographical_compare_three_way | Loading commit data... | |
| lower_bound | Loading commit data... | |
| make_heap | Loading commit data... | |
| max | Loading commit data... | |
| max_element | Loading commit data... | |
| merge | Loading commit data... | |
| min | Loading commit data... | |
| min_element | Loading commit data... | |
| minmax | Loading commit data... | |
| minmax_element | Loading commit data... | |
| mismatch | Loading commit data... | |
| move | Loading commit data... | |
| move_backward | Loading commit data... | |
| next_permutation | Loading commit data... | |
| none_of | Loading commit data... | |
| nth_element | Loading commit data... | |
| partial_sort | Loading commit data... | |
| partial_sort_copy | Loading commit data... | |
| partition | Loading commit data... | |
| partition_copy | Loading commit data... | |
| partition_point | Loading commit data... | |
| pop_heap | Loading commit data... | |
| prev_permutation | Loading commit data... | |
| pstl | Loading commit data... | |
| push_heap | Loading commit data... | |
| random_shuffle | Loading commit data... | |
| remove | Loading commit data... | |
| remove_copy | Loading commit data... | |
| remove_copy_if | Loading commit data... | |
| remove_if | Loading commit data... | |
| replace | Loading commit data... | |
| replace_copy | Loading commit data... | |
| replace_copy_if | Loading commit data... | |
| replace_if | Loading commit data... | |
| reverse | Loading commit data... | |
| reverse_copy | Loading commit data... | |
| rotate | Loading commit data... | |
| rotate_copy | Loading commit data... | |
| sample | Loading commit data... | |
| search | Loading commit data... | |
| search_n | Loading commit data... | |
| set_difference | Loading commit data... | |
| set_intersection | Loading commit data... | |
| set_symmetric_difference | Loading commit data... | |
| set_union | Loading commit data... | |
| shuffle | Loading commit data... | |
| sort | Loading commit data... | |
| sort_heap | Loading commit data... | |
| stable_partition | Loading commit data... | |
| stable_sort | Loading commit data... | |
| swap | Loading commit data... | |
| swap_ranges | Loading commit data... | |
| transform | Loading commit data... | |
| unique | Loading commit data... | |
| unique_copy | Loading commit data... | |
| upper_bound | Loading commit data... | |
| constexpr_macro.cc | Loading commit data... | |
| cpp_lib_constexpr.cc | Loading commit data... |