第16章 string类和标准模板库.

Slides:



Advertisements
Similar presentations
7.1 内置对象概述及分类 JSP 视频教学课程. JSP2.2 目录 1. 内置对象简介 1. 内置对象简介 2. 内置对象分类 2. 内置对象分类 3. 内置对象按功能区分 3. 内置对象按功能区分 4. 内置对象作用范围 4. 内置对象作用范围.
Advertisements

数据结构的引入. 通讯录管理 社团机构管理 校园导航管理 通讯录管理 社团机构管理 校园导航管理.
高级服务器设计和实现 1 —— 基础与进阶 余锋
阻塞操作. 在 linux 里,一个等待队列由一个 wait_queue_head_t 类型的结构来描述 等待队列的初始化: static wait_queue_head_t testqueue; init_waitqueue_head(&testqueue);
Tool Command Language --11级ACM班 金天行.
Oracle数据库 Oracle 子程序.
第14章 c++中的代码重用.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
第九章 字符串.
Using C++ The Weird Way Something about c++11 & OOP tricks
C++模板与STL库介绍 单栋栋
Hadoop I/O By ShiChaojie.
第八章 菜单设计 §8.1 Visual FoxPro 系统菜单 §8.2 为自己的程序添加菜单 §8.3 创建快捷菜单.
WindyWinter C++ WindyWinter
SOA – Experiment 3: Web Services Composition Challenge
大学计算机基础 典型案例之一 构建FPT服务器.
走进编程 程序的顺序结构(二).
辅导课程六.
走向C++之路 WindyWinter WindyWinter感谢诸位前来捧场。
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
数据挖掘工具性能比较.
PaPaPa项目架构 By:Listen 我在这.
动态规划(Dynamic Programming)
泛型委托 泛型接口、方法和委托.
《编译原理与技术》 期末复习 计算机科学与技术学院 郑启龙 李 诚 25/12/2018.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
第七章 操作符重载 胡昊 南京大学计算机系软件所.
从zval看PHP变量
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C语言程序设计 主讲教师:陆幼利.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
$9 泛型基础.
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
本节内容 随机读取 视频提供:昆山爱达人信息技术有限公司.
第二章 Java基本语法 讲师:复凡.
姚金宇 MIT SCHEME 使用说明 姚金宇
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
ES 索引入门
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:
第4章 Excel电子表格制作软件 4.4 函数(一).
3.16 枚举算法及其程序实现 ——数组的作用.
本节内容 结构体 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 文件系统 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
Delphi 7.0开发示例.
第7章 模板 陈哲 副教授 南京航空航天大学 计算机科学与技术学院.
2019/5/21 实验一 离散傅立叶变换的性质及应用 实验报告上传到“作业提交”。 11:21:44.
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
_03宽字符与Unicode编程 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
本节内容 结构体.
第六章 Excel的应用 五、EXCEL的数据库功能 1、Excel的数据库及其结构 2、Excel下的数据排序 (1)Excel的字段名行
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
本节内容 导出表 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C++语言程序设计 C++语言程序设计 第十章 多态 第十一组 C++语言程序设计.
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
WEB程序设计技术 数据库操作.
第十七讲 密码执行(1).
插入排序的正确性证明 以及各种改进方法.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
顺序结构程序设计 ——关于“字符串”和数值.
第二次课后作业答案 函数式编程和逻辑式编程
学习目标 1、什么是列类型 2、列类型之数值类型.
Presentation transcript:

第16章 string类和标准模板库

1. string类 由头文件string支持 String.h(C)和cstring(C++)支持C库字符串函数,但不支持string类

1.1 构造字符串

1.2 string类输入 两种方式 Getline()函数从输入读取字符,直到 区别C版本getline() 到达文件尾 遇到分界字符 读取字符数达到最大允许值

1.3 使用字符串 比较字符串 确定字符串长度 搜索给定子字符串或字符 Find_last_not_of() <, <=, ==, >, >=, != 确定字符串长度 Size(), length() 搜索给定子字符串或字符 Find(), rfind(), find_first_of(), find_first_not_of() Find_last_not_of()

1.4 string还提供了哪些功能 …… 删除字符串的部分或全部内容 字符串取代 数据插入或删除 字符串内容比较 提取子字符串 字符串内容复制 交换字符串内容 ……

1.5 字符串种类 String库基于模板类 可使用Wchar_t、char16_t、char32_t、char类型字符串,也可开发相关类

