STL库学习笔记(一)——什么是STL?

小明是一个很牛逼的程序员,在国际标准化组织工做。程序员

他如今正在设计新一代的C++标准,标准中有一个待实现的函数:findMax(),这个函数要求使用者输入任何类型的数据,他都能找到最大的一个。算法

因而他想到了这个:编程

int findMax(int a,int b){
    if(a>b){
        return a;
    }
    else{
        return b;
    }
}
char findMax(char a,char b){
    if(a>b){
        return a;
    }
    else{
        return b;
    }
}

这种写法成功的解决了问题,可小明仍是不满意:数据结构

1.有太多冗余的代码,写出来的头文件又大又low,全世界的开发者都要骂娘函数

2.又太多的数据结构须要兼容,还有世界各地的开发者整出来的奇形怪状的数据结构,不能知足标准库的要求测试

它更换了一种写法:spa

template <class T>
T findMax(T a,T b){
    if(a>b){
        return a;
    }
    else{
        return b;
    }
}

看起来好奇怪!它能运行吗?设计

让咱们测试一下:code

int main(){
    cout<<"findMax(1,3):"<<findMax(1,3)<<endl;
    cout<<"findMax('A','a'):"<<findMax('A','a')<<endl;
}

 

运行的十分正常,这段函数成功了!此时传入函数的参数,只要可以用“>”运算符来比较,就可以运行。好比int类型,函数会返回大的值,char类型,函数会返回ASCII码靠后的值。这称为泛型编程(Generic Programming),用人话来讲就是用相同的方法处理不一样的结构,而支撑这个思想的语法就成为模板(template)。整个STL标准模板库就是使用template来实现的,他把教科书上的各类数据结构,好比链表啦,队列啦,栈啦,都封装到一块儿,供咱们调(tou)用(lan),再配合它的algorithm算法库,连排序,二分查找都不用本身写啦!blog

相关文章
相关标签/搜索