C++ 算法 partial_sort_copy()2024年8月30日 | 5分钟阅读 C++ 算法 partial_sort_copy() 函数类似于 partial_sort() 函数,用于重新排列范围 [first, last) 中的元素,使得 first 和 middle 之间的元素已排序,而 middle 和 last 之间的元素保持未指定顺序。但 partial_sort_copy() 函数将结果放入新的范围 [result_first, result_last) 中。 第一个版本使用运算符 < 比较元素,第二个版本使用 comp 比较元素。 语法参数first:一个输入迭代器,指向要部分排序的源范围中的第一个元素。 last:一个随机访问迭代器,指向要部分排序的源范围中最后一个元素的后一个位置。 result_first:一个随机访问迭代器,指向已排序目标范围中的第一个元素。 result_last:一个随机访问迭代器,指向已排序目标范围中最后一个元素的后一个位置。 comp:一个用户定义的二元谓词函数,接受两个参数,如果这两个参数有序则返回true,否则返回false。它遵循严格的弱排序来对元素进行排序。 返回值它返回一个迭代器,指向结果序列中写入的最后一个元素之后的元素。 复杂度平均复杂度小于 first 和 last 之间距离的对数线性。执行多达 N*log (min (N, M)) 次元素比较,其中 N = last - first,M = middle - first。 数据竞争范围 [first, last) 中的对象会被更改。 异常如果任何元素比较、元素交换(或移动)或迭代器操作抛出异常,此函数将抛出异常。 请注意,无效参数会导致未定义行为。示例 1让我们看一个简单的例子来演示 partial_sort_copy() 的用法 输出 myvector contains: 1 2 3 4 5 示例 2让我们看另一个默认版本的简单示例 输出 Before calling partial_sort_copy Numbers { 4 10 70 30 10 69 96 7 } After calling partial_sort_copy Numbers { 4 10 70 30 10 69 96 7 } Result { 4 7 10 10 } 示例 3让我们看一个自定义(谓词)版本的简单示例 输出 Before calling partial_sort_copy Numbers { 4 10 70 30 10 69 96 7 } After calling partial_sort_copy Numbers { 4 10 70 30 10 69 96 7 } Result { 4 7 10 10 } 示例 4让我们看另一个例子 输出 v0 : 4 2 5 1 3 v1 : 10 11 12 v2 : 10 11 12 13 14 15 16 Writing v0 to v1 in ascending order gives: 1 2 3 Writing v0 to v2 in descending order gives: 5 4 3 2 1 15 16 下一主题C++ 算法 |
C++ 算法函数 count_if() C++ 算法 count_if() 函数有一个 'pred' 值,并返回范围 [first, last) 中 pred 值为 true 的元素的数量。语法模板 <class InputIterator, class UnaryPredicate> typename iterator_traits<InputIterator>::difference_type count_if(InputIterator first, InputIterator last,UnaryPredicate pred); 参数 first: 它是一个输入迭代器...
阅读1分钟
C++ 算法 is_sorted() C++ 算法 is_sorted() 函数返回 true,如果范围 [first, last) 中的元素按升序排序。第一个版本使用运算符 < 比较元素,第二个版本使用 comp 比较元素。语法默认 (1) 模板 <class ForwardIterator> ...
阅读 4 分钟
C++ 算法函数 find_first_of() C++ 算法 find_first_of() 函数比较两个容器 [first1, last1) 和 [first2, last2) 中存储的值。如果在 [first1, last1) 中找到与 [first2, last2) 范围中元素相似的元素,则返回指向该元素的迭代器...
阅读 2 分钟
C++ 算法 is_partitioned() C++ 算法 is_partitioned() 用于测试范围 [first, last) 是否根据谓词进行了分区。换句话说,范围中所有满足谓词的元素都在序列的开头。如果范围为空...
阅读 4 分钟
C++ 算法 generate() C++ 算法 generate() 函数用于将函数对象生成的值赋给范围中的每个元素。生成器函数由用户定义,并连续调用以赋值数字。语法模板 <class ForwardIterator, class Generator> void...
阅读 4 分钟
C++ 算法函数 copy_n() C++ 算法 copy_n() 函数指定要复制到新容器中的元素数量。该函数用于将容器 [first,last) 的 n 个元素复制到从 result 开始的不同容器中。语法模板<class InputIterator, class Size, class OutputIterator> OutputIterator copy_n(InputIterator first, Size...
阅读1分钟
C++ 算法 transform() C++ 算法 transform() 函数以两种不同的方式使用: 1. 一元操作:- 此方法对范围 [first1, last1] 中的元素执行一元操作 op,并将结果存储在从 result 开始的范围中。此 transform() 将函数应用于范围的每个元素: 2. 二元...
5 分钟阅读
C++ 算法 replace_copy() C++ 算法 replace_copy() 函数用于复制范围 [first, last),并将所有 old_value 替换为 new_value。它使用运算符= 进行复制,并使用运算符== 比较元素。此函数检查每个元素...
5 分钟阅读
C++ 算法 remove_copy_if() C++ 算法 remove_copy_if() 函数用于将范围 [first, last) 中的所有元素复制到从 result 开始的范围,除了那些 pred 返回 true 的元素,而不扰乱剩余元素的顺序。此函数无法更改...
阅读 6 分钟
C++ 算法 replace_copy_if() C++ 算法 replace_copy_if() 函数用于将范围 [first, last) 复制到从 result 开始的范围,将那些 pred 返回 true 的元素替换为 new_value。它使用谓词 pred 而不是运算符== 比较元素。此函数检查每个...
阅读 8 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India