boost-use-ranges¶
检测调用标准库迭代器算法,这些算法可以用 Boost 范围版本代替。
示例¶
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 = boost::range::find(Items, 0);
auto AreSame = boost::range::equal(Items1, Items2);
支持的算法¶
检查对以下 std 库算法的调用
std::accumulate
, std::adjacent_difference
, std::adjacent_find
, std::all_of
, std::any_of
, std::binary_search
, std::copy_backward
, std::copy_if
, std::copy
, std::count_if
, std::count
, std::equal_range
, std::equal
, std::fill
, std::find_end
, std::find_first_of
, std::find_if_not
, std::find_if
, std::find
, std::for_each
, std::generate
, std::includes
, std::iota
, 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::mismatch
, std::next_permutation
, std::none_of
, std::parital_sum
, std::partial_sort_copy
, std::partition_copy
, std::partition_point
, std::partition
, std::pop_heap
, std::prev_permutation
, std::push_heap
, std::random_shuffle
, std::reduce
, std::remove_copy_if
, std::remove_copy
, std::remove_if
, std::remove
, std::replace_copy_if
, std::replace_copy
, std::replace_if
, std::replace
, std::reverse_copy
, std::reverse
, std::search
, std::set_difference
, std::set_intersection
, std::set_symmetric_difference
, std::set_union
, std::sort_heap
, std::sort
, std::stable_partition
, std::stable_sort
, std::transform
, std::unique_copy
, std::unique
, std::upper_bound
.
检查还将查找以下来自 boost::algorithm
命名空间的函数
all_of_equal
, any_of_equal
, any_of
, apply_permutation
, apply_reverse_permutation
, clamp_range
, copy_if_until
, copy_if_while
, copy_if
, copy_until
, copy_while
, find_backward
, find_if_backward
, find_if_not_backward
, find_if_not
, find_not_backward
, hex_lower
, hex
, iota
, all_of
, is_decreasing
, is_increasing
, is_palindrome
, is_partitioned_until
, is_partitioned
, is_permutation
, is_sorted_until
, is_sorted
, is_strictly_decreasing
, is_strictly_increasing
, none_of_equal
, none_of
, one_of_equal
, one_of
, partition_copy
, partition_point
, reduce
, unhex
.
反向迭代¶
如果调用使用容器上的反向迭代器,则代码将使用 boost::adaptors::reverse
适配器进行修复。
auto AreSame = std::equal(Items1.rbegin(), Items1.rend(),
std::crbegin(Items2), std::crend(Items2));
转换为
auto AreSame = boost::range::equal(boost::adaptors::reverse(Items1),
boost::adaptors::reverse(Items2));
选项¶
- IncludeStyle¶
一个字符串,指定使用哪个包含样式,llvm 或 google。默认值为 llvm。
- IncludeBoostSystem¶
如果为 true(默认值),则 Boost 头文件将作为系统头文件使用尖括号包含 (#include <boost.hpp>),否则使用引号 (#include “boost.hpp”)。
- UseReversePipe¶
当为 true(默认值 false)时,涉及反向范围的修复将使用管道适配器语法,而不是函数语法。
std::find(Items.rbegin(), Items.rend(), 0);
转换为
boost::range::find(Items | boost::adaptors::reversed, 0);