STL视频_01

ZC:这里视频里面有一个调试小技巧,VS08/VS2010开始,控制台程序会自动退出(不像VC6),那么可以在 函数退出的最后一句语句上设置断点,然后查看控制台打印出来的信息。
ZC:这一讲,给我的感觉是,用string的好处就是 字符串操作时 索引越界的事情可以不用考虑了(如 复制/删除 等操作)

【01:05】这一讲,主要讲解如下要点:
一、什么事STL,使用STL的好处;
二、STL的string类型的使用方法。

【01:25】STL的简介
标准模板库
【01:45】STL的代码,广义上来讲,分为3类:容器、迭代器、算法。容器 和 算法 可以通过 迭代器 进行无缝的连接。
【02:02】string 和 wstring 也是STL的一部分

【02:28】STL的组成和内部关系
【03:05】STL的好处
【03:12】概括的说一下,什么叫容器
【04:35】STL的一个重要特点
数据结构(容器)和算法的分离 ==> 重用率很高。我这个排序算法,既可以用于 list容器 也可以用于其他的容器。
【05:55】比如 STL里面有一个 sort(...)排序函数,我们可以用来操作vector、list这样的容器
【06:15】STL具有高度的可重用性、高性能、跨平台 的优点

【06:27】使用STL的好处
01_02_使用STL的好处.jpg
(1)、【06:28】高可重用性
(2)、【07:50】高性能
01_03_使用STL的好处.jpg
(3)、【08:24】高移植性
(4)、【08:52】跨平台

【09:20】STL的其他好处:程序员不用思考STL的实现过程,只要能够熟练的掌握STL就可以了。可以将精力放在业务逻辑上。

【10:40】string
string是什么、string和char*的比较、如何调用STL的string,往后会讲到 string的构造函数、如何取字符(串)、如何取得 const char *(里面的操作)、如何拷贝char*指向的空间。
我们会讲到string 怎么取它的长度,如何知道这个string里面包含了多少个字符,string如何赋值,string两个字符串如何连接、如何比较、如何取string串里面的子串,如何查找、如何插入、如何删除、如何替换,和wstring的区别,string 和 wstring 的转换,string编码的统一化。

【12:11】string是什么
01_04_string是什么.jpg
【12:30】string 和 char* 的区别:
首先,string 是一个类,char* 是一个指向字符(ZC:串?)的指针,string封装了 char* ,管理字符串,是一个 char*类型的容器。
【12:45】string不用考虑内存释放和越界的问题。string管理了char*所分配的内存,每一次string的复制、取值 都是由string类来负责维护的,不用担心 复制越界 和 取值越界 这样的问题。
【13:05】string支持运算。比如 两个字符串连接。
【13:22】string还提供了一系列的字符串操作函数。如 查找、拷贝、删除、替换、插入 等等。
【13:31】我们如何使用string。使用它之前,首先要在我们的代码的文件里面(头文件里面/cpp文件里面),先要写一行代码:

#include <string>
using namespace std;

这样写的好处:防止我们的这个string 跟 程序其它部分定义的string 重名,(当然我们最好注意 不要重名)。
【14:15】“using namespace std;”是STL相对标准的一种写法,它目的是为了定义一个命名空间。

【14:28】string的构造函数
01_05_string的构造函数.jpg
【14:32】构造函数 一般有 默认构造函数、拷贝构造函数、带参数的构造函数。

【17:22】取string(字符串)中的某一个字符
两种:[?] 和 at(?)
【18:43】01_06_string的取字符操作.jpg
【19:25】[?] 和 at(?) 的唯一区别:这两个方法对越界的处理是不一样的
【19:45】例如,我们取第50个字符(这里没有50个字符):【20:03】用“[?]”来取,程序就会读地址错,就会越界。STL对 [?] 是没有做越界判断的,∴它直接会导致程序的crash。【20:20】对“at(?)”来说,它是不会产生crash问题的,它会抛出一个异常,超出范围的异常(out_of_range),该异常能够被“try{}catch(...){}”捕获到,这个时候 catch(???)里面就可以写上特定的 错误捕获的类型。

