找回密码
 register

QQ登录

只需一步,快速开始

查看: 14|回复: 0

[C++] 熟练使用STL标准库是每个C++程序员的必备技能!

[复制链接]

[C++] 熟练使用STL标准库是每个C++程序员的必备技能!

[复制链接]
  • 打卡等级:热心大叔
  • 打卡总天数:215
  • 打卡月天数:14
  • 打卡总奖励:213
  • 最近打卡:2025-06-14 16:42:29
Waylee

主题

0

回帖

2万

积分

仙帝

积分
22663
Waylee 2025-6-13 21:48 | 显示全部楼层 |阅读模式 | Google Chrome | Windows 10

马上注册,查看网站隐藏内容!!

您需要 登录 才可以下载或查看,没有账号?register

×

为什么C++要引入STL?

C++标准程序库发展至今,几乎所有内容都被设计为了模板的形式,STL已经成为C++程序库的重要组成部分。可以这么说,如果C++不支持STL标准模板库,就无法使用程序库。那么,C++为什么要引入STL呢?


在大多数人看来,计算机既神秘又能干,但在程序员的眼中,计算机又蠢又笨,唯一的优点就是运算速度比人快,不给指令什么都干不了,就是给指令,计算机也不能灵活运用。

比如说,在C++中,同样一个加法,不同的数据类型,要给出不同的运行代码:

#include <iostream>
using namespace std;

// 处理整形之间的加法
int addInt(int m, int n) {
    return m + n;
}

// 处理浮点类型值之间的加法
double addDouble(double i, double j) {
    return i + j;
}

// ......
int main() {
    cout << addInt(1, 2) << endl << addDouble(1.2, 2.1);
    return 0;
}

运行结果为:

3
3.3

像这样,对于每一种数据类型,我们都必须给计算机设计一个单独的函数,实在太繁琐了。由此可以感受到,计算机并不具备人类的基本思维,处理问题不灵活。


为了让计算机不断接近人类的认知能力,科学家们想了很多办法,比如使用面向对象开发技术,通过类的封装和函数重载,可以部分解决上面的问题:

#include <iostream>
using namespace std;

class calc {
public:
    // 处理整形之间的加法
    int add(int m, int n) {
        return m + n;
    }
    // 处理浮点类型值之间的加法
    double add(double i, double j) {
        return i + j;
    }
    // ......
};

int main() {
    calc a;
    cout << a.add(1, 2) << endl << a.add(1.2, 2.1);
    return 0;
}

运行结果为:

3
3.3

有关C++函数重载,可阅读《C++函数重载详解》一节。

创建这样的类之后,当通过类对象调用add方法时,就无需考虑参数的具体数据类型了。但从某种程序上来说,这也仅是让计算机聪明了一点点。


为了让程序更加智能、人性化,经过科学家们持续的努力,C++引入了模板这个功能。模板可以认为是针对一个或多个尚未明确的类型而编写的一个个函数,是C++的一个新特性。

通过引入模板,C++引申出了泛型编程技术。简单的理解泛型编程,即使用该技术编写的代码,可以支持多种数据类型。也就是说,通过泛型编程,能编写出可重复利用的程序代码,并且其运行效率和针对某特定数据类型而设计的代码相同。由此可见,C++很需要泛型这种新的编程模式,可以减轻编程的工作量,增强代码的重用性。

有关泛型及泛型编程,读者可阅读《泛型是什么,C++泛型编程又是什么?》一文做详细了解。


在C++支持模板功能,引入了泛型编程思想的基础上,C++程序员们想编写出很多通用的针对不同数据类型的算法,其中STL脱颖而出成为C++标准,并被引入C++标准程序库。

STL是一个具有高度可用性、高效的模板库,该库包含了诸多在计算机科学领域中常用的基础数据结构和算法,掌握了STL标准,很多功能就无需自己费心费力的去实现了(不用重复的造轮子),直接拿来用即可。

总的来说,STL模板库是C++标准程序库的重要组成部分,为C++程序员提供了大量的可扩展的程序框架,高度实现了代码的可重用性,并且它是内置的,不需要额外安装,使用非常方便。

您需要登录后才可以回帖 登录 | register

本版积分规则

雪舞知识库 | 浙ICP备15015590号-1 | 萌ICP备20232229号|浙公网安备33048102000118号 |网站地图|天天打卡

GMT+8, 2025-6-14 18:17 , Processed in 0.099370 second(s), 5 queries , Redis On.

Powered by XueWu Licensed

Copyright © Tencent Cloud.

快速回复 返回顶部 返回列表