「C/C++」C++ 标准库之#include<algorithm>算法库

时间:2024-10-25 21:50:14

在这里插入图片描述

✨博客主页
何曾参静谧的博客
????文章专栏
「C/C++」C/C++程序设计
????全部专栏
「VS」Visual Studio 「C/C++」C/C++程序设计 「UG/NX」BlockUI集合
「Win」Windows程序设计 「DSA」数据结构与算法 「UG/NX」NX二次开发
「QT」QT5程序设计 「File」数据文件格式 「PK」Parasolid函数说明

目录

    • std::algorithm库深度解析
      • 引言
      • 一、遍历算法
      • 二、查找算法
      • 三、复制算法
      • 四、交换算法
      • 五、变换算法
      • 六、排序算法
      • 七、集合算法
      • 八、移除算法
      • 结论

std::algorithm库深度解析

引言

std::algorithm是C++标准库的核心组成部分,它封装了一系列高效、通用的非成员函数模板,用于对容器中的元素执行各种操作。这些算法不仅简化了编程工作,还提高了代码的可读性和可维护性。本文将详细探讨std::algorithm库中的遍历、查找、复制、交换、变换、排序、集合和移除算法,并通过具体的代码实例来展示它们的应用。

一、遍历算法

在这里插入图片描述

遍历算法用于遍历容器中的元素,但通常不直接修改它们。std::for_eachstd::algorithm库中提供的遍历算法之一。

代码实例

std::for_each遍历容器

#include <iostream>
#include <vector>
#include <algorithm>

void print(int n) 
{
   
	std::cout << n << ' ';
}

//函数对象
class print02 
{
   
 public:
	void operator()(int val) 
	{
   
		std::cout << val << " ";
	}
};

int main() {
   
    std::vector<int> vec = {
   1, 2, 3, 4, 5};
    // lambda表达式形式输出
    std::for_each(vec.begin(), vec.end(), [](const int& n) {
   
        std::cout << n << ' ';
    });
	std::cout << std::endl;
	
	// 普通函数函数形式遍历
    std::for_each(vec.begin(), vec.end(), print);
    std::cout << std::endl;

	// 函数对象形式遍历
	std::for_each(vec.begin(), vec.end(), print02());
    std::cout << std::endl; 
	
	// 输出:1 2 3 4 5
	// 输出:1 2 3 4 5
	// 输出:1 2 3 4 5
    return 0;
}

二、查找算法

在这里插入图片描述

查找算法用于在容器中查找满足特定条件的元素。std::findstd::find_ifstd::find_if_not是常见的查找算法。

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
   
    std::vector<int> vec = {
   1, 2, 2, 3, 4, 5};

    // std::find 查找值为3的元素
    auto it1 = std::find(vec.begin(), vec.end(), 3);
    if (it1 != vec.end()) {
   
        std::cout << "Found 3 at position: " << std::distance(vec.begin(), it1) << std::endl;
    }

    // std::find_if 条件查找第一个大于3的元素
    auto it2 = std::find_if(vec.begin(), vec.end(), [](int n) {
    return n > 3; });
    if (it2 != vec.end()) {
   
        std::cout << "Found first element g