C++ 的标准模板库(STL)常用算法介绍

C++ 的标准模板库(STL)提供了丰富的算法,用于对容器中的元素进行各种操作和处理。下面我将介绍几个常用的 STL 算法,并为每个算法提供一个简单的示例来说明其基本用法。

1. std::for_each(遍历)

复制代码
#include <iostream>
#include <algorithm>
#include <vector>

void print(int i) {
    std::cout << i << " ";
}

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

    // 使用 for_each 算法遍历输出容器中的元素
    std::for_each(vec.begin(), vec.end(), print);

    return 0;
}

2. std::transform(转换)

复制代码
#include <iostream>
#include <algorithm>
#include <vector>

int square(int i) {
    return i * i;
}

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

    // 使用 transform 算法对容器中的元素进行转换
    std::transform(vec.begin(), vec.end(), std::back_inserter(result), square);

    // 输出转换后的元素
    for (int i : result) {
        std::cout << i << " ";
    }

    return 0;
}

3. std::sort(排序)

复制代码
#include <iostream>
#include <algorithm>
#include <vector>

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

    // 使用 sort 算法对容器中的元素进行排序
    std::sort(vec.begin(), vec.end());

    // 输出排序后的元素
    for (int i : vec) {
        std::cout << i << " ";
    }

    return 0;
}

4. std::accumulate(累加)

复制代码
#include <iostream>
#include <numeric>
#include <vector>

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

    // 使用 accumulate 算法对容器中的元素进行累加
    int sum = std::accumulate(vec.begin(), vec.end(), 0);

    std::cout << "Sum: " << sum << std::endl;

    return 0;
}

通过这些简单的示例,你可以了解到如何使用 C++ STL 中的一些常用算法(for_each、transform、sort、accumulate),并对容器中的元素进行遍历、转换、排序和累加等操作。希望这些示例能帮助你更好地理解 STL 算法的使用。

相关推荐
楼田莉子11 分钟前
C++学习:C++11介绍及其新特性学习
开发语言·c++·学习·stl·visual studio
不枯石40 分钟前
Matlab通过GUI实现点云的随机一致性(RANSAC)配准
开发语言·图像处理·算法·计算机视觉·matlab
牛马的人生44 分钟前
MATLAB模块库入门:提升你的工程分析效率
开发语言·其他·matlab
WWZZ20252 小时前
ORB_SLAM2原理及代码解析:Tracking::CreateInitialMapMonocular() 函数
人工智能·opencv·算法·计算机视觉·机器人·slam·感知
WWZZ20252 小时前
ORB_SLAM2原理及代码解析:Tracking::MonocularInitialization() 函数
人工智能·opencv·算法·计算机视觉·机器人·感知·单目相机
光电笑映3 小时前
C++list全解析
c语言·开发语言·数据结构·c++·list
恋猫de小郭3 小时前
Fluttercon EU 2025 :Let‘s go far with Flutter
android·开发语言·flutter·ios·golang
L_09073 小时前
【Algorithm】双指针算法与滑动窗口算法
c++·算法
小龙报4 小时前
《构建模块化思维---函数(下)》
c语言·开发语言·c++·算法·visualstudio·学习方法
奔跑吧邓邓子4 小时前
【C++实战(63)】C++ 网络编程实战:UDP客户端与服务端的奥秘之旅
网络·c++·udp·实战·客户端·服务端