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