zoukankan      html  css  js  c++  java
  • C++标准模板库(STL)简介及应用

    • STL标准模板库基本介绍

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

    • STL与C++的关系

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

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

    • 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

     

  • 相关阅读:
    微信分享功能开发代码整理
    js 完美兼容浏览器的复制功能
    linux 搭建svn服务器
    zendStudio安装Xdebug项目断点调试
    程序员开发常用英语词汇
    简单的一个远传采集并下载远传图片存储到本地示例
    form表单中经常用到的禁用获取值问题
    记录下url拼接的多条件筛选js
    better-scroll在vue中的使用
    移动端适配,引入lib-flexible,vue开发中将px转化为rem
  • 原文地址:https://www.cnblogs.com/baobaotql/p/13423436.html
Copyright © 2011-2022 走看看