- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
STL泛型编程原创入门教程
~~集训会教案
在讲STL之前 先普及下c++
1:就是c的加强版,对我们算法竞赛而言,基本的提交语言都是c++的,因为 c++完全
兼容c。 文件的拓展后缀是 .cpp 。
2:头文件是 #include xxxxxxx 注意没有 .h 如果想用c的头文件就 是c stdio 不用.h
3:定义命名空间,每个程序都要在头文件下写上 using namespace std;是为了防止重名
4:基本输入输出是 iotream 用法是 cin a; cout a; 你们看看箭头就明白,前者是加入后者是抽出。
5:其余语法一模一样,还能使用STL的函数库,
STL全称是Standard template library 简单的说,就是一堆库函数,各种奇妙的功能,带你装比带你飞。别人要用5行来实现的排序,你一句sort轻松ok,要正排正排,要逆序逆序。多种数据结构,别人写几十行实现代码,你轻松敲下 find 实现查找,push入栈,pop出栈。
STL使用c++编程。主要为13个头文件
Algorithm 算法库 deque 双端队列
Functional函数式编程Vector 不定长数组 list 列表
Map 映射 memory 内存方面
Numeric 基础性的数值算法 queue 队列
Set 集合 stack 栈
Utility 程序包
以上内容中,在acm中能用到的,是除了utulity 和memory 以外的,都是重点。
因为字符串也经常使用到,string 字符串容器我们也一样讲。
今天我们不可能把stl都讲完,所以我就 主要是来讲讲他的 一些最常用案例的使用。之后呢建议个位,把每一个头文件都重新学习一遍,不需要背下来,只要在关键时刻能想起来有这个,然后查查资料就ko了。
数据结构部分
数据结构,按理而言是要计科的孩纸学一年,物联网的孩纸学半年的。不过,咱们也不需要那么细致的学习,其实太多的知识是能用就行的,现在让我们用一节课来ko基础的数据结构。
数据结构是是什么呢,简单的理解就是数据如何的存储结构。我们之前学习过链表,那么实际上大多数的数据结构都是由链表来加以改装来实现,
首先是list 双向链表,这个熟悉吧!
一定要注意其实容器都是类似的,学好一个后面的就刷刷会了。
头文件是 #include list
定义是 list int l1; 构造一个int 类型的 l1的空链表
list int l1(3); 有三个元素,值都为0
list int l1(3,1),; 有三个元素,值都为1
我们可以对比的来上手,和数组对比,其实是一样的
Int a[100];这是在定义数组,同样是指定类型就可以了,
1:要找第一个元素怎么找呢:
数组 直接 a【0】;
List l1.front() ; //注意括号一定要有,其实这是一个函数返回值是他的首元素 2:找最后一个元素,
数组 a【99】;
List l1.back();
3:访问中间元素,这个有点难度,要用指针,
首先我们要定义指针:
Listint::iterator it ;这个形式记住就可以,容器类型::iterator it it = l1.begin(); 返回开始位置的指针
it = l1.end(); 返回结束位置的下一个位置的指针
如何添加和删除呢??
Cina;
L1.push_front(a);添加一个a到链表头
L1.push_back(a);到尾
L1.Pop_front(); 删除一个头,无参数
L1.Pop_back(); 删除一个尾,无参数
L1.clear()删除所有。
L1.erase(it ,it+5);删除一个或者一个区域
L1.Remove(4)删除链表中所有的4
L1.Remove_if(某函数) 删除满足条件的数,
L1.Size()返回元素个数
L1.Empty()判断是否空,空为真为true,否则为假false。
L1.Reverse()反转链表
L1.Sort() 正排序
L1.Sort(greaterint)逆排序
拿个题目练下,求次大值。和次小值。求全部的和。求长度。要求30行内实现。
#includeiostream
#includelist
#includenumeric
using namespace std;
int main()
{
listintl1;
l
您可能关注的文档
最近下载
- 中国飞机座舱透明件行业市场占有率及投资前景预测分析报告.pdf VIP
- 静脉用药安全输注药护专家指引.pptx VIP
- 十年(2015-2024)高考英语语法填空真题与模考试卷汇编16-定语从句a原卷版(含答案).pdf VIP
- AQ 2061-2018 金属非金属地下矿山防治水安全技术规范.docx VIP
- (新)预防艾梅乙母婴传播试卷.docx VIP
- 香丽高速公路第八标段弃土场.docx VIP
- CT扫描技术模拟试题及答案、南方医科大学2006级医学影像技术学试卷.pdf VIP
- 运动生理学(全集)PPT(精品PPT).pptx VIP
- 人工智能基础与应用课件.pptx VIP
- GB 14976-2002 流体输送用不锈钢无缝钢管.pdf VIP
文档评论(0)