【21:32】我们看到取字符

const char &operator[](int n) const;
const char &at(int n) const;
char &operator[](int n);
char &at(int n);

上面“const char &”和 直接“char &” 有何区别?
【21:40】当我们要获取某一个 字符 的时候,实际上调用的是 返回"const char &" 的对应的两个函数。
【21:55】如果我们想要修改 某一个位置上的字符的值的话,ZC:调用的就是 返回"char &" 的对应的两个函数。【22:30】【22:35】为什么不是const?∵说明里面的值可以被修改。

【22:50】string如何取得 "const char*" 里面的操作。
意思是说:我们有时候想要把我们的string里面的内容打印出来,打印到屏幕上去。
【23:22】一般都是采用“cout << ?? <<endl;”,但是它不接受string,接受char*。
【24:00】string::c_str() 返回“const char*”

【25:15】如何把string 字符串里面的内容拷贝到 char*所指向的内存空间去
【25:32】把string拷贝到char*指向的内存空间的操作
01_07_把string拷贝到pchar指向的内存空间的操作.jpg
int copy(char *s, int n, int pos=0) const;
ZC: 注意参数 个数 在前,起始位置 在后
ZC: 注意是 string::copy(...),不要和 Delphi里面的copy函数搞一起搞混了...

【29:30】如何取得字符串的长度,如何判断字符串是否为空
当然,字符串长度==0,肯定是为空。字符串长度==0,可能有时候还不是很方便,用 bool string::empty() const;
【29:50】01_08_string的长度.jpg

【30:13】01_09_string的赋值.jpg
【30:28】1、=:const string& ==> string&
【31:23】2、string &string::assign(const char *s); // s的 所有字符
【31:31】3、string &string::assign(const char *s, int n); // s的 前n个字符

【31:52】01_10_string的赋值.jpg
【31:55】4、string &string::assign(const string &s); // 类似于 operator=
【32:08】5、string &string::assign(int n, char c); // 类似于构造函数里面的相应函数。n个相同的字符c ==> string&
【32:30】6、string &string::assign(const string &s, int start, int n);

【32:36】字符换的连接
【34:28】01_11_string的连接.jpg
【33:01】1、+=
【33:19】之前准备的例子
(1)、+= const string &
(2)、+= const char *
【35:15】2、string::append(...)
(1)、const char *
(2)、const char *, int n
【37:03】01_12_string的连接.jpg
(3)、const string & // 同 +=
(4)、const string &s, int pos, int n
(5)、int n, char c

【40:30】string 字符串的比较
01_13_string的比较.jpg

int string::compare(const string &s) const;
int string::compare(const char *s) const;
大于 --> 返回 1
小于 --> 返回 -1
等于 --> 返回 0
ASCII 码表 字典顺序,排越前越小

【41:49】比较 的例子
【42:31】字符是一个一个来比较的,一旦得出胜负,比较久结束了,直接返回值了

【44:02】如何取得string的子字符串
【44:15】01_14_string的子串.jpg
string string::substr(int pos=0, int n=npos) const; // 返回由pos开始的n个字符组成的子字符串
ZC:后面一个参数的默认值含义,应该是从pos往后的所有字符吧?测试下来,确实是这样。

【15:20】string的查找
【45:56】有两个方向的查找
【46:30】例如 找文件扩展名,从后往前比较好 ==> string::rfind(...)
【46:55】01_15_string的查找.jpg
【47:18】string的查找 例子
(1)、找字符
(2)、找 const char* 字符串
【49:05】ZC: 这里的例子,我和视频作者都觉得应该返回的是3(待查找字符串的开始位置),但是返回的却是5(待查找字符串的结束位置)
【50:18】ZC: 找到原因了,确实应该是3,居然是 ∵字符串用单引号括起来,但是居然能编译的过去...测试了一下,真编译的过去,Why?
(3)、找 const string& 字符串
(4)、string::find(...) 找不到,则返回 -1

