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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SQL Server中的锁的简单学习

    SQL Server中的锁的简单学习

    2021年11月25日
    40
  • 一眼看懂map和flatmap的区别

    一眼看懂map和flatmap的区别map的作用很容易理解就是对rdd之中的元素进行逐一进行函数操作映射为另外一个rdd。flatMap的操作是将函数应用于rdd之中的每一个元素,将返回的迭代器的所有内容构成新的rdd。通常用来切分单词。Spark中map函数会对每一条输入进行指定的操作,然后为每一条输入返回一个对象;而flatMap函数则是两个操作的集合——正是“先映射后扁平化”:操作1:同map函数一样:对每一条输入进…

    2022年5月4日
    61
  • 遗传算法实例解析_遗传算法例子

    遗传算法实例解析_遗传算法例子遗传算法实例及MATLAB程序解析遗传算法GeneticAlgorithms,GA)是一种基于自然选择原理和自然遗传机制的搜索(寻优)算法,它是模拟自然界中的生命进化机制,在人工系统中实现特定目标的优化。遗传算法的实质是通过群体搜索技术,根据适者生存的原则逐代进化,最终得到最优解或准最优解。它必须做以下操作∶初始群体的产生、求每一个体的适应度、根据适者生存的原则选择优良个体、被选出的优良个体两两配对,通过随机交叉其染色体的基因并随机变异某些染色体的基因生成下一代群体,按此方法使群体逐代进化,直到满足进化

    2022年9月13日
    6
  • gis如何无缝拼接两张图_arcgis多幅影像图拼接

    gis如何无缝拼接两张图_arcgis多幅影像图拼接APAP.cpp#include”stdafx.h”#include<iostream>#include<cmath>#include”opencv2/features2d/features2d.hpp”#include”opencv2/highgui/highgui.hpp”#include”opencv2/opencv_modules.hpp”#include”opencv2/calib3d/calib3d.hpp”#include..

    2022年9月22日
    2
  • PrimeNG TreeTable异步加载子树[通俗易懂]

    PrimeNG TreeTable异步加载子树[通俗易懂]1.PrimeNG官网:https://www.primefaces.org/primeng/#/treetable2.引入TreeTableModule到自己的module.ts中3.页面中写上PrimeNG规定的p-treeTable格式,value对应后台返回的treeNode格式,field中对应的是data:item中返回的值   的名称  &lt;p-treeTable…

    2022年5月24日
    41
  • 使用jks文件为apk签名

    使用jks文件为apk签名参与的项目近期要求安全检测,apk不达标并且无法修复的话会要求使用官方加固包。加固之后的包签名会失效,所有需要重新进行签名。今天借此机会记录一下整个操作流程。原来apk是使用jks格式的签名文件来操作的,还有一种是keystore文件格式。我们先来看jks文件格式怎么操作一、jks格式操作步骤:1、基本语法jarsigner-digestalgSHA1-sigalgSHA1withRSA-verbose-keystore{签名文件}-storepass{签名密码}-signe.

    2022年6月10日
    33

发表回复

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

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