Bootstrap

【C++】#include<algorithm>

一些常用的 <algorithm 函数包括:

头文件在 C++ 标准库中包含了大量的通用算法,这些算法可以应用于各种容器,如数组、向量、列表等。以下是一些 头文件中包含的主要函数(注意,这里并没有列出所有函数,因为数量相当多,而且一些函数是模板函数,可以应用于多种数据类型):

排序和搜索
std::sort:对序列进行排序。
std::stable_sort:稳定排序,即相等的元素保持原有顺序。
std::partial_sort:对序列进行部分排序。
std::nth_element:将第 n 个元素放到其最终排序位置,且该元素前(后)的元素均不大于(不小于)它。
std::binary_search:在已排序的序列中执行二分查找。
std::lower_bound 和 std::upper_bound:在已排序的序列中查找元素的插入位置。
序列操作
std::copy:复制序列中的元素到另一个位置。
std::copy_n:复制序列中的前 n 个元素到另一个位置。
std::copy_backward:从后向前复制序列中的元素。
std::move:移动序列中的元素到另一个位置。
std::swap:交换两个元素的值。
std::iter_swap:交换通过迭代器指向的两个元素的值。
std::replace:将序列中的特定元素替换为另一个元素。
std::replace_if:根据谓词将序列中的元素替换为另一个元素。
std::replace_copy:复制序列,同时替换其中的特定元素。
std::fill:用给定的值填充序列。
std::fill_n:用给定的值填充序列的前 n 个元素。
std::generate:使用给定的函数对象生成序列中的元素。
std::generate_n:使用给定的函数对象生成序列的前 n 个元素。
std::remove:从序列中“删除”特定元素(实际上是将元素移动到序列末尾并返回新逻辑末尾的位置)。
std::remove_if:根据谓词从序列中“删除”元素。
std::remove_copy:复制序列,同时“删除”其中的特定元素。
std::unique:去除序列中连续的重复元素。
std::unique_copy:复制序列,同时去除连续的重复元素。
std::rotate:旋转序列中的元素。
std::reverse:反转序列中的元素顺序。
std::reverse_copy:复制序列,同时反转元素的顺序。
std::shuffle:随机重排序列中的元素。
std::next_permutation:获取序列的下一个排列(字典序)。
std::prev_permutation:获取序列的上一个排列(字典序)。
集合操作
std::includes:检查一个序列是否是另一个序列的子序列。
std::set_union:计算两个已排序序列的并集。
std::set_intersection:计算两个已排序序列的交集。
std::set_difference:计算两个已排序序列的差集(第一个序列中存在而第二个序列中不存在的元素)。
std::set_symmetric_difference:计算两个已排序序列的对称差集(只在一个序列中存在的元素)。
查找和比较
std::find:在序列中查找特定元素。
std::find_if:根据谓词在序列中查找元素。
std::find_first_of:在序列中查找属于另一个序列的第一个元素。
std::find_end:在序列中查找另一个序列的最后一次出现。
std::adjacent_find:查找序列中相邻的重复元素或满足特定条件的相邻元素对。
std::count:统计序列中特定元素的出现次数。
std::count_if:根据谓词统计序列中满足条件的元素数量。
std::mismatch:比较两个序列,找到第一个不匹配的元素对。
std::equal:检查两个序列是否相等。
std::equal_range:在已排序的序列中查找元素的范围。
std::is_permutation:检查两个序列是否包含相同的元素,但顺序可能不同。
std::lexicographical_compare:按字典序比较两个序列。
std::min_element 和 std::max_element:查找序列中的最小(最大)元素。
std::minmax_element:同时查找序列中的最小和最大元素。

abs()  //int abs(int j);,//将返回j的绝对值。
max(x,y)  //返回两个元素中值最大的元素
min(x,y)  //返回两个元素中值最小的元素
swap(x,y)  //用来交换x和y的值

下面是一个使用 std::sort 函数对整数向量进行排序的简单示

#include <iostream>  
#include <vector>  
#include <algorithm> // 包含 algorithm 头文件  
int main() {  
    std::vector<int> numbers = {5, 3, 8, 4, 2};     
    std::sort(numbers.begin(), numbers.end()); // 对向量进行排序     
    // 输出排序后的向量  
    for (int num : numbers) {  
        std::cout << num << " ";  
    }  
    std::cout << std::endl;       
    return 0;  
}

在这个例子中,我们首先包含了 头文件,然后在 main 函数中创建了一个整数向量 numbers,并使用 std::sort 函数对其进行了排序。最后,我们遍历并输出了排序后的向量。
通过使用 头文件中的函数,你可以避免重复编写通用的算法代码,并可以利用 C++ 标准库提供的优化实现。这有助于提高代码的可读性、可维护性和性能。

在 C++ 中,for (int num : numbers) 这种语法是 C++11 引入的范围基于的 for循环(range-based for loop)。它提供了一种更简洁的方式来遍历容器(如数组、向量、列表等)中的元素,而无需使用传统的迭代器或下标访问。

每次循环迭代时,num 会被赋值为 numbers 容器中的下一个元素,直到容器中的所有元素都被访问过。

;