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 算法的使用。

相关推荐
森G8 分钟前
64、完善聊天室程序(TLV拓展)---------网络编程
网络·c++·tcp/ip
超皮小龙猫9 分钟前
c语言-1
c语言·开发语言
渡众机器人14 分钟前
第八届全球校园人工智能算法精英大赛-算法应用赛-渡众机器人智能体对抗挑战赛规则
人工智能·算法·机器人·自动驾驶·自主导航·对抗赛
郝学胜-神的一滴1 小时前
完全二叉树与堆底层原理深度剖析 | 手写C++大顶堆实现
java·开发语言·数据结构·c++·python·算法
青山木1 小时前
Hot 100 --- 缺失的第一个正数
算法·leetcode·哈希算法
农民小飞侠1 小时前
[leetcode] 165. Compare Version Numbers
java·算法·leetcode
装不满的克莱因瓶1 小时前
掌握语义分割经典模型 FCN——从像素分类到端到端分割的奠基之作
人工智能·python·深度学习·算法·机器学习·分类·数据挖掘
黄毛火烧雪下1 小时前
Java 基础笔记:文件、递归与字符编码
java·开发语言·笔记
学计算机的计算基1 小时前
链表算法上篇:LeetCode 206/234/141/142/160/21 题解与易错点
java·笔记·算法·链表
大白话_NOI1 小时前
【洛谷 P2678】 [NOIP2015 提高组] 跳石头 超详细题解
c++·算法