STL迭代器适配器
7 C++常用算法
7.1 C++ sort()排序函数
7.2 C++ stable_sort()排序函数
7.3 C++ partial_sort()函数
7.4 C++ nth_element()排序函数
7.5 C++ is_sorted()函数
7.6 C++ STL标准库这么多排序函数,该如何选择?
7.7 自定义STL算法规则,应优先使用函数对象!
7.8 C++ merge()和inplace_merge()函数
7.9 C++ find()函数
7.10 能用STL算法,绝不自己实现!
7.11 STL算法和容器中的成员方法同名时,该如何选择?
7.12 C++ find_if()和find_if_not()函数
7.13 C++ find_end()函数
7.14 C++ find_first_of()函数
7.15 C++ adjacent_find()函数
7.16 C++ search()函数
7.17 C++ search_n()函数
7.18 C++ partition()和stable_partition()函数
7.19 C++ partition_copy()函数
7.20 C++ partition_point()函数
7.21 C++ lower_bound()函数
7.22 C++ upper_bound()函数
7.23 C++ equel_range()函数
7.24 C++ binary_search()函数
7.25 C++ all_of、any_of及none_of
7.26 C++ equal
7.27 C++ mismatch
7.28 C++ lexicographical_compare
7.29 C++ next_permutation
7.30 C++ prev_permutation
7.31 C++ is_permutation
7.32 C++ copy_n
7.33 C++ copy_if
7.34 C++ copy_backward
7.35 C++ reverse_copy
7.36 C++ unique
7.37 C++ rotate
7.38 C++ rotate_copy
7.39 C++ move
7.40 C++ swap_ranges
7.41 C++ remove函数
7.42 C++ fill和fill_n
7.43 C++ generate和generate_n
7.44 C++ transform
7.45 C++ replace
fill() 和 fill_n() 算法提供了一种为元素序列填入给定值的简单方式,fill() 会填充整个序列; fill_n() 则以给定的迭代器为起始位置,为指定个数的元素设置值。下面展示了 fill() 的用法:
std::vector<string> data {12}; // Container has 12 elements std::fill (std::begin (data), std::end (data), "none"); // Set all elements to "none" fill 的前两个参数是定义序列的正向迭代器,第三个参数是赋给每个元素的值。当然这个序列并不一定要代表容器的全部元素。例如:
std::deque<int> values (13); //Container has 13 elements int n{2}; // Initial element value const int step {7}; // Element value increment const size_t count{3}; // Number of elements with given value auto iter = std::begin(values); while(true) auto t0_end = std::dis tan ce(iter, std::end(values)); // Number of elements remaining if (to_end < count) //In case no. of elements not a multiple of count std:: fill (iter, iter + to_end, n); // Just fill remaining elements and end the loop break; std:: fill (iter, std:: end (values), n); // Fill next count elements iter = std::next(iter, count); // Increment iter n += step; 上面创建了具有 13 个元素的 value 容器。在这种情况下,必须用圆括号将值传给构造函数;使用花括号会生成一个有单个元素的容器,单个元素的值为 13。在循环中,fill() 算法会将 values 赋值给 count 个元素。以 iter 作为容器的开始迭代器,如果还有足够的元素剩下,每次遍历中,它会被加上 count,因此它会指向下个序列的第一个元素。执行这段代码会将 values 中的元素设置为:
2 2 2 9 9 9 16 16 16 23 23 23 30

fill_n() 的参数分别是指向被修改序列的第一个元素的正向迭代器、被修改元素的个数以及要被设置的值。distance() 和 next() 函数定义在 iterator 头文件中。前者必须使用输入迭代器,而后者需要使用正向迭代器。

关注公众号「 站长严长生 」,在手机上阅读所有教程,随时随地都能学习。内含一款搜索神器,免费下载全网书籍和视频。

微信扫码关注公众号