-
C++ replace,replace_if和replace_copy函数用法详细解析
所属栏目:[语言] 日期:2023-06-16 热度:9812
replace() 算法会用新的值来替换和给定值相匹配的元素。它的前两个参数是被处理序列的正向迭代器,第 3 个参数是被替换的值,第 4 个参数是新的值。下面展示了它的用法:
std::deque<int> data {10, -5, 12, -6, 10,[详细] -
C++ transform(STL transform)函数用法具体说明
所属栏目:[语言] 日期:2023-06-16 热度:9358
transform() 可以将函数应用到序列的元素上,并将这个函数返回的值保存到另一个序列中,它返回的迭代器指向输出序列所保存的最后一个元素的下一个位置。
这个算法有一个版本和 for_each() 相似,可以将一个一元函[详细] -
C++(STL)generate和generate_n函数用法分析
所属栏目:[语言] 日期:2023-06-16 热度:8107
你已经知道可以用for_each()算法将一个函数对象应用到序列中的每一个元素上。函数对象的参数是for_each()的前两个参数所指定序列中元素的引用,因此它可以直接修改被保存的值。generate()算法和它有些不同,它的前两[详细]
-
C++ fill和fill_n函数使用方法详解
所属栏目:[语言] 日期:2023-06-16 热度:5921
fill() 和 fill_n() 算法提供了一种为元素序列填入给定值的简单方式,fill() 会填充整个序列; fill_n() 则以给定的迭代器为起始位置,为指定个数的元素设置值。下面展示了 fill() 的用法:
std::vector<string> da[详细] -
C++ remove、remove_copy、remove_if和remove_copy_if函数使用简介
所属栏目:[语言] 日期:2023-06-16 热度:5472
如果不知道具体的场景,即元素保存在什么样的容器中,是不能从序列中移除元素的。因此,“移除元素的”算法也无法做到这一点,它们只会重写被选择的元素或者忽略复制的元素。移除操作不会改变被“移除[详细]
-
C++ swap_ranges(STL swap_ranges)函数使用说明
所属栏目:[语言] 日期:2023-06-16 热度:8832
可以用 swap_ranges() 算法来交换两个序列。这个算法需要 3 个正向迭代器作为参数。前两个参数分别是第一个序列的开始和结束迭代器,第三个参数是第二个序列的开始迭代器。显然,这两个序列的长度必须相同。这个算法[详细]
-
C++ move(STL move)函数使用解析
所属栏目:[语言] 日期:2023-06-15 热度:3218
move() 算法会将它的前两个输入迭代器参数指定的序列移到第三个参数定义的目的序列的开始位置,第三个参数必须是输出迭代器。这个算法返回的迭代器指向最后一个被移动到目的序列的元素的下一个位置。
这是一个移动[详细] -
C++ rotate_copy(STL rotate_copy)算法详细解说
所属栏目:[语言] 日期:2023-06-15 热度:7509
rotate_copy() 算法会在新序列中生成一个序列的旋转副本,并保持原序列不变。rotate_copy() 的前 3 个参数和 copy() 是相同的;第 4 个参数是一个输出迭代器,它指向目的序列的第一个元素。这个算法会返回一个目的序[详细]
-
C++ rotate(STL rotate)算法详解
所属栏目:[语言] 日期:2023-06-15 热度:2148
为了理解如何旋转序列,可以将序列中的元素想象成手镯上的珠子。rotate() 操作会导致一个新元素成为开始迭代器所指向的第一个元素。在旋转之后,最后一个元素会在新的第一个元素之前。
rotate() 的第一个参数是这[详细] -
C++ unique(STL unique)算法具体说明
所属栏目:[语言] 日期:2023-06-15 热度:1442
unique() 算法可以在序列中原地移除重复的元素,这就要求被处理的序列必须是正向迭代器所指定的。在移除重复元素后,它会返回一个正向迭代器作为新序列的结束迭代器。可以提供一个函数对象作为可选的第三个参数,这个[详细]
-
C++ reverse_copy(STL reverse_copy)算法分析
所属栏目:[语言] 日期:2023-06-15 热度:7247
reverse_copy() 算法可以将源序列复制到目的序列中,目的序列中的元素是逆序的。定义源序列的前两个迭代器参数必须是双向迭代器。目的序列由第三个参数指定,它是目的序列的开始迭代器,也是一个输出迭代器。如果序列[详细]
-
C++ copy_if(STL copy_if)算法具体介绍
所属栏目:[语言] 日期:2023-06-15 热度:8859
copy_if() 算法可以从源序列复制使谓词返回 true 的元素,所以可以把它看作一个过滤器。前两个参数定义源序列的输入迭代器,第三个参数是指向目的序列的第一个位置的输出迭代器,第 4 个参数是一个谓词。会返回一个输[详细]
-
C++ copy_n(STL copy_n)算法具体说明
所属栏目:[语言] 日期:2023-06-15 热度:691
copy_n() 算法可以从源容器复制指定个数的元素到目的容器中。第一个参数是指向第一个源元素的输入迭代器,第二个参数是需要复制的元素的个数,第三个参数是指向目的容器的第一个位置的迭代器。这个算法会返回一个指向[详细]
-
C++ prev_permutation(STL prev_permutation)算法详细介绍
所属栏目:[语言] 日期:2023-06-15 热度:6193
next_permutation() 是按照字典升序的方式生成的排列。当我们想以降序的方式生成排列时,可以使用 prev_permutation()。
prev_permutation 和 next_permutation() 一样有两个版本,默认使用 < 来比较元素。因为排[详细] -
C++ next_permutation(STL next_permutation)i计算方法详解
所属栏目:[语言] 日期:2023-06-15 热度:921
排列就是一次对对象序列或值序列的重新排列。例如,“ABC”中字符可能的排列是:
"ABC", "ACB", "BAC", "BCA", "CAB", "CBA"
三个不同的字符有 6 种排列,这个数字是从 3*2*1 得到的。一般来说,n 个不[详细] -
C++ mismatch(STL mismatch)算法分析
所属栏目:[语言] 日期:2023-06-15 热度:6240
两个字符串的字母排序是通过从第一个字符开始比较对应字符得到的。第一对不同的对应字符决定了哪个字符串排在首位。字符串的顺序就是不同字符的顺序。如果字符串的长度相同,而且所有的字符都相等,那么这些字符串就[详细]
-
C++ search_n()函数用法(非常详细)
所属栏目:[语言] 日期:2023-06-13 热度:3143
《C++ search()函数》一节中,已经详细介绍了 search() 函数的功能和用法。在此基础上,本节再介绍一个功能类似的函数,即 search_n() 函数。
和 search() 一样,search_n() 函数也定义在<algorithm>头文件中,用[详细] -
C++ search()函数用法完整指南
所属栏目:[语言] 日期:2023-06-13 热度:3100
通过《C++ find_end()函数》一节的讲解我们知道,find_end() 函数用于在序列 A 中查找序列 B 最后一次出现的位置。那么,如果想知道序列 B 在序列 A 中第一次出现的位置,该如何实现呢?可以借助 search() 函数。[详细]
-
C++ adjacent_find()函数使用方法详解
所属栏目:[语言] 日期:2023-06-13 热度:5238
adjacent_find() 函数用于在指定范围内查找 2 个连续相等的元素。该函数的语法格式为:
//查找 2 个连续相等的元素
ForwardIterator adjacent_find (ForwardIterator first, ForwardIterator last);
//查找 2 个连[详细] -
C++ find_first_of()函数全套步骤
所属栏目:[语言] 日期:2023-06-13 热度:9240
在某些情境中,我们可能需要在 A 序列中查找和 B 序列中任意元素相匹配的第一个元素,这时就可以使用 find_first_of() 函数。
仅仅用一句话概述 find_first_of() 函数的功能,读者可能并不理解。别急,下面我们将[详细] -
C++ find_end()函数详细说明
所属栏目:[语言] 日期:2023-06-13 热度:9764
find_end() 函数定义在<algorithm>头文件中,常用于在序列 A 中查找序列 B 最后一次出现的位置。例如,有如下 2 个序列:
序列 A:1,2,3,4,5,1,2,3,4,5
序列 B:1,2,3
通过观察不难发现,序列 B 在序列 A 中出现[详细] -
C++ find_if()与find_if_not()函数用法详解
所属栏目:[语言] 日期:2023-06-13 热度:1209
继《C++ find()函数》一节后,本节再讲解 2 个和 find() 功能类似的函数,分别为 find_if() 函数和 find_if_not() 函数。
值得一提的是,find_if() 和 find_if_not() 函数都定义在<algorithm>头文件中。因此在使用[详细] -
C++ find()函数用法详解(超级具体)
所属栏目:[语言] 日期:2023-06-13 热度:1720
find() 函数本质上是一个模板函数,用于在指定范围内查找和目标元素值相等的第一个元素。
如下为 find() 函数的语法格式:
InputIterator find (InputIterator first, InputIterator last, const T& val);
其[详细] -
C++ merge()和inplace_merge()函数用法(具体解说版)
所属栏目:[语言] 日期:2023-06-13 热度:267
有些场景中,我们需要将 2 个有序序列合并为 1 个有序序列,这时就可以借助 merge() 或者 inplace_merge() 函数实现。
值得一提的是,merge() 和 inplace_merge() 函数都定义在<algorithm>头文件中,因此在使用它[详细] -
C++ is_sorted()函数完整攻略
所属栏目:[语言] 日期:2023-06-13 热度:1375
我们知道,排序操作是比较耗费时间的,尤其当数据量很大的时候。因此在设计程序时,我们应该有意识的去避免执行一些不必要的排序操作。
那么,何谓不必要的排序操作呢?举个例子,有这样一组数据:
1 2 3 4 5[详细]