中国科学技术大学:《C++语言程序设计》课程教学资源(讲义)第十章 C++标准模板库

C++语言程序设计 第十章C++标准模板库 米米
第十章 C++标准模板库 C++语言程序设计

C++语言程序设计 主要内容 泛型程序设计 。迭代器 ●顺序容器 ·关联容器 ·函数对象 ·算法 深度探索 日
C++语言程序设计 2 主要内容 泛型程序设计 迭代器 顺序容器 关联容器 函数对象 算法 深度探索

C++语言程序设计 泛型程序设计 泛 ● 编写不依赖于具体数据类型的程序 型 ● 将算法从特定的数据结构中抽象出来,成 为通用的 ● C+的模板为泛型程序设计奠定了关键的 序 基础 ● 几个术语 计 概念(concept) 用来界定具备一定功能的数 据类型,如支持<’运算符” 的数据类型构 成Comparable这一概念; 模型(model): 符合一个概念的数据类型称 为该概念的模型, 如int型是Comparable概然的修 模型
C++语言程序设计 3 泛型程序设计 编写不依赖于具体数据类型的程序 将算法从特定的数据结构中抽象出来,成 为通用的 C++的模板为泛型程序设计奠定了关键的 基础 几个术语 – 概念(concept):用来界定具备一定功能的数 据类型,如“支持‘<’运算符”的数据类型构 成Comparable这一概念; – 模型(model):符合一个概念的数据类型称 为该概念的模型,如int型是Comparable概念的 模型。 泛型程序设计

C++语言程序设计 STL程序实例(例10-1) 泛 //包含的头文件略去… using namespace std; 型 int main(){ 程 const int N=5; 容器 序 vectors(N); 设 for (int i 0;i N;i++) 迭代器 函数对象 cin >s[i]; 计 transform(s.begin(),s.end(), ostream_iterator(cout, negate()) 算法 cout <endl; return 0;
C++语言程序设计 STL程序实例(例10-1) 4 //包含的头文件略去…… using namespace std; int main() { const int N = 5; vector s(N); for (int i = 0; i > s[i]; transform(s.begin(), s.end(), ostream_iterator(cout, " "), negate()); cout << endl; return 0; } 容器 函数对象 算法 迭代器 泛型程序设计

