STL,一个基础但极为强大的 C++ 库!

嗨,大家好!我是一行。今天咱们要学习超厉害的 STL,它就像一个万能工具箱,里面有各种各样好用的工具,能让咱 C++编程更高效、更方便。快来一起探索这个基础又强大的库吧!

一、STL 中的容器:存储数据的好帮手STL 里的容器就像是不同形状的盒子,用来装各种数据。先说说 vector 容器,它就像一个可以伸缩的数组。

#include <iostream>
#include <vector>

int main() {
    // 创建一个 vector 容器,用来装整数
    std::vector<int> myVector; 
    // 往容器里添加元素,就像往盒子里放东西
    myVector.push_back(5); 
    myVector.push_back(10); 

    // 访问容器里的元素
    std::cout << "第一个元素是: " << myVector[0] << std::endl; 

    return 0;
}

运行结果就会输出第一个元素 5。小贴士:vector 会自动管理内存,当元素增多时它会自动扩容,但扩容可能会有一些性能开销哦。

再看看 list 容器,它像一条链,每个元素在内存里不是连续存放的。

#include <iostream>
#include <list>

int main() {
    std::list<int> myList; 
    myList.push_back(3); 
    myList.push_back(7); 

    // 遍历 list 容器
    for (auto it = myList.begin(); it!= myList.end(); it++) {
        std::cout << *it << " "; 
    }
    std::cout << std::endl; 

    return 0;
}

这个代码会输出 3 7。这里用迭代器 it 来遍历 list,这是访问 list 元素的常用方法。

二、STL 中的算法:数据处理专家STL 里有很多算法,就像一个个小工匠,能对容器里的数据进行加工。比如 sort 算法可以给容器里的数据排序。

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

int main() {
    std::vector<int> numbers = {10, 5, 8, 2, 7}; 
    // 使用 sort 算法给 vector 排序
    std::sort(numbers.begin(), numbers.end()); 

    for (int num : numbers) {
        std::cout << num << " "; 
    }
    std::cout << std::endl; 

    return 0;
}

运行后会输出 2 5 7 8 10。小贴士:sort 算法默认是升序排序,如果想降序排序,可以自己写一个比较函数传给 sort

还有 find 算法,能在容器里找特定的元素。

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

int main() {
    std::vector<int> values = {4, 9, 6, 3, 9}; 
    // 找值为 9 的元素
    auto it = std::find(values.begin(), values.end(), 9); 
    if (it!= values.end()) {
        std::cout << "找到了 9" << std::endl; 
    } else {
        std::cout << "没找到 9" << std::endl; 
    }

    return 0;
}

三、STL 的实际应用场景假如我们要处理学生的成绩数据。可以用 vector 容器来存储成绩,然后用 sort 算法对成绩排序,找出最高分、最低分等。

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

int main() {
    std::vector<int> scores = {85, 92, 78, 65, 95}; 
    std::vector<int> scoresCopy = scores;  // 先复制一份数据

    std::sort(scores.begin(), scores.end()); 

    std::cout << "最高分是: " << scores.back() << std::endl; 
    std::cout << "最低分是: " << scores.front() << std::endl; 

    // 用 find 算法找特定成绩
    auto it = std::find(scoresCopy.begin(), scoresCopy.end(), 92); 
    if (it!= scoresCopy.end()) {
        std::cout << "92 分的成绩在第 " << std::distance(scoresCopy.begin(), it) + 1 << " 个位置" << std::endl; 
    }

    return 0;
}

今天的 C++学习之旅就到这里啦!记得动手敲代码。祝大家学习愉快,C++学习节节高!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值