C++之"类模板与STL编程"

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013054770/article/details/43794251
类模板的概念
一、类模板
    能根据不同参数建立不同类型成员的类。

二、类模板语法:template <模板参数表>
                    class 类名
                    {
                        成员名;
                      };

三、类模板实例化
    1、语法:类模板名<模板参数值表>对象1,对象2,。。。,对象n;
    2、特点:模板参数值表的值为类型名,类型名可以是基本数据类型名,也可以是构造数据类型名,还可以是类类型名。
                    模板参数值表的值还可以是常数表达式。
                    模板参数值表按一一对应额顺序实例化类模板的模板参数表。
        
四、栈
    1、定义:一种先进后出FILO(First In Last Out)的结构
    2、基本操作:压栈push、出栈pop、判空、判满、读栈顶元素等

五、STL
    1、定义:标准模板库,是一个高效的C++程序库。
    2、作用:体现了泛型程序设计的思想,提倡使用现有的模板程序代码开发应用程序,是一种代码的重用技术。可以提高软件开发人员的劳动生产率和目标系统质量,是软件工程追求的重要目标

六、STL容器
    STL容器大致可以分为两类:顺序容器和关联容器。
    1、顺序容器:以逻辑线性排列方式存储一个元素序列,在这些容器类型中的对象在逻辑上被认为是在连续的存续空间中存储的。
    (1)vector:可以用常数时间访问和修改任意元素,在序列尾部进行插入和删除时,具有常数时间复杂度,对任意项的插入和删除就有的时间复杂度与到末尾的距离成正比,尤其对向量头的添加和删除的代价是惊人的高的 。
            特点:需要快速查找,不在意插入或删除的速度快慢。能使用数组的地方都能使用向量。
            头文件:<vector>
    (2)list:对任意元素的访问与对两端的距离成正比,但对某个位置上插入和删除一个项的花费为常数时间。
            特点:需要快速插入或删除,不在意查找速度。
            头文件:<list>
    (3)deque:在内存中不占有一块连续的空间,介于向量和列表之间,更接近向量,适用于有两端存取数据。可用[]运算符直接存取数据。
            特点:可以提供快速的元素存取。在序列中插或删除的速度教慢。一般不需要使用双端队列,可以转而使用vector或list。
            头文件:<deque>
    2、关联容器:提供一个关键字到值的关联映射,不存储在顺序的线性数据结构中。
        (1)set(集合)、multiset(多集):set是一个元素集合。集合中的元素按有序的方式存储。set中没有重复的元素,但是multiset中允许有重复的元素
            特点:需要使用元素集合,而且对元素的查找、插入和删除操作都较为频繁时,就可以使用set/multiset。
            头文件:<set>
        (2)map(映射)、multimap(多映射):map是{键(key),值}对的组成的集合。集合中的元素按键排列。multimap是允许键、值对有重复的集合。map和multimap的关系如何set和multiset之间的关系。
            特点:如果希望将键、与值相关联皆可以使用map/multimap。
            头文件:<map>

        

猜你喜欢

转载自blog.csdn.net/u013054770/article/details/43794251