C++语言程序设计 STL的组成部分 泛 ●STL是泛型程序设计的一个范例 容器(container) 型 迭代器(iterator) 程 算法(algorithms) 序 函数对象(function object) 设 迭代器 容器 算法 迭代器 计 (iterator (algorithm) (iterator 容器 (container) (container) 函数对象 (function object)
C++语言程序设计 STL的组成部分 STL是泛型程序设计的一个范例 – 容器(container) – 迭代器(iterator) – 算法(algorithms) – 函数对象(function object) 5 泛型程序设计 容器 (container) 算法 (algorithm) 容器 (container) 迭代器 (iterator) 函数对象 (function object) 迭代器 (iterator)

C++语言程序设计 迭代器 ● 迭代器提供了顺序访问容器中每个元 素的方法。 迭 “+”运算符来获得指向下一个元素的迭 代 代器 器 -“*”运算符访问一个迭代器所指向的元素 -“>”运算符访问迭代器所指向元素的成员 ●迭代器是泛化的指针。 STL的每人容器类模板中,都定头米 了一组对应的迭代器类。 6
C++语言程序设计 迭代器 迭代器提供了顺序访问容器中每个元 素的方法。 – “++”运算符来获得指向下一个元素的迭 代器 – “*”运算符访问一个迭代器所指向的元素 – “->”运算符访问迭代器所指向元素的成员 迭代器是泛化的指针。 STL的每一个容器类模板中,都定义 了一组对应的迭代器类。 6 迭代器

C++语言程序设计 输入流迭代器 契金离菱露器是丛个尖镶金流中连织地输入某种 istream iterator 迭 羲署贾条给复默认构造两数:该类型 代 ●构造函数 器 istream_iterator(istream&in); 以输入流(如cin)为参数构造 ● 默认构造函数创建的迭代器指向输入流的结束位 Vindows下按Ctrl+Z和回车键,Linux下按Ctrl+D ● 可用*(p++)获得下一个输入的元素
C++语言程序设计 输入流迭代器 输入流迭代器:从一个输入流中连续地输入某种 类型的数据,是一个类模板 – istream_iterator – 类型T要满足两个条件:有默认构造函数;该类型 数据可用”>>”从输入流输入 构造函数 – istream_iterator(istream& in); – 以输入流(如cin)为参数构造 默认构造函数创建的迭代器指向输入流的结束位 置 – Windows下按Ctrl+Z和回车键,Linux下按Ctrl+D 可用*(p++)获得下一个输入的元素 7 迭代器

C++语言程序设计 输出流迭代器 输出流迭代器: 类型的数据,也是 二个契!鎏中连续地输出某种 类模板 ostream_iterator 迭 类型T要满足一个条件:该类型数据可用”(ostream&out); ostream iterator(ostream&out,const char delimiter): 构造时需要提供输出流(如cout),参数delimiter 是可选的分隔符 对输出流迭代器iter,*iter只能作为赋值运算符 的左值 *iter=x,相当于执行了out<<x或 out<<x<<delimiter
C++语言程序设计 输出流迭代器 输出流迭代器:向一个输出流中连续地输出某种 类型的数据,也是一个类模板 – ostream_iterator – 类型T要满足一个条件:该类型数据可用”(ostream& out); – ostream_iterator(ostream& out, const char * delimiter); – 构造时需要提供输出流(如cout),参数delimiter 是可选的分隔符 对输出流迭代器iter, *iter只能作为赋值运算符 的左值 – *iter = x,相当于执行了 out<<x 或 out<<x<<delimiter 8 迭代器

C++语言程序设计 输入流迭代器和输出流迭代器 。二者都属于适配器 迭 适配器是用来为已有对象提供新的接口 代 的对象,本身一般不提供新功能 器 输入流适配器和输出流适配器为流对象 提供了迭代器的接口
C++语言程序设计 输入流迭代器和输出流迭代器 二者都属于适配器 – 适配器是用来为已有对象提供新的接口 的对象,本身一般不提供新功能 – 输入流适配器和输出流适配器为流对象 提供了迭代器的接口 9 迭代器

C++语言程序设计 例10-2 /包含的头文件略去… using namespace std; 迭 double square(double x){ 代 return xx; 器int main0( transform(istream_iterator(cin), istream_iterator(), ostream_iterator(cout,"\t"),square): cout <endl; return 0; a
C++语言程序设计 例10-2 10 //包含的头文件略去…… using namespace std; double square(double x) { return x * x; } int main() { transform(istream_iterator(cin), istream_iterator(), ostream_iterator(cout, "\t"), square); cout << endl; return 0; } 迭代器
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 中国科学技术大学:《C++语言程序设计》课程教学资源(讲义)第九章 群体类和群体数据的组织.pdf
- 中国科学技术大学:《C++语言程序设计》课程教学资源(讲义)第七章 继承与派生.pdf
- 中国科学技术大学:《C++语言程序设计》课程教学资源(讲义)第八章 多态性.pdf
- 中国科学技术大学:《C++语言程序设计》课程教学资源(讲义)第五章 数据的共享与保护.pdf
- 中国科学技术大学:《C++语言程序设计》课程教学资源(讲义)第四章 类与对象.pdf
- 中国科学技术大学:《C++语言程序设计》课程教学资源(讲义)第六章 数组、指针与字符串.pdf
- 中国科学技术大学:《C++语言程序设计》课程教学资源(讲义)第三章 函数.pdf
- 中国科学技术大学:《C++语言程序设计》课程教学资源(讲义)第二章 C++简单程序设计.pdf
- 中国科学技术大学:《C++语言程序设计》课程教学资源(讲义)C++语言漫谈.pdf
- 中国科学技术大学:《C++语言程序设计》课程教学资源(讲义)第一章 绪论(主讲:黄章进).pdf
- 中国科学技术大学:《C++语言程序设计》课程教学资源(复习提纲,主讲:黄章进).pdf
- 《C++程序设计》课程教学资源(参考资料)C++ Programming ISO/IEC 14882 C++11(规范)Information technology — Programming languages — C++.pdf
- 《C++程序设计》课程教学资源(参考资料)C++ Programming ISO/IEC 14882 2003(规范文档)INTERNATIONAL STANDARD(Second edition).pdf
- 中国科学技术大学:单变量均匀静态细分格式的连续性分析和构造 Continuity Analysis and Construction of Uniform Stationary Univariate Subdivision Schemes.pdf
- 中国科学技术大学:NEW PROOF OF DIMENSION FORMULA OF SPLINE SPACES OVER T-MESHES VIA SMOOTHING COFACTORS.pdf
- 中国科学技术大学:JOURNAL OF UNIVERSITY OF SCIENCE AND TECHNOLOGY OF CHINA.pdf
- 中国科学技术大学:一类多参数的曲线细分格式.pdf
- 中国科学技术大学:Estimating Error Bounds and Subdivision Depths for Loop Subdivision Surfaces.pdf
- 中国科学技术大学:An Efficient Approach to Real-Time Sky Simulation.pdf
- 中国科学技术大学:Bounding the Distance between a Loop Subdivision Surface and Its Limit Mesh.pdf
- 中国科学技术大学:《C++语言程序设计》课程教学资源(讲义)第十一章 流类库与输入输出.pdf
- 中国科学技术大学:《C++语言程序设计》课程教学资源(讲义)第十二章 异常处理.pdf
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第一章 绪论(主讲:郑莉).ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第十章 C++标准模板库.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第十一章 流类库与输入/输出.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第十二章 异常处理.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第二章 C++简单程序设计.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第三章 函数.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第四章 类与对象.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第五章 C++程序的结构.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第六章 数组、指针与字符串.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第七章 继承与派生.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第八章 多态性.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第九章 群体类和群体数据的组织.ppt
- 中国科学技术大学:《计算机图形学》课程教学资源(讲义)第一章 计算机图形学概述 Computer Graphics.pdf
- 中国科学技术大学:《计算机图形学》课程教学资源(讲义)第三章 OpenGL编程.pdf
- 中国科学技术大学:《计算机图形学》课程教学资源(讲义)第二章 计算机图形系统.pdf
- 中国科学技术大学:《计算机图形学》课程教学资源(讲义)第五章 几何对象与变换.pdf
- 中国科学技术大学:《计算机图形学》课程教学资源(讲义)第四章 输入与交互.pdf
- 中国科学技术大学:《计算机图形学》课程教学资源(讲义)第六章 观察(主讲:黄章进).pdf