STL-algorithm
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相关推荐
- stl algorithm -- sort ,unique
在写私信群聊代码的时候碰到怎么把一个vector<Int> 元素unique化的问题,基本上就是需要下面这么做,用<algorithm>中的,先sort再unique 1 #i ...
- 【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 ...
- STL algorithm算法merge(34)
merge原型: std::merge default (1) template <class InputIterator1, class InputIterator2, class Outpu ...
- [C++ STL algorithm] lower_bound、upper_bound、unique的本质
lower_bound:返回第一个大于等于查找值的地址 upper_bound:返回第一个严格大于查找值的地址 使用这两个函数需要的头文件 #include <algorithm> usi ...
- stl algorithm清单
accumulate 累加序列的所有元素 adjacent_difference 计算序列中的相邻元素是否不同 adjacent_find 查找相邻的两个相同(或者有其他关联)元素 bina ...
- (原創) 如何利用copy() algorithm將array輸出到cout? (C/C++) (STL)
原本以為STL algorithm只能配合STL的Container,但看到侯捷的泛型程式設計與STL的範例,為了精簡,常常跟array搭配,才驚覺原來algorithm也可以搭配array喔!!此範 ...
- 标准模板库(STL)学习指南之map映射
转载自CSDN博客:http://blog.csdn.net/bat603/article/details/1456141 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关 ...
- NOIp 数据结构专题总结 (1):STL、堆、并查集、ST表、Hash表
系列索引: NOIp 数据结构专题总结 (1) NOIp 数据结构专题总结 (2) STL structure std::vector #include <vector> std::vec ...
- STL中map用法详解
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候 ...
- 红黑树实现——STL中的map
From: http://blog.csdn.net/zhongjiekangping/article/details/6934571 红黑树实现--STL中的map [ 2009-07-24 13: ...
最新文章
- Leecode 1583.统计不开心的朋友
- Integer的自动缓存
- 陶哲轩实分析 例 1.2.12 洛必达法则使用注意事项
- linux C实现mkdir功能
- mysql 表中添加数据类型_MySQL数据表添加字段(三种方式)
- “最佳融合通信创新应用平台”认证!2021 年度全球新经济卓越成就奖揭晓
- linux mysql5.6编译_Linux 环境下编译安装MySQL5.6的笔记记录
- python可以在多平台运行 体现了_Python:使用异常处理来判断运行的平台
- 蔬菜大棚成本_蔬菜大棚建设标准和成本
- 如何使用TCP/IP开发网络程序
- iptables的nat规则骚操作
- 【Git/Github学习笔记】GitHub上README写法暨GFM语法解读
- 飞书信外贸移动社交自建站系统玩转海外拼团分销
- Python常用库urllib中urllib.request模块使用详解
- css使用box-shadow实现泛光效果
- PMP项目管理与ACP敏捷管理哪一个更有用?
- zzulioj1096c语言版答案,郑州轻工业大学oj题解(c语言)1096:水仙花数(函数专题)...
- 下载SAPUI5 SDK
- android调用虚拟摄像头方法,Android:如何在模拟器中使用摄像头?
- 为什么从此电脑访问不了ftp_巧用FTP来管理手机文件 从此摆脱USB
热门文章
- SM5308原厂2.1A 充电 2.4 A 放电高集成度移动电源IC芯片SOC
- Sigrity PowerDC仿真
- Java遍历Map的5种方法
- Python 语言在实际使用中遇到的一些缺点和不足
- Unity 动态面板
- SDUT OJ 数据结构实验之图论五:从起始点到目标点的最短步数(BFS)
- 【Javascript】浏览器中如何阻止页面自动跳转
- 新年愿望清单列好了吗?如何在桌面上添加便签计划清单
- 风控之乱:零经验者,跳槽3次,年薪50万 2016-10-20 20:06 来源:一本财经(yibencaijing) 本文经授权转载!感谢原作者的辛勤创作! 金融的核心是什么? 严谨的金融从业者,
- 【第44题】常用的数学工具类1-角度和弧度的转换