【51:45】反向访问(01_16_string的查找(反向).jpg)
ZC: 测试一下,看看第二个参数的含义(是正着数的索引 还是倒着数的索引?), 返回值的含义(是正着数的索引 还是倒着数的索引?)

【52:50】string的插入
【53:33】string::insert(...)
【54:25】01_17_string的插入.jpg

【55:02】字符串的删除
string::erase(开始删除的字符的索引, 删除多少个字符)
删除 在我们其他容器里面都是采用 erase(...),比如 vector里面删除一个节点、map里面删除什么
【55:50】删除的例子

【56:29】string的替换
string::replace(...)
【57:05】有两个操作:
(1)、先把 索引值 和 个数 确定的字符(串) 删掉
(2)、然后再插入新字符(串)
【57:23】例子
【58:15】第一个replace() 和 第二个replace() 它们的功能是一样的,【58:22】第三个(还有一种),就是交换
【58:33】交换 的例子 --> string::swap(...)

【59:50】string 和 wstring 的区别

【01:00:30】string 和 wstring 的转换
01_18_string与wstring的转换.jpg
(1)、Windows API
(2)、ATL ==> COM ==> 这个也只能用于 Win平台...
【01:01:01】ZC:T2W、W2T 这两个PPT里面没有,是视频作者口头讲的
【01:01:08】01_19_string与wstring的转换.jpg
(3)、跨平台 CRT库 mbstowcs() / wcstombs(),需要设定locale
ZC: "设定locale"什么意思?是指需要“#include <locale.h>”吗?貌似还有 setlocale()等的函数需要调用。
【01:01:43】01_20_string与wstring的转换.jpg
【01:02:01】01_21_string与wstring的转换.jpg

【01:02:45】使用 string/wstring 的同一方案
【01:02:55】01_22_编码统一化,编写单一源代码.jpg

【01:03:30】本讲讲了如下要点:
【01:03:32】1、什么是 STL,STL的好处,广义上分为三类 ....
ZC:看 PPT 吧...

///////

///////

///////

///////

///////

///////

///////

///////

///////

///////

///////

///////

///////

///////

///////

///////

///////

///////

///////

///////

///////

C

时间: 2024-10-12 22:52:34

STL视频_01的相关文章

STL视频_00

[05:40]比赛规则 - Part01[06:33]比赛规则 - Part02[07:28]比赛规则 - Part03[08:45]提出的问题 - 1和2[09:23]提出的问题 - 3和4 *** *** *** *** C

学习BoolanC++笔记_01(STL与泛型编程第六周)

作者: ayaoko 出处: http://www.cnblogs.com/fyc006/> 关于作者:小可才疏学浅还请多多赐教! 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件([email protected])咨询. 1,你应具备的基础 C++基本语法(包括如何正确使用模板,templates)  2,我们的目标 C++标准库,了解,深入,良好使用,扩展 THE C++ STANDARD LIBRARY 作者:

SWF代码分析与破解之路 (YueTai VIP视频信息获取工具) Socket续篇

引言 上一篇 <Socket与站点保密应用 (隐藏链接的视频下载)>大大咧咧地从 WEB 讲 Socket.再到 TCP/IP 等协议,又再讲到 Wireshark 怎样抓IP包分析.最还要复习一下路由与网络的知识.真的涉及面太广了,仅仅能蜻蜓点水一一带过,只是将多领域的知识串烧也是不错的,能够起到一个归纳的作用.这篇针对 Flash 来进行.写作思路以解决这个问题的过程行为线索. 依次展示怎样使用 Flex Air 的 ServerSocket 和 Socket 实现简化版本号的 HTTP

