STL-C++标准模板库

  • 一、STL是什么?
    • 容器
    • 迭代器(iterator)
    • 算法
  • 二、常用容器
    • vector
    • set
    • string
    • map
    • queue
    • priority_queue
    • stack
    • pair
  • 三、容器使用
    • 1、容器模板的使用
    • 2、容器模板中的常用函数
      • assign()
      • empty()
      • erase()
      • push_front()
      • push_back()
      • pop_front()
      • pop_back()
      • back()
      • front()
      • begin()
      • end()
  • 四、algorithm头文件常用函数
    • max(),min(),abs()
    • swap()
    • reverse()
    • next_permutation()
    • fill()
    • lower_boud(),upper_bound()

一、STL是什么?

C++ 对模板(Template)支持得很好,STL 就是借助模板把常用的数据结构及其算法都实现了一遍,并且做到了数据结构和算法的分离。
STL封装了很多实用的容器,省时省力,能够让你将更多心思放到解决问题的步骤上,而非费力去实现数据结构诸多细节上。
几个基本概念:

容器

可以把它理解为存放数据的地方,常用的一些容器有 链表(list) 栈(stack) 动态数组 (vector) 双端队列(deque) 队,列(queue) 映射(map)

迭代器(iterator)

可以把它理解为指针类型,STL中的许多函数需要用到它们作为参数

算法

它们通常需要与容器和游标配合使用,使用它们,你可以方便地对容器中的数据进行各种常见的操作,如排序操作,寻找最大元素的操作等。

二、常用容器

vector

set

string

map

queue

priority_queue

stack

pair

三、容器使用

1、容器模板的使用

大致有下面6个步骤: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 << " ";

2、容器模板中的常用函数

assign()

赋值

empty()

容器为空则返回非0值

erase()

删除指定位置或指定范围内的元素

push_front()

从容器头部插入元素

push_back()

从容器尾部插入元素

pop_front()

删除第一个元素

pop_back()

删除最后一个元素

back()

返回最后一个元素的引用

front()

返回第一个元素的引用

begin()

返回指向第一个元素的游标 (与迭代器配合使用)

end()

返回指向最后一个元素的后一个位置的游标 (最后1个元素再加1) (与迭代器配合使用)

四、algorithm头文件常用函数

max(),min(),abs()

swap()

reverse()

next_permutation()

求全排列,返回该序列之后的全排序序列。

int num[3]={1,2,3};  do  {  cout<<num[0]<<" "<<num[1]<<" "<<num[2]<<endl;  }while(next_permutation(num,num+3));  //对num到num+3之间[0,3)的元素全排列。

fill()

当我们想对一个容器的值进行填充时,我们就可以使用fill()函数。

int array[8];   fill (array,array+4,5);   // myvector: 5 5 5 5 0 0 0 0fill (array+3,array+6,8);   // myvector: 5 5 5 8 8 8 0 0
## sort()

lower_boud(),upper_bound()

STL-algorithm相关推荐

  1. stl algorithm -- sort ,unique

    在写私信群聊代码的时候碰到怎么把一个vector<Int> 元素unique化的问题,基本上就是需要下面这么做,用<algorithm>中的,先sort再unique 1 #i ...

  2. 【C/C++】从API学习STL algorithm 001(for_each、find、find_if、find_end、find_first_of 快到碗里来(◕ᴗ◕✿)

    今天的主题是, STL algorithm :)~ algorithm概述 The header <algorithm> defines a collection of functions ...

  3. STL algorithm算法merge(34)

    merge原型: std::merge default (1) template <class InputIterator1, class InputIterator2, class Outpu ...

  4. [C++ STL algorithm] lower_bound、upper_bound、unique的本质

    lower_bound:返回第一个大于等于查找值的地址 upper_bound:返回第一个严格大于查找值的地址 使用这两个函数需要的头文件 #include <algorithm> usi ...

  5. stl algorithm清单

    accumulate     累加序列的所有元素 adjacent_difference 计算序列中的相邻元素是否不同 adjacent_find  查找相邻的两个相同(或者有其他关联)元素 bina ...

  6. (原創) 如何利用copy() algorithm將array輸出到cout? (C/C++) (STL)

    原本以為STL algorithm只能配合STL的Container,但看到侯捷的泛型程式設計與STL的範例,為了精簡,常常跟array搭配,才驚覺原來algorithm也可以搭配array喔!!此範 ...

  7. 标准模板库(STL)学习指南之map映射

    转载自CSDN博客:http://blog.csdn.net/bat603/article/details/1456141 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关 ...

  8. NOIp 数据结构专题总结 (1):STL、堆、并查集、ST表、Hash表

    系列索引: NOIp 数据结构专题总结 (1) NOIp 数据结构专题总结 (2) STL structure std::vector #include <vector> std::vec ...

  9. STL中map用法详解

    Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候 ...

  10. 红黑树实现——STL中的map

    From: http://blog.csdn.net/zhongjiekangping/article/details/6934571 红黑树实现--STL中的map [ 2009-07-24 13: ...

最新文章

  1. Leecode 1583.统计不开心的朋友
  2. Integer的自动缓存
  3. 陶哲轩实分析 例 1.2.12 洛必达法则使用注意事项
  4. linux C实现mkdir功能
  5. mysql 表中添加数据类型_MySQL数据表添加字段(三种方式)
  6. “最佳融合通信创新应用平台”认证!2021 年度全球新经济卓越成就奖揭晓
  7. linux mysql5.6编译_Linux 环境下编译安装MySQL5.6的笔记记录
  8. python可以在多平台运行 体现了_Python:使用异常处理来判断运行的平台
  9. 蔬菜大棚成本_蔬菜大棚建设标准和成本
  10. 如何使用TCP/IP开发网络程序
  11. iptables的nat规则骚操作
  12. 【Git/Github学习笔记】GitHub上README写法暨GFM语法解读
  13. 飞书信外贸移动社交自建站系统玩转海外拼团分销
  14. Python常用库urllib中urllib.request模块使用详解
  15. css使用box-shadow实现泛光效果
  16. PMP项目管理与ACP敏捷管理哪一个更有用?
  17. zzulioj1096c语言版答案,郑州轻工业大学oj题解(c语言)1096:水仙花数(函数专题)...
  18. 下载SAPUI5 SDK
  19. android调用虚拟摄像头方法,Android:如何在模拟器中使用摄像头?
  20. 为什么从此电脑访问不了ftp_巧用FTP来管理手机文件 从此摆脱USB

热门文章

  1. SM5308原厂2.1A 充电 2.4 A 放电高集成度移动电源IC芯片SOC
  2. Sigrity PowerDC仿真
  3. Java遍历Map的5种方法
  4. Python 语言在实际使用中遇到的一些缺点和不足
  5. Unity 动态面板
  6. SDUT OJ 数据结构实验之图论五:从起始点到目标点的最短步数(BFS)
  7. 【Javascript】浏览器中如何阻止页面自动跳转
  8. 新年愿望清单列好了吗?如何在桌面上添加便签计划清单
  9. 风控之乱:零经验者,跳槽3次,年薪50万 2016-10-20 20:06 来源:一本财经(yibencaijing) 本文经授权转载!感谢原作者的辛勤创作! 金融的核心是什么? 严谨的金融从业者,
  10. 【第44题】常用的数学工具类1-角度和弧度的转换