modernize-use-ranges¶
检测对标准库迭代器算法的调用,这些调用可以用范围版本替换。
示例¶
auto Iter1 = std::find(Items.begin(), Items.end(), 0);
auto AreSame = std::equal(Items1.cbegin(), Items1.cend(),
std::begin(Items2), std::end(Items2));
转换为
auto Iter1 = std::ranges::find(Items, 0);
auto AreSame = std::ranges::equal(Items1, Items2);
支持的算法¶
检查对以下 std 库算法的调用
std::adjacent_find
, std::all_of
, std::any_of
, std::binary_search
, std::copy_backward
, std::copy_if
, std::copy
, std::destroy
, std::equal_range
, std::equal
, std::fill
, std::find_end
, std::find_if_not
, std::find_if
, std::find
, std::for_each
, std::generate
, std::includes
, std::inplace_merge
, std::iota
, std::is_heap_until
, std::is_heap
, std::is_partitioned
, std::is_permutation
, std::is_sorted_until
, std::is_sorted
, std::lexicographical_compare
, std::lower_bound
, std::make_heap
, std::max_element
, std::merge
, std::min_element
, std::minmax_element
, std::mismatch
, std::move_backward
, std::move
, std::next_permutation
, std::none_of
, std::partial_sort_copy
, std::partition_copy
, std::partition_point
, std::partition
, std::pop_heap
, std::prev_permutation
, std::push_heap
, std::remove_copy_if
, std::remove_copy
, std::remove
, std::remove_if
, std::replace_if
, std::replace
, std::reverse_copy
, std::reverse
, std::rotate
, std::rotate_copy
, std::sample
, std::search
, std::set_difference
, std::set_intersection
, std::set_symmetric_difference
, std::set_union
, std::shift_left
, std::shift_right
, std::sort_heap
, std::sort
, std::stable_partition
, std::stable_sort
, std::transform
, std::uninitialized_copy
, std::uninitialized_default_construct
, std::uninitialized_fill
, std::uninitialized_move
, std::uninitialized_value_construct
, std::unique_copy
, std::unique
, std::upper_bound
.
反向迭代¶
如果调用使用容器上的反向迭代器,则代码将使用 std::views::reverse
适配器进行修复。
auto AreSame = std::equal(Items1.rbegin(), Items1.rend(),
std::crbegin(Items2), std::crend(Items2));
转换为
auto AreSame = std::ranges::equal(std::ranges::reverse_view(Items1),
std::ranges::reverse_view(Items2));
选项¶
- IncludeStyle¶
一个字符串,指定使用哪种包含样式,llvm 或 google。默认值为 llvm。
- UseReversePipe¶
当 true(默认 false)时,涉及反向范围的修复将使用管道适配器语法,而不是函数语法。
std::find(Items.rbegin(), Items.rend(), 0);
转换为
std::ranges::find(Items | std::views::reverse, 0);