基于C/S架构的3D对战网络游戏C++框架 _01服务器端与客户端需求分析

本系列博客主要是以对战游戏为背景介绍3D对战网络游戏常用的开发技术以及C++高级编程技巧,有了这些知识,就可以开发出中小型游戏项目或3D工业仿真项目. 笔者将分为以下三个部分向大家介绍(每日更新): 1.实现基本通信框架,包括对游戏的需求分析.设计及开发环境和通信框架的搭建: 2.实现网络底层操作,包括创建线程池.序列化网络包等: 3.实战演练,实现类似于CS反恐精英的3D对战网络游戏: 技术要点:C++面向对象思想.网络编程.Qt界面开发.Qt控件知识.Boost智能指针.STL算法.STL.

视频笔记 CppCon 2015:Marshall Clow “Type Traits - what are they and why should I use them?&quot;

Video: CppCon 2015:Marshall Clow "Type Traits - what are they and why should I use them?" https://www.youtube.com/watch?v=VvbTP_k_Df4 如果你需要写关于不同类型的代码,而不是具体的类型,你可能需要了解Type Traits 4:47 C++多少种类型?14 void, nullptr: 只有一个成员在这个type里面 struct 实际上和class 是一

动脑学院Android VIP课程_架构_01

架构_01 首先分享一波,公开课部分视频: 链接: https://yun.baidu.com/s/1c1K7f6C 密码: a3vp 有兴趣的可以先学习一下公开课内容,都还挺不错的,虽然有挺多时间是广告. 设计模式 设计模式六大原则 开闭原则(总则) 对扩展开放,对修改封闭 接口隔离原则 每个接口中不存在子类用不到却必须实现的方法,如果不然,就要将接口拆分. 依赖倒置原则 面向接口编程,依赖于抽象而不依赖于具体任何基类可以出现的地方,子类一定可以出现. 迪米特原则(最少知道原则) 一个类对自己

史上最全、最深、最细JAVA300集全套39.4G视频课程免费分享

尚学堂JAVA300集大型基础视频课程(史上最全.最深.最细) 中国首套大型JAVA技术视频 [已更新完至300集] 还在为如何学习JAVA技术而迷茫吗?还在为如何学习Android技术而迷茫吗? java300集大型基础视频课程,现已发布第三季更新至(300)集. 史上最全:覆盖工作中需要的所有技术点. 史上最细:讲师授课代码全部手工敲出,真正的手把手教授您如何编程. 史上最深:我们的基础视频也深刻的从内存结构进行分析.JDK源代码进行分析,这都是高手的必备技能.高手从入门抓起.入门时培养良好

12种排序算法:原理、图解、动画视频演示、代码以及笔试面试题目中的应用

出处:http://blog.csdn.net/han_xiaoyang/article/details/12163251. 声明:版权所有,转载请注明出处,谢谢. 0.前言 从这一部分开始直接切入我们计算机互联网笔试面试中的重头戏算法了,初始的想法是找一条主线,比如数据结构或者解题思路方法,将博主见过做过整理过的算法题逐个分析一遍(博主当年自己学算法就是用这种比较笨的刷题学的,囧),不过又想了想,算法这东西,博主自己学的过程中一直深感,基础还是非常重要的,很多难题是基础类数据结构和题目的思想综

我的STL学习之路

说起STL(标准模板库),相信了解C++的都不会陌生吧^_^.LZ是从大三开始学习C++(ps:不是科班出身),并慢慢接触使用STL的,在学校中使用STL比较多的情况是写数据结构代码,使用STL实现数据结构代码(我的数据结构源码),使我们专注于考虑算法思想,不拘泥于底层代码实现. 这里LZ不讲STL的具体知识,只讨论关于STL的学习和使用问题!结合LZ的学习过程,LZ觉得C++的学习(当然,这其中包括的STL)大致路线如下: 学习C++基本语法 掌握类.继承.多态等概念 理解面对对象和泛型编程思