2. 智能指针模板类 行为类似于指针的类对象 可帮助管理动态内存分配 Auto_ptr Unique_ptr Shared_ptr

2.1 使用智能指针 头文件memory 常规指针和智能指针的区别

2.2 有关智能指针的注意事项 有时不适合使用auto_ptr,可以用shared_ptr代替

2.3 unique_ptr为何优于auto_ptr 程序在编译环节就会出错,而不会在运行时 #6编译报错

2.4 选择智能指针 多个指针指向同一对象:shared_ptr 不需要多指针指向同一对象;使用new分配内存,返回指针:unique_ptr

3. 标准模板库 STL提供一组表示容器、迭代器、函数对象和算法的模板 STL容器同质 STL不是面向对象,而是泛型编程

3.1 模板类vector

3.2 可对矢量执行的操作 Size(), Swap(), Begin(), End(), erase(), insert(), push_back()…… 迭代器——广义指针

3.3 对矢量可执行的其他操作 STL从更广泛的角度定义非成员函数执行相关操作,节省大量重复工作 For_each(), random_shuffer(), sort()

3.4 基于范围的for循环

4. 泛型编程 泛型编程关注算法,旨在编写独立于数据类型的代码 与面向对象编程的共同点是抽象和可重用,但理念不同 模板使算法独立于存储的数据类型

4.1 为何使用迭代器 迭代器使算法独立于使用的容器类型,是遍历容器中的值的通用表示 迭代器特征 对*p进行定义 对p=q进行定义

4.2 迭代器类型 输入迭代器 输出迭代器 正向迭代器 双向迭代器 随机访问迭代器

4.3 迭代器层次结构 功能上 输出迭代器 正向迭代器 输入迭代器 随机访问迭代器 双向选择器 正向迭代器 正向迭代器

4.4 概念、改进和模型 迭代器是要求,而非类型,STL算法可以使用任何满足其要求的迭代器实现 概念用来描述一系列要求 概念可以具有类似继承的关系,用改进来表示概念上的继承 概念的具体实现被称为模型

4.5 容器种类 概念是具有名称的通用类别,容器概念指定了一系列必须满足的要求 容器类型是创建具体容器对象的模板 Vector,deque, list, queue,priority_queue,stack

4.4 关联容器 关联容器是对容器概念的另一种改进 4种关联容器:set,multiset,map,multimap 与键关联,用键查找 对元素快速访问 允许插入,但不能指定位置 用树实现 4种关联容器:set,multiset,map,multimap

4.5 无序关联容器 无序关联容器是对容器概念的另一种改进 基于哈希表(提高添加、删除和查找效率) 4种无序关联容器:unordered_set,unordered_mutiset ,unorderd_map ,unordered_multimap

16.5 函数对象 函数对象——函数符,是以函数方式与()结合使用的任意对象 重载了()运算符

5.1 函数符概念 STL定义了函数符概念 生成器,不用参数调用 一元函数,用一个参数调用 二元函数,用两个参数调用

5.2 预定义的函数符 STL定义了多个基本函数符,为支持将函数作为参数的STL函数

5.3 自适应函数符和函数适配器 函数符自适应:携带标识参数类型和返回类型的typedef成员

6. 算法 使用模板提供泛型,使用迭代器提供访问容器的通用表示 统一容器设计使不同类型容器具有明显关系

6.1 算法组 非修改式序列操作 修改式序列操作 排序和相关操作 通用数字运算

6.2 算法的通用特征 STL函数使用迭代器和迭代器区间 根据结果放置位置,就地算法(sort函数)和复制算法(copy函数) 根据结果执行操作的函数版本,通常以_if结尾

6.3 stl和string类 String类不是STL组成部分,但考虑到了STL 包含Begin(), end(), rbegin(), rend(),可以使用STL接口

6.4 函数和容器方法 通常选择STL方法优于STL函数 更适合特定容器 更好的内存管理

6.5 使用stl STL是一个库,组成部分协同工作 STL组件是工具,创建其他工具的基本部件

7. 其他库 C++提供了其他一些更为专用的类库 Complex,valarray

7.1 vector、valarray和array Valarray是面向数值计算的,不是STL的一部分 Array表示长度固定的数组,为代替内置数组设置

7.2 模板initializer_list

7.3 使用initializer_list

8. 总结