C++stl库_c++库

C++stl库_c++库熟练使用STL标准库是每个C++程序员的必备技能。C++标准程序库发展至今,几乎所有内容都被设计为了模板的形式,STL已经成为C++程序库的重要组成部分。可以这么说,如果C++不支持STL标准模板库,就无法使用程序库。在大多数人看来,计算机既神秘有能干,但在程序员的眼中,计算机又蠢又笨,唯一的优点就是运算速度比人快,不给指令什么都干不了,就是给指令,计算机也不能灵活运用。比如说,在C++中,同样一个加法,不同的数据类型,要给出不同的运行代码:#include<iostrea

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

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

C++ 标准程序库发展至今,几乎所有内容都被设计为了模板的形式,STL 已经成为 C++ 程序库的重要组成部分。可以这么说,如果 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

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

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

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/184142.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • sqlserver数据库置疑_sqlserver2008数据库可疑

    sqlserver数据库置疑_sqlserver2008数据库可疑一、数据库异常我们平时在使用SQLServer时,可能会遇到以下情况:1、数据库变为置疑状态2、使用数据库文件恢复数据库时,附加的数据库显示为置疑状态3、无法附加数据库数据库置疑的原因:SQLServer所在分区空间是否够?数据库文件大小是否达到最大文件限制?FAT的格式只支持四G以内的文件  2、数据库文件损坏或被非正常删除时出现这种情况  3、病毒防火墙的扫…

    2022年8月20日
  • 常见字符集&乱码问题

    常见字符集&乱码问题字符集常用字符集分类ASCII及其扩展字符集作用:表语英语及西欧语言。位数:ASCII是用7位表示的,能表示128个字符;其扩展使用8位表示,表示256个字符。范围:ASCII从00到7F,扩展从00到FF。ISO-8859-1字符集作用:扩展ASCII,表示西欧、希腊语等。位数:8位,范围:从00到FF,兼容ASCII字符集。GB2312字符集作用:国家简体中文字符集,兼容ASCII。位数:使用2个字节表示,能表示7445个符号,包括6763个汉字,几乎覆盖所

    2022年6月1日
  • 继续脚踏实地_脚踏实地上指什么生肖

    继续脚踏实地_脚踏实地上指什么生肖也许以后确实要搞科研了,那就从现在开始,一步一个脚印的,记录自己的一点一滴。。

    2022年9月27日
  • 自适应滤波算法综述[通俗易懂]

    自适应滤波算法综述[通俗易懂]自适应滤波算法综述

    2022年6月12日
  • Python之numpy库

    NumPy库知识结构

    2021年12月19日
  • 【数据结构】链表的原理及java实现

    【数据结构】链表的原理及java实现一:单向链表基本介绍链表是一种数据结构,和数组同级。比如,Java中我们使用的ArrayList,其实现原理是数组。而LinkedList的实现原理就是链表了。链表在进行循环遍历时效率不高,但是插入和删除时优势明显。下面对单向链表做一个介绍。单向链表是一种线性表,实际上是由节点(Node)组成的,一个链表拥有不定数量的节点。其数据在内存中存储是不连续的,它存储的数据分散在内存中,每个结点只能也只有它

    2022年6月9日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号