- 1、本文档共332页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
;课程内容;第一章 STL 概述;STL (Standard Template Library) 导言
C++:应用越来越广泛
STL:C++ 的一部分,编程时不需安装额外插件
STL:众多技术人员经验的结晶,不用重复开发
直接使用!提高开发效率和代码质量
如:栈、队列、堆、树等数据结构及算法
招聘:熟练掌握 STL ;STL 内容简介
包括:容器、算法、迭代器(还包括其他的)
容器
数组、链表、队列、堆、栈、树、哈希表等数据结构
直接定义并使用,功能强大,可用多种数据类型
算法
增加、删除、查找、修改、排序等
直接调用这些函数,实现相应功能
迭代器
指针的泛型,使算法操作容器中数据
其他
string类、I/O流类,函数对象,内存配置器等;泛型编程(Generic Programming,GP)
泛型
数据类型参数化——把数据类型定义为变量,使用时才生成它的具体类型(实例化/特化),实现将算法与数据结构完全分离。目的:代码重用
泛型编程 —— 用模板编程(函数模板/类模板)
将常用数据结构(如栈/队列/链表/树)和算法(如排序/查找)写成模板,不论数据结构里面存放何种类型数据,不必再重新编写算法!
STL —— 数据结构和算法的模板集合
不必再编写这些数据结构和算法,代码质量很高;STL 程序的头文件
开发环境: VC++ 2012 (VS2012)
头文件位置:X:\VS2012\VC\include\;STL 程序的头文件;namespace
using namespace std ;
命名对象
变量、函数、类、结构体,…
名称冲突 开发大规模软件
不同厂家(程序员)开发的类库/函数库,可能存在
相同的函数名或类名(重名),使用哪一个呢?
例:两个库都有 fun 函数,怎么确定用哪一个呢?
解决方法
using namespace 指定名称空间
std : C++标准库所有名称都在该命名空间中;#include <iostream>
using namespace std ; // 可后置于 main 前吗?
namespace myfun // 命名空间
{
void fun() // 定义在 myfun 中
{ cout<<"使用myfun中的fun()"<<endl; }
};
namespace yourfun // 命名空间
{
void fun() // 定义在 yourfun 中
{ cout<< "使用yourfun中的fun()"<<endl ; }
};;// using namespace std ; // 前面的可放在此处吗
using namespace myfun; // 主要??? myfun
int main( )
{
fun(); // myfun::fun();
yourfun::fun(); // 临时用 yourfun
return 0;
}
;
;第二章 模板与重载;引入模板——代码重用
C++是强类型语言,函数或类的功能类似,只要数据类型不同,就要编写多份代码,增加了编程量和源程序长度。
例:求 a, b 最大值,需编写四个函数(四份代码)
int Max(int a, int b)
{ return (a>b)? a:b; }
float Max(float a,float b)
{ return (a>b)? a:b; }
double Max(double a,double b)
{ return (a>b)? a:b; }
char Max(char a,char b)
{ return (a>b)? a:b; };函数模板
编写一个函数模子,用这个模子制造出若干功能相同,参数类型和返回类型不同的函数——模板函数
函数模板的声明
template <class T> // T: 类型是参数
T Max(T a,T b)
{ return (a>b)? a:b; }
//----------- 如此,就做好了一个函数模板------------
在调用Max函数时,根据实参类型确定T:
int x =2, y=5 ;
cout<< Max( x, y ); // T→ int;函数模板简例;函数模板中可用多种类型参数
—— T1, T2
每种类型参数前加 class
问:
a,b 可否实例化为相同类型?;函数重载
参数类型不同
参数个数不同
问:
左边两个重载的函数模板的类型参数
您可能关注的文档
- HALCON编程及工程应用全套课件完整版电子教案(可修改版).pptx
- 商业智能:方法与应用全套课件完整版电子教案(可修改版).pptx
- 员工培训与开发管理全套课件完整版电子教案(可修改版).pptx
- 程序设计综合实践全套课件完整版电子教案(可修改版).pptx
- 信息素养概论全套课件完整版电子教案(可修改版).pptx
- JAVA程序设计全套课件完整版电子教案(可修改版).pptx
- Java程序设计任务式教程全套课件完整版电子教案(可修改版).pptx
- 城市轨道交通列车自动控制系统全套课件完整版电子教案(可修改版).pptx
- 单片机应用技术(C语言版)全套课件完整版电子教案(可修改版).pptx
- 单片机应用技术全套课件完整版电子教案(可修改版).pptx
- 2024-2023年初级银行从业资格之初级银行业法律法规与综合能力题库与答案精品.pdf
- 2023年度医疗质量安全核心制度培训考试 .pdf
- 2023年度河南省养老护理员职业资格技师培训试题(含答案) .pdf
- 2023年度湖北省养老护理员职业资格技师考试试题试卷(含答案) .pdf
- 2023年度养老护理员资格考试技师考题(含答案) .pdf
- 2023年度一级注册建筑师之建筑设计题库及答案 .pdf
- 2023年度一级注册建筑师之设计前期与场地设计通关考试题库带答案精品.pdf
- 2023年度养老护理员资格考试技师培训试题(含答案) .pdf
- 2024-2023年辐射防护-X射线探伤考试精选专练V(带答案)试卷号;10.pdf
- 2024-2023年辐射防护-X射线探伤考试精选专练V(带答案)试卷号;16.pdf
文档评论(0)