C++标准模板库(STL)简介及应用

  • STL标准模板库基本介绍

C++ STL(标准模板库)是惠普实验室开发的一系列软件的统称,是一套功能强大的 C++ 模板类。STL的目的是为了标准化组件,这样就不用重新开发,让后来者可以使用现成的组件,和开源组件有点殊途同归。 STL的版本很多,常见的有HP STL、PJ STL、 SGI STL等,另外,STL库属于C++标准库的一部分,两者是包含关系。

  • STL与C++的关系

C++标准模板库(STL)简介及应用

STL主要包含六大组件,每个组件负责不一样的功能,也涉及到不一样的知识点,其中属容器和算法最为主要,其他组件起到牵线 搭桥的作用,让算法和容器能够融合的更好,更方便使用。

六大组件的交互关系:container(容器) 通过 allocator(配置器) 取得数据储存空间,algorithm(算法)通过 iterator(迭代器)存取 container(容器) 内容,functor(仿函数) 可以协助 algorithm(算法) 完成不同的策略变化,adapter(配接器) 可以修饰或套接 functor(仿函数)。

C++标准模板库(STL)简介及应用

  • STL使用

在程序中用到堆、栈、队列、链表等一些基本的算法,而你又实在不想自己去实现数据结构教科书中那些繁琐的算法,那么你就可以考虑使用STL。STL作为一种标准,便于交流,掌握它,一方面可以让你写的程序,易于让别人理解,另一方面你也能够比较容易地理解别人写的程序。

  • 容器
    • string
    • vector
    • list
    • set / multiset
    • map / multimap
    • stack queue /
    • priority_queue pair
    • STL 算法 <algorithm> sort等
    • 迭代器 iterator 、reverse_iterator
    • 注意点
      • 1.添加相应的头文件(如 #include <list> )( 注意,没有 .h )
      • 2.添加std命名空间(用 using namespace std; )
      • 3.赋予模板具体的使用类型(如 typedef list<string> LISTSTR; )
      • 4.实例化模板(如 LISTSTR test; )
      • 5.实例化游标(如 LISTSTR::iterator i; )
      • 6.通过迭代器对象访问模板对象,例如
      • // 逐个输出链表test中的元素

            for ( i =  test.begin(); i != test.end(); ++i )

                    cout << *i << " ";

  • 常用函数
    •  assign()       赋值
    •  empty()       容器为空则返回非0值
    •  erase()         删除指定位置或指定范围内的元素
    •  push_front()      从容器头部插入元素 
    •  push_back()      从容器尾部插入元素
    •  pop_front()       删除第一个元素
    •  pop_back()       删除最后一个元素
    •  back()               返回最后一个元素的引用
    •   front()              返回第一个元素的引用
    •  begin()              返回指向第一个元素的游标 (与迭代器配合使用)
    •  end()                 返回指向最后一个元素的后一个位置的游标 (最后1个元素再加1) (与迭代器配合使用)

 

简单易懂的实例应用在本人github:https://github.com/baobaotql/CCNU_Algorithm/tree/master/PAT/STL

 

原文链接: https://www.cnblogs.com/baobaotql/p/13423436.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C++标准模板库(STL)简介及应用

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/201003

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 下午8:39
下一篇 2023年2月12日 下午8:39

相关推荐