《C/C++函数与算法(C++独立篇)》(Yanlz+VR云游戏+Unity+SteamVR+AI+stdio+string+math+time+vector+list+map+立钻哥哥++OK++)

C/C++函数与算法(C++独立篇)

C/C++函数与算法(C++独立篇)

版本

作者

参与者

完成日期

备注

YanlzCC++_Algorithm_V01_1.0

严立钻

 

2020.01.17

 

 

 

 

 

 

##《C/C++函数与算法(C++独立篇)》发布说明:

++++“C/C++函数与算法(C++独立篇)”:是对“C++C铸就生存利器”的综合探索;C/C++作为万能语言,可以开发嵌入式、物联网,也可以开发游戏(Cocos2dx、UE4);

++++“C/C++函数与算法(C++独立篇)”:定位在一个科普类知识,了解C/C++相关库和算法!

++++Tips:C++独立篇”:是《C/C++函数与算法》的姊妹篇,C++独立篇”将以C++库为核心;

 

++++姊妹篇推荐:

++++【C/C++函数与算法(C库独立篇)】:https://blog.csdn.net/VRunSoftYanlz/article/details/104026090

++++【C/C++函数与算法(算法独立篇)】:https://blog.csdn.net/VRunSoftYanlz/article/details/104062527

++++【C/C++函数与算法(Linux C独立篇)】:https://blog.csdn.net/VRunSoftYanlz/article/details/104076473

++++【C++C铸就生存利器】分类:https://blog.csdn.net/vrunsoftyanlz/category_9325802.html

 

 

@@提示:有些博客可能只是开了头,如果感兴趣的同学,可以“点赞”或“评论区留言”,只要关注的同学多了,那就会继续完善哟!(“++==”,表示没有写完的,如果关注度不高就不完善了;“++ok++”,表示此篇博客已经完成,是阶段性完整的!)

 

《C/C++函数与算法(C++独立篇)》(Yanlz+VR云游戏+Unity+SteamVR+AI+stdio+string+math+time+vector+list+map+立钻哥哥++OK++)_第1张图片

 

++++VR云游戏=Unity+SteamVR+云技术+5G+AI;(说明:AI人工智能不是我们的主要研究技术,只是了解一下,领略一下有风的感觉!但是,VR是我们的研究重点

 

 

 

##《C/C++函数与算法》目录

#第一篇:C语言函数

#第二篇:C++输入/输出

#第三篇:标准容器

#第四篇:算法

#第五篇:立钻哥哥带您C/C++编程

 

 

 

 

#第一篇:C语言函数

#第一篇:C语言函数

#第一篇:C语言函数

++++立钻哥哥:C语言和C++语言的类库丰富,利用这些函数可以实现各种功能,这就需要我们掌握CC++最为常用的函数;在第四篇还会介绍常用的算法,算法是程序员设计的灵魂

++++A1、ctype.h

++++A2、stdio.h

++++A3、string.h

++++A4、stdlib.h

++++A5、math.h

++++A6、conio.h

++++A7、graphics.h

++++A8、stdarg.h

++++A9、time.h

++++A10、dir.h

++++A11、立钻哥哥带您了解其他C函数库

++++【C/C++函数与算法(C库独立篇)】:https://blog.csdn.net/VRunSoftYanlz/article/details/104026090

《C/C++函数与算法(C++独立篇)》(Yanlz+VR云游戏+Unity+SteamVR+AI+stdio+string+math+time+vector+list+map+立钻哥哥++OK++)_第2张图片

 

 

 

 

 

 

 

 

#第二篇:C++输入/输出

#第二篇:C++输入/输出

#第二篇:C++输入/输出

++++立钻哥哥:C++标准库不仅包含了标准的C库,还包括输入/输出流(I/O)、字符串类(string)、标准容器和算法

++++B12、ios_base

++++B13、iostream

++++B14、文件流

++++B15、string

《C/C++函数与算法(C++独立篇)》(Yanlz+VR云游戏+Unity+SteamVR+AI+stdio+string+math+time+vector+list+map+立钻哥哥++OK++)_第3张图片

 

 

 

++B12、ios_base

++B12、ios_base

++B12、ios_base

++++立钻哥哥:ios_base类是C++中所有流类的基类,它描述了流的大多数基本属性和操作,它对所有流对象来说都是通用的;但是,ios_base类不用做定义对象

//立钻哥哥:成员函数

//ios_base类声明在xiosbase.h文件中

ios_base(const ios_base&);

virtual ~ios_base();

fmtflags flags() const;

fmtflags flags(fmtflags fmtfl);

fmtflags setf(fmtflags fmtfl);

fmtflags setf(fmtflags fmtfl, fmtflags mask);

void unsetf(fmtflags mask);

streamsize precision() const;

streamsize precision(streamsize prec);

streamsize width() const;

streamsize width(streamsize wide);

++++B12.1、flags

++++B12.2、setf/unsetf

++++B12.3、precision

++++B12.4、width

 

 

++++B12.1、flags

++++B12.1、flags

++B12.1、flags

++++立钻哥哥:flags函数的主要作用是得到/设置流的格式标志

fmtflags flags() const;

fmtflags flags(fmtflags fmtfl);

++++类型fmtflags可以用在成员函数flagssetfunsetf

++++fmtflags类型常量都是定义在ios_base类中的公共成员,因此,它们可以直接使用类名引用其成员,如ios_base::hex;也可以使用派生类或实例对象引用各个成员,如ios::leftcout.fixed

 

 

 

++++B12.2、setf/unsetf

++++B12.2、setf/unsetf

++B12.2、setf/unsetf

++++立钻哥哥:setf函数和unsetf函数分别用来设置/清除流的格式标志

fmtflags setf(fmtflags fmtfl);

fmtflags setf(fmtflags fmtfl, fmtflags mask);

void unsetf(fmtflags mask);

++++setf(fmtflags fmtfl)函数的作用相当于调用函数flags(fmtfl|flags()) ,setf(fmtflags, fmtflags mask)函数的作用相当于调用flags((fmtfl&mask)|(flags() & ~mask))unsetf(fmtflags mask)类型fmtflags可以用在成员函数flagssetfunsetf

 

 

 

++++B12.3、precision

++++B12.3、precision

++B12.3、precision

++++立钻哥哥:precision函数可以得到或设置浮点数的精度

streamsize precision() const;

streamsize precision(streamsize prec);

++++在默认情况下,精度表示输出小数点前后的数字最大个数;在定点和科学计数法的情况下,精度表示输出小数点后的数字个数

 

 

 

++++B12.4、width

++++B12.4、width

++B12.4、width

++++立钻哥哥:width函数用来得到/设置域宽

streamsize width() const;

streamsize width(streamsize wide);

 

 

 

 

 

 

 

++B13、iostream

++B13、iostream

++B13、iostream

++++立钻哥哥:iostream类继承自istream(输入流)和ostream(输出流)类,因此iostream类的对象可以执行输入/输出操作

++++iostream类的成员函数可以分为3个部分:由istream类派生的函数、由ostream派生的函数和由ios派生的函数

++++B13.1、get

++++B13.2、getline

++++B13.3、ignore

++++B13.4、peek

++++B13.5、read

++++B13.6、putback

++++B13.7、put

++++B13.8、fill

《C/C++函数与算法(C++独立篇)》(Yanlz+VR云游戏+Unity+SteamVR+AI+stdio+string+math+time+vector+list+map+立钻哥哥++OK++)_第4张图片

 

 

++++B13.1、get

++++B13.1、get

++B13.1、get

++++立钻哥哥:get函数的主要作用是执行无格式的输入操作

int get();

istream& get(char& c);

istream& get(char* s, streamsize n);

istream& get(char* s, streamsize n, char delim);

istream& get(streambuf& sb);

istream& get(streambuf& sb, char delim);

++++get函数是派生自istream流的成员函数,用来执行流的输入操作(标准输入、读取文件)

++++为了通过streambuf执行输入操作,需要利用rdbuf函数返回指向streambuf对象的指针;这样就可以通过流对象与rdbuf函数输出流中的内容了

 

 

 

++++B13.2、getline

++++B13.2、getline

++B13.2、getline

++++立钻哥哥:getline函数从输入流中析取字符串并存放到字符数组中

istream& getline(char* s, streamsize n);

istream& getline(char* s, streamsize n, char delim);

++++当输入限定符(\ndelim)或输入的字符个数为n-1时,停止从输入流中接受字符

++++getline函数是从istream类中派生的函数

 

 

 

++++B13.3、ignore

++++B13.3、ignore

++B13.3、ignore

++++立钻哥哥:ignore函数的作用是忽略指定的字符delim前面的字符,n表示接受并丢弃的字符个数

istream& ignore(streamsize n=1, int delim=EOF);

++++当接受了n个字符并丢弃或指定的delim字符出现后,ignore函数停止接受字符

 

 

 

++++B13.4、peek

++++B13.4、peek

++B13.4、peek

++++立钻哥哥:peek是未格式化输入函数,它的作用是检查输入的字符并将其提供给输入流

int peek();

++++peek函数与get函数都可以用来接收流中的字符,不同的是:peek函数还将流中的字符提供给下一个输入流,get函数只是接受流中的字符

++++peek函数派生自istream流的函数

 

 

 

++++B13.5、read

++++B13.5、read

++B13.5、read

++++立钻哥哥:read函数从流中读取n个字符并存放到字符数组s

istream& read(char* s, streamsize n);

++++read函数用来接受输入的字符块,它属于非格式输入函数,字符存放到字符数组s中后,并不会自动添加\0结束标志;因此,为了正确输出字符,需要手工添加\0

++++read函数派生自istream

 

 

 

++++B13.6、putback

++++B13.6、putback

++B13.6、putback

++++立钻哥哥:putback函数将前面用get函数或getline函数从输入流中读取的字符ch返回到输入流,插入到当前指针的位置,供后面读取

istream& putback(char ch);

++++putback函数派生自istream

 

 

 

++++B13.7、put

++++B13.7、put

++B13.7、put

++++立钻哥哥:put函数将字符ch输出到输出流缓冲区流指针指向的位置,并使流指针指向下一个位置以便接受下一个字符

ostream& put(char ch);

++++put函数派生自ostream

++++get函数与put函数类似于C语言中的fgetc函数与fputc函数,不仅可以用来作为标准输入与输出,还可以对文件进行读/写

 

 

 

++++B13.8、fill

++++B13.8、fill

++B13.8、fill

++++立钻哥哥:fill函数用来得到/设置填充字符

char fill() const;

char fill(char fillch);

++++fill函数派生自ios

 

 

 

 

 

 

 

++B14、文件流

++B14、文件流

++B14、文件流

++++立钻哥哥:ifstream类、ofstream类和fstream类都是对文件进行读/写操作的类,我们将这些类统称为文件流类;ifstream类、ofstream类和fstream类的定义包含在fstream.h文件中

++++C++语言中,要对文件进行读/写操作,需要将文件流类与文件关联起来(一般采用open的方式或构造函数的方式),然后利用文件流对文件进行操作

++++B14.1、ifstream

++++B14.2、rdbuf

++++B14.3、is_open

++++B14.4、open/close

++++B14.5、read/write

++++B14.6、seekg/tellg

++++B14.7、seekp/tellp

++++B14.8、flush

《C/C++函数与算法(C++独立篇)》(Yanlz+VR云游戏+Unity+SteamVR+AI+stdio+string+math+time+vector+list+map+立钻哥哥++OK++)_第5张图片

 

 

++B14.1、ifstream

++B14.1、ifstream

++B14.1、ifstream

++++立钻哥哥:ifstream类的构造函数用来创建输入流的对象

ifstream();

ifstream(const char *filename, ios_base::openmode mode=ios_base::in);

++++带参数的ifstream构造函数使流对象直接与物理文件相关联,在以后的使用过程中可以直接利用流对象对该文件进行操作

 

 

 

++++B14.2、rdbuf

++++B14.2、rdbuf

++B14.2、rdbuf

++++立钻哥哥:rdbuf函数返回指向filebuf的指针

filebuf *rdbuf() const;

++++filebuf类是由streambuf类派生出的;streambuf类负责对字符序列进行读/写,streambuf对象通常与特定的字符序列相关联,通过streambuf对象可以将数据读/写入内存缓冲区,这个内存缓冲区可以与字符序列相关联;由于filebuf类派生自streambuf类,因此具有了对字符序列读/写的功能,它主要负责对文件进行读/写操作

++++注意:对于ifstream流对象来说,即使没有文件被打开,与流相关的filebuf指针也不是空指针

 

 

 

++++B14.3、is_open

++++B14.3、is_open

++B14.3、is_open

++++立钻哥哥:is_open函数的作用是检测与流相关的文件是否被打开

bool is_open();

 

 

 

++++B14.4、open/close

++++B14.4、open/close

++B14.4、open/close

++++立钻哥哥:open函数的作用是打开文件filename,使文件与流对象相关联并对该文件执行输入/输出操作;具体操作的类型取决于参数mode,在默认情况下(省略第2个参数),在流上执行输入操作;close函数关闭与流对象相关的文件,使文件与流对象不相关;这两个函数是ifstream类中的成员函数

void open(const char *filename, ios_base::openmode mode=ios_base:in);

void close();

++++open(file, mode)函数实际上调用了rdbuf()->open(file, mode);;如果流对象已经与文件相关,则调用open函数失败

++++ifstream类、ofstream类和fstream类都有open成员函数和close成员函数;其中,它们的close成员函数原型相同

 

 

 

++++B14.5、read/write

++++B14.5、read/write

++B14.5、read/write

++++立钻哥哥:ifstream类的成员函数readostream类的成员函数write分别派生自istream类和ostream类;read函数从流中读取n个字符并存放到字符数组s中;write函数将长度为n的字符串s写入到输出流中

istream& read(char *s, streamsize n);

ostream& write(const char *s, streamsize n);

++++ifsteam类中的read函数用来从文件中读取数据,ofstream类中的write函数用来向文件中写入数据

 

 

 

++++B14.6、seekg/tellg

++++B14.6、seekg/tellg

++B14.6、seekg/tellg

++++立钻哥哥:ifstream类中,seekg函数和tellg函数分别用来设置/得到流的位置指针的位置;seekg函数用来设置流的位置指针的位置;其中,pos表示位置指针的位置,off表示基于dir的相对位移量

istream& seekg(streampos pos);

istream& seekg(streamoff off, ios_base::seekdir dir);

streampos tellg();

++++tellg函数返回输入流中从开始位置到当前位置指针所在位置之间的字符个数

++++seekg函数和tellg函数派生自istream

 

 

 

++++B14.7、seekp/tellp

++++B14.7、seekp/tellp

++B14.7、seekp/tellp

++++立钻哥哥:在文件输出流中,seekp函数和tell函数分别用来设置文件位置指针的位置和得到文件位置指针的位置;seekp函数在文件输出流中设置位置指针的位置,参数posoffdir的含义与seekg函数相同;tellp函数获得文件输出流中的位置指针位置

ostream& seekp(streampos pos);

ostream& seekp(streamoff off, ios_base::seekdir dir);

streampos tellp();

++++seekp函数与tellp函数派生自ostream类,它们都是ofstream类和fstream类的成员函数

 

 

 

++++B14.8、flush

++++B14.8、flush

++B14.8、flush

++++立钻哥哥:flush函数用来刷新输出流缓冲区;flush函数使输出流与相关联的缓冲区保持同步,实际上是将缓冲区的字符写入输出流中

ostream& flush();

++++flush函数的作用类似于endl控制符,都是将缓冲区的字符输出到流中;另外,endl控制符还有回车换行的作用

 

 

 

 

 

 

 

 

++B15、string

++B15、string

++B15、string

++++立钻哥哥:string类主要用于消除对char*的使用,以保持与现有代码的兼容性,它还会自动进行内存管理,方便地对字符进行操作,带来比使用char*更佳的性能

++++B15.1、字符串运算符函数

++++B15.2、字符串迭代器

++++B15.3、字符串长度

++++B15.4、字符串操作

 

 

 

++B15.1、字符串运算符函数

++B15.1、字符串运算符函数

++B15.1、字符串运算符函数

++++立钻哥哥:string类的构造函数用来创建字符串对象

++++B15.1.1、字符串构造函数

++++B15.1.2、=运算符函数

++++B15.1.3、+和+=运算符函数

++++B15.1.4、==、!=、<、>、<=、>=运算符函数

++++B15.1.5、[]运算符函数

++++B15.1.6、at函数

 

 

++++B15.1.1、字符串构造函数

++++B15.1.1、字符串构造函数

++B15.1.1、字符串构造函数

++++立钻哥哥:C++中,字符串构造函数有7个:第1个构造函数创建一个空的字符串对象;第2个构造函数创建一个str副本;第3个函数创建str中从pos开始长度为npos的子对象;第4个函数创建str中前n个字符的子序列;第5个函数创建一个字符串对象,其值为s指向的字符串;第6个函数创建一个长度为n字符为c的子序列;第7个函数创建一个由startend迭代器指定的字符集的字符串对象

string();

string(const string& str);

string(const string& str, size_t pos, size_t n=npos);

string(const char *s, size_t n);

string(const char *s);

string(size_t n, char c);

template<class InputIterator> string(InputIterator begin, InputIterator end);

++++string类的构造函数有多个,在创建string对象时,可以有多种形式,例如,可以利用string对象创建对象,也可以利用字符串创建string对象

 

 

 

++++B15.1.2、=运算符函数

++++B15.1.2、=运算符函数

++B15.1.2、=运算符函数

++++立钻哥哥:C++语言中,赋值运算符=函数的作用是将右端的字符串值赋值给左端的字符串对象

string& operator=(const string& str);

string& operator=(cosnt char *s);

string& operator=(char c);

++++string类的=运算符的作用与成员函数assign的作用类似,都是将右端的字符或字符串赋值给左端的string类对象

++++C++中定义函数时,通过在运算符前使用关键字operator来表示运算符重载函数;赋值运算符函数operator=C++string类的成员函数

 

 

 

++++B15.1.3、+和+=运算符函数

++++B15.1.3、+和+=运算符函数

++B15.1.3、+和+=运算符函数

++++立钻哥哥:+运算符函数的主要作用是将rhs连接在lhs之后,使其构成新的字符串对象;+=运算符函数的主要作用是在C++语言中,赋值运算符(=)的作用是将右端的字符串值赋值给左端的字符串对象

string operator+(const string& lhs, const string& rhs);

string operator+(const char *lhs, const string& rhs);

string operator+(char lhs, const string& rhs);

string operator+(const string& lhs, const char *rhs);

string operator+(const string& lhs, char rhs);

string& operator+=(const string& str);

string& operator+=(const char *s);

string& operator+=(char c);

++++说明:+运算符函数和+=运算符函数都是运算符重载函数,+运算符函数返回字符串对象,+=运算符函数返回字符串对象的引用;这两种运算符函数类似于简单运算符+和复合运算符+=的操作

 

 

 

++++B15.1.4、==、!=、<、>、<=、>=运算符函数

++++B15.1.4、==、!=、<、>、<=、>=运算符函数

++B15.1.4、==、!=、<、>、<=、>=运算符函数

++++立钻哥哥:==!=<><=>=运算符函数的主要作用分别是判断一个字符串对象是否相等、不相等、小于、大于、小于等于、大于等于另一个字符串对象

bool operator==(const string& c1, const string& c2);

bool operator!=(const string& c1, const string& c2);

bool operator<(const string& c1, const string& c2);

bool operator>(const string& c1, const string& c2);

bool operator<=(const string& c1, const string& c2);

bool operator>=(const string& c1, const string& c2);

++++C++中,string类提供了两个字符串之间的比较运算符重载的实现,这对于字符串的操作是非常方便的;在C++中的其他类(对象)操作中,如果要比较两个对象的关系,就需要用户对运算符进行重载

 

 

 

++++B15.1.5、[]运算符函数

++++B15.1.5、[]运算符函数

++B15.1.5、[]运算符函数

++++立钻哥哥:[]运算符函数的主要作用是返回string对象中下标为pos的字符

const char& operator[](size_t pos)const;

char& operator[](size_t pos);

++++在利用[]运算符函数存取string中的字符时,第一个字符的下标是从0开始的,而不是从1开始

 

 

 

++++B15.1.6、at函数

++++B15.1.6、at函数

++B15.1.6、at函数

++++立钻哥哥:at函数与[]运算符函数的作用类似,也是返回string对象中下标为pos的字符

const char& at(size_t pos)const;

char& at(size_t pos);

++++如果at函数中的参数取值超出了string范围,则会抛出一个越界异常

 

 

 

 

 

++B15.2、字符串迭代器

++B15.2、字符串迭代器

++B15.2、字符串迭代器

++++立钻哥哥:迭代器类似于指针,提供存取string中各个字符的方法

++++B15.2.1、begin/end

++++B15.2.2、rbegin/rend

 

 

++++B15.2.1、begin/end

++++B15.2.1、begin/end

++B15.2.1、begin/end

++++立钻哥哥:begin函数返回与string中第一个字符相关的迭代器;end函数返回与string中最后一个字符相关的迭代器

iterator begin();

const_iterator begin() const;

iterator end();

const_iterator end() const;

++++string中,begin函数和end函数分别都有两个版本;一种是非const string迭代的iterator,另一种是const string迭代的iterator;其中,const_string迭代器并不能修改所迭代的容器string

 

 

 

++++B15.2.2、rbegin/rend

++++B15.2.2、rbegin/rend

++B15.2.2、rbegin/rend

++++立钻哥哥:rbegin函数返回与string中最后一个字符相关的迭代器,它是反向的开始位置;rend函数返回与string中第一个字符之前字符相关的迭代器,它可以看做是反向的end函数

reverse_iterator rbegin();

const_reverse_iterator rbegin() const;

reverse_iterator rend();

const_reverse_iterator rend() const;

++++begin函数和end函数一样,rbegin函数和rend函数也分别由两个版本:一种是非const string迭代的iterator,另一种是const string迭代的iterator

++++rbegin迭代器与end迭代器指向的前一个字符相等,rend迭代器与begin迭代器指向的前一个字符相等

 

 

 

 

 

++B15.3、字符串长度

++B15.3、字符串长度

++B15.3、字符串长度

++++立钻哥哥:string类中,与字符串长度有关的函数主要有length函数、size函数、max_size函数、capacity函数、resize函数、reserve函数、empty函数等

++++B15.3.1、length/size

++++B15.3.2、max_size

++++B15.3.3、capacity

++++B15.3.4、resize

++++B15.3.5、reserve

++++B15.3.6、empty

 

 

++++B15.3.1、length/size

++++B15.3.1、length/size

++B15.3.1、length/size

++++立钻哥哥:length函数与size函数的作用等价,都是返回string中字符的个数

size_t length() const;

size_t size() const;

 

 

 

++++B15.3.2、max_size

++++B15.3.2、max_size

++B15.3.2、max_size

++++立钻哥哥:max_size函数返回string对象能容纳的最大字符个数

size_t max_size() const;

 

 

 

++++B15.3.3、capacity

++++B15.3.3、capacity

++B15.3.3、capacity

++++立钻哥哥:capacity函数返回分配给string对象存储空间大小

size_t capacity() const;

++++对于string来说,系统分配的存储空间不一定刚好等于字符串长度,它可能大于或等于字符串的长度

 

 

 

++++B15.3.4、resize

++++B15.3.4、resize

++B15.3.4、resize

++++立钻哥哥:resize函数的作用是重新设置string的长度为n

void resize(size_t n, char c);

void resize(size_t n);

++++如果n小于当前string的长度,则后续的字符将被抛弃;如果n大于当前string的长度,字符c的实例将被添加到末尾直到字符个数达到n

 

 

 

++++B15.3.5、reserve

++++B15.3.5、reserve

++B15.3.5、reserve

++++立钻哥哥:reserve函数的作用是请求为string对象预留大小为res_arg的内存空间

void reserve(size_t res_arg=0);

++++reserve函数可能会增加或减少string对象的内存空间

 

 

 

++++B15.3.6、empty

++++B15.3.6、empty

++B15.3.6、empty

++++立钻哥哥:empty函数的作用是判断string是否为空,即string的大小是否为0

bool empty();

++++[函数的返回值]:如果string的大小为0,则返回true;否则,返回false

++++empty函数并不能以任何方式修改string中的内容

 

 

 

 

 

++B15.4、字符串操作

++B15.4、字符串操作

++B15.4、字符串操作

++++立钻哥哥:字符串操作函数主要包括insert函数、erase函数、replace函数、swap函数、c_str函数、substr函数、copy函数、find函数、find_first_of函数、find_last_of函数

++++B15.4.1、insert

++++B15.4.2、erase

++++B15.4.3、replace

++++B15.4.4、swap

++++B15.4.5、c_str

++++B15.4.6、copy

++++B15.4.7、find

++++B15.4.8、find_first_of/find_last_of

++++B15.4.9、substr

 

 

++++B15.4.1、insert

++++B15.4.1、insert

++B15.4.1、insert

++++立钻哥哥:insert函数是在一个字符串中插入另一个字符串

string& insert(size_t pos1, const string& str);

string& insert(size_t pos1, const string& str, size_t pos2, size_t n);

string& insert(size_t pos1, const char *s, size_t n);

string& insert(size_t pos1, const char *s);

string& insert(size_t pos1, size_t n, char c);

iterator insert(iterator p, char c);

void insert(iterator p, size_t n, char c);

template<class InputIterator> void insert(iterator p, InputIterator first, InputIterator last);

++++注意:如果插入的是c类型的完整字符串,则字符串对象以\0结束;插入字符串或字符时,第1个字符以0开始,而不是以1开始;如果要插入的位置超过了当前字符串的范围,则抛出一个异常

 

 

 

++++B15.4.2、erase

++++B15.4.2、erase

++B15.4.2、erase

++++立钻哥哥:erase函数的作用是清除string中的字符,并缩短string的长度

string& erase(size_t pos=0, size_t n=npos);

iterator erase(iterator position);

iterator erase(iterator first, iterator list);

++++说明:对于第2erase函数来说,仅仅清除string中的一个字符

 

 

 

++++B15.4.3、replace

++++B15.4.3、replace

++B15.4.3、replace

++++立钻哥哥:replace函数的作用是用参数中的字符或字符串取代当前字符串对象中的字符序列

string& replace(size_t pos1, size_t n1, const string& str);

string& replace(iterator i1, iterator i2, const string& str);

string& replace(size_t pos1, size_t n1, const string& str, size_t pos2, size_t n2);

string& replace(size_t pos1, size_t n1, const char *s, size_t n2);

string& replace(iterator i1, iterator i2, const char *s, size_t n2);

string& replace(size_t pos1, size_t n1, const char *s);

string& replace(iterator i1, iterator i2, const char *s);

string& replace(size_t pos1, size_t n1, size_t n2, char c);

string& replace(iterator i1, iterator i2, size_t n2, char c);

template<class InputIterator> string& replace(iterator i1, iterator i2, InputIterator j1, InputIterator j2);

++++replace函数中,字符串中的下标是从0开始的,而不是从1开始;如果n1大于当前字符串的实际长度,则从pos1开始的整个字符串将被替换;如果n2小于实际的字符串长度,则最后一个字符之前的字符用来替换当前字符串

 

 

 

++++B15.4.4、swap

++++B15.4.4、swap

++B15.4.4、swap

++++立钻哥哥:swap函数的作用是将当前string对象与str对象中的内容交换;交换后,当前字符串的内容是str中的内容,str中的内容是当前字符串的内容

void swap(string& str);

 

 

 

++++B15.4.5、c_str

++++B15.4.5、c_str

++B15.4.5、c_str

++++立钻哥哥:c_str函数的作用是利用string对象中的内容生成C字符串并返回指向该字符串的指针

const char *c_str() const;

++++调用c_str函数后,转换后的C字符串末尾自动被增加一个\0的结束符

 

 

 

++++B15.4.6、copy

++++B15.4.6、copy

++B15.4.6、copy

++++立钻哥哥:copy函数的作用是从string对象中取出若干个字符存放到数组s中;其中,s是字符数组,n表示要取出字符的个数,pos表示要取出字符的开始位置

size_t copy(char *s, size_t n, size_t pos=0) const;

++++在调用copy函数时,应先为s分配内存空间使其能容纳n个字符;如果n大于posstring末尾字符的个数,则仅取出从posstring末尾的字符

 

 

 

++++B15.4.7、find

++++B15.4.7、find

++B15.4.7、find

++++立钻哥哥:find函数的作用是在当前string对象中查找指定的字符c或字符串s或字符串对象str

size_t find(const string& str, size_t pos=0) const;

size_t find(const char *s, size_t pos, size_t n) const;

size_t find(const char *s, size_t pos=0) const;

size_t find(char c, size_t pos=0) const;

 

 

 

++++B15.4.8、find_first_of/find_last_of

++++B15.4.8、find_first_of/find_last_of

++B15.4.8、find_first_of/find_last_of

++++立钻哥哥:find_first_of函数和find_last_of函数的作用都是在当前string中查找与strsc部分匹配的字符;二者的区别在于:find_first_of函数是从前往后查找,find_last_of函数是从后往前查找

size_t find_first_of(const string& str, size_t pos=0) const;

size_t find_first_of(const char *s, size_t pos, size_t n) const;

size_t find_first_of(const char *s, size_t pos=0) const;

size_t find_first_of(char c, size_t pos=0) const;

size_t find_last_of(const string& str, size_t pos=npos) const;

size_t find_last_of(const char *s, size_t pos, size_t n) const;

size_t find_last_of(const char *s, size_t pos=npos) const;

size_t find_last_of(char c, size_t pos=npos) const;

++++find_first_of函数与find函数的区别在于:对于find_first_of函数,指定字符串中某个字符与当前string对象中字符相等,则返回该字符在string中的位置;find函数则要求两个字符串完全匹配,而不仅仅要求某个字符相等

 

 

 

++++B15.4.9、substr

++++B15.4.9、substr

++B15.4.9、substr

++++立钻哥哥:substr函数的作用是由当前string对象生成子串并返回

string substr(size_t pos=0, size_t n=npos) const;

++++在默认情况下,substr函数返回包含string对象中所有字符的字符串;如果pos超过了string的范围,则出现越界错误;如果n超出了string的最大范围,则将pos之后的所有字符作为子串返回

 

 

 

 

 

 

 

 

#第三篇:标准容器

#第三篇:标准容器

#第三篇:标准容器

++++立钻哥哥:标准模板库包括标准容器、算法和迭代器

++++[标准容器]:标准容器是利用类模板组织并存储数据的集合,它管理着各种元素存储的空间并提供存取元素的各项操作,既可以直接存取元素也可以利用迭代器存取元素;标准容器分为3类:顺序容器、关联容器和容器适配器;其中,顺序容器包括vector类、deque类和list类,关联容器包括set类、map类、bitset类、multiset类、multimap类,容器适配器包括stack类、queue类、priority_queue

++++[标准算法]:标准算法用来操作集合中的元素,例如排序、查找、合并等;这些算法是全局的和具体的容器分离,利用迭代器对容器中的元素进行操作;这样做的好处就是不用为每一个容器类提供类似的服务,只用写一次代码就可以作用于所有的容器类型,减少了代码量,增强了灵活性

++++[迭代器]:迭代器是一种类似于指针的东西,标准库为每一种标准容器定义了一种迭代器类型;迭代器类型提供了比下标操作更一般化的方法,所有的标准库容器都定义了相应的迭代器类型,而只有少数的容器支持下标操作;因为迭代器对所有的容器都适用,在C++程序中,更倾向于适用迭代器而不是下标操作访问容器元素

++++C16、vector类

++++C17、deque类

++++C18、list类

++++C19、stack类

++++C20、queue类

++++C21、set类

++++C22、map类

《C/C++函数与算法(C++独立篇)》(Yanlz+VR云游戏+Unity+SteamVR+AI+stdio+string+math+time+vector+list+map+立钻哥哥++OK++)_第6张图片

《C/C++函数与算法(C++独立篇)》(Yanlz+VR云游戏+Unity+SteamVR+AI+stdio+string+math+time+vector+list+map+立钻哥哥++OK++)_第7张图片

 

 

 

++C16、vector类

++C16、vector类

++C16、vector类

++++立钻哥哥:vector类是一种顺序容器,也就是说,集合中的元素是严格按照线性序列存放的;vector容器可以看做是动态数组,容器中的元素存放在连续的存储区域;因此,vector容器中的元素不仅可以使用迭代器存取,也可以使用下标运算符进行访问

++++vector容器自动地分配存储区和释放存储区,不需要使用newdelete关键字对内存进行操作;vector容器还可以根据需要自动对内存区域进行扩展和收缩

++++vector容器最擅长的工作是:利用位置索引存取容器中的单个元素;以任何顺序迭代容器中的元素;在容器的末尾追加和删除元素

++++vector类中的函数可以分为:构造类函数、迭代器函数、容量类函数、存取类函数、操作类函数等

++++C16.1、构造类函数

++++C16.2、迭代器函数

++++C16.3、容量类函数

++++C16.4、存取类函数

++++C16.5、操作类函数

 

 

++C16.1、构造类函数

++C16.1、构造类函数

++C16.1、构造类函数

++++立钻哥哥:vector容器的构造类函数包括构造函数和析构函数

++++C16.1.1、vector的构造函数和析构函数

++++C16.1.2、operator=函数

 

 

++++C16.1.1、vector的构造函数和析构函数

++++C16.1.1、vector的构造函数和析构函数

++C16.1.1、vector的构造函数和析构函数

++++立钻哥哥:C++中,字符串构造函数有4个;其中,第1个构造函数是默认的构造函数,它的作用是创建一个空的vector对象;第2个是重复序列构造函数,创建多个相同的vector对象副本;第3个函数是迭代构造函数,利用迭代器创建vector对象;第4个函数是拷贝构造函数,创建一个与x相同的vector对象

vector(const Allocator& =Allocator());

vector(size_type n, const T& value=T(), const Allocator& =Allocator());

template<class InputIterator> vector(InputIterator first, InputIterator last, const Allocator& =Allocator());

vector(const vector<T, Allocator>& x);

~vector();

++++在使用迭代器构造vector对象时,当前vector容器的内容是[first, last]之间的元素;注意:包括first指向的元素,而不包括last指向的元素

++++析构函数~vector()在程序结束时由系统自动调用

 

 

 

++++C16.1.2、operator=函数

++++C16.1.2、operator=函数

++C16.1.2、operator=函数

++++立钻哥哥:operator=函数的作用是将vector对象x中的内容复制到当前的vector对象中

vector& operator=(const vector& x);

 

 

 

++C16.2、迭代器函数

++C16.2、迭代器函数

++C16.2、迭代器函数

++++立钻哥哥:迭代器类似于C/C++中的指针,指向容器中的元素,利用迭代器可以很方便地存取容器中的元素

++++C16.2.1、begin/end

++++C16.2.2、rbegin/rend

 

 

++++C16.2.1、begin/end

++++C16.2.1、begin/end

++C16.2.1、begin/end

++++立钻哥哥:begin函数的作用是返回vector容器中的第一个元素位置;end函数的作用是返回vector容器中的最后一个元素的后一个位置

iterator begin();

const_iterator begin() const;

iterator end();

const_iterator end() const;

 

 

 

++++C16.2.2、rbegin/rend

++++C16.2.2、rbegin/rend

++C16.2.2、rbegin/rend

++++立钻哥哥:rbegin函数的作用是返回与vector中最后一个元素相关的迭代器;rend函数的作用是返回与vector中第一个字符之间元素相关的迭代器

reverse_iterator rbegin();

const_reverse_iterator rbegin() const;

reverse_iterator rend();

const_reverse_iterator rend() const;

++++rbegin函数和rend函数与begin函数和end函数的作用一样,区别仅在于它们的迭代方向不同:一个是从左到右进行迭代,一个是从右往左进行迭代

 

 

 

++C16.3、容量类函数

++C16.3、容量类函数

++C16.3、容量类函数

++++立钻哥哥:vector容器中,容量类函数主要指的是与容器的大小有关的函数,这些函数主要包括size函数、max_size函数、capaticy函数、resize函数、empty函数、reserve函数

++++C16.3.1、size/max_size/capacity

++++C16.3.2、empty

++++C16.3.3、resize

++++C16.3.4、reserve

 

 

++++C16.3.1、size/max_size/capacity

++++C16.3.1、size/max_size/capacity

++C16.3.1、size/max_size/capacity

++++立钻哥哥:size函数的作用是返回vector容器中元素的个数;max_size函数的作用是返回vector容器能容纳的最大元素个数;capacity函数的作用是返回为vector容器分配的存储空间大小

size_type size() const;

size_type max_size() const;

size_type capacity() const;

 

 

 

++++C16.3.2、empty

++++C16.3.2、empty

++C16.3.2、empty

++++立钻哥哥:empty函数的作用是判断vector容器是否为空,即vector容器的元素个数是否为0

bool empty() const;

++++empty函数并不会修改vector容器中的元素,如果要清除vector容器中的元素,需要调用clear函数

 

 

 

++++C16.3.3、resize

++++C16.3.3、resize

++C16.3.3、resize

++++立钻哥哥:resize函数的作用是重新调整vector容器的大小使之包含sz个元素

void resize(size_type sz, T c=T());

++++如果sz小于原来vector容器的大小,则保留容器前面的元素值,后面的元素被抛弃;如果sz大于原来vector的大小,则在容器的末尾插入元素c,使容器的大小到达sz个;这里所说的vector容器的大小指的是元素的实际个数,而不是vector容器的存储空间大小;size_type是一个无符号整型

 

 

 

++++C16.3.4、reserve

++++C16.3.4、reserve

++C16.3.4、reserve

++++立钻哥哥:reserve函数的作用是重新为vector容器分配内存空间使其至少能容纳n个元素

void reserve(size_type n);

++++reserve函数中的参数n表示为vector容器分配的最少内存空间大小;调用reserve函数后,原来vector容器中的元素不会受到影响,并且不会改变容器中的实际元素个数和容器所能容纳的最大元素个数

 

 

 

 

++C16.4、存取类函数

++C16.4、存取类函数

++C16.4、存取类函数

++++立钻哥哥:vector操作类函数主要包括operator[]函数、at函数、front函数、back函数

++++C16.4.1、operator[]

++++C16.4.2、at

++++C16.4.3、front/back

 

 

++++C16.4.1、operator[]

++++C16.4.1、operator[]

++C16.4.1、operator[]

++++立钻哥哥:operator[]函数是运算符重载函数,它的作用是存取vector容器中的元素

reference operator[](size_type n);

const_reference operator[](size_type n) const;

++++类型referenceconst_reference都是vector容器中元素的引用类型,通常分别被定义为T&const T&

++++operator[]函数的作用类似于函数at,它们都用来存取vector容器中的元素,区别仅在于at函数自动进行越界检查

 

 

 

++++C16.4.2、at

++++C16.4.2、at

++C16.4.2、at

++++立钻哥哥:at函数的作用与operator[]函数一样,也是用来存取vector容器中的元素

const_reference at(size_type n) const;

reference at(size_type n);

++++如果参数n大于或等于vector容器的实际大小,则抛出一个越界异常

 

 

 

++++C16.4.3、front/back

++++C16.4.3、front/back

++C16.4.3、front/back

++++立钻哥哥:front函数的作用是返回vector容器中的第一个元素;back函数的作用是返回vector容器中的最后一个元素

reference front();

const_reference front() const;

reference back();

const_reference back() const;

++++begin函数和end函数分别返回vector容器中元素的迭代器,而front函数和back函数则直接返回元素

 

 

 

 

++C16.5、操作类函数

++C16.5、操作类函数

++C16.5、操作类函数

++++立钻哥哥:vector操作类函数主要包括assign函数、push_back函数、pop_back函数、insert函数、erase函数、swap函数、clear函数等

++++C16.5.1、assign

++++C16.5.2、push_back

++++C16.5.3、pop_back

++++C16.5.4、insert

++++C16.5.5、erase

++++C16.5.6、clear

++++C16.5.7、swap

 

 

++++C16.5.1、assign

++++C16.5.1、assign

++C16.5.1、assign

++++立钻哥哥:assign函数的作用是利用迭代器或指定的值为当前的vector容器中的元素赋值

void assign(InputIterator first, InputIterator last);

void assign(size_type n, const T& u);

++++在利用迭代器firstlast为当前的vector容器赋值时,要赋值的元素范围是[first, last),即包括first指向的元素而不包括last指向的元素

 

 

 

++++C16.5.2、push_back

++++C16.5.2、push_back

++C16.5.2、push_back

++++立钻哥哥:push_back函数的作用是在vector容器的最后一个元素之后添加元素x

void push_back(const T& x);

++++当调用push_back函数后,vector容器的实际元素个数增1;当实际元素个数等于vector容器的存储空间大小时,系统自动为该容器分配内存空间

 

 

 

++++C16.5.3、pop_back

++++C16.5.3、pop_back

++C16.5.3、pop_back

++++立钻哥哥:pop_back函数的作用是删除vector容器中的最后一个元素

void pop_back();

 

 

 

++++C16.5.4、insert

++++C16.5.4、insert

++C16.5.4、insert

++++立钻哥哥:insert函数的作用是在vector容器中插入元素

iterator insert(iterator position, const T& x);

void insert(iterator position, size_type n, const T& x);

void insert(iterator position, InputIterator first, InputIterator last);

++++3个函数不仅可以接受vector容器的迭代器作为参数,数组的指针也可以作为参数

++++对于第3个函数来说,输入对象的[first, last)之间的元素都将插入到vector容器中,包括first指向的元素,但不包括last指向的元素

 

 

 

++++C16.5.5、erase

++++C16.5.5、erase

++C16.5.5、erase

++++立钻哥哥:erase函数的作用是删除vector容器中的指定元素

iterator erase(iterator position);

iterator erase(iterator first, iterator last);

++++erase函数返回删除指定元素后一个位置

 

 

 

++++C16.5.6、clear

++++C16.5.6、clear

++C16.5.6、clear

++++立钻哥哥:clear函数的作用是清除vector容器中的所有元素

void clear();

++++调用clear函数后,当前vector容器中的元素个数为0

 

 

 

++++C16.5.7、swap

++++C16.5.7、swap

++C16.5.7、swap

++++立钻哥哥:swap函数的作用是将当前vector容器中的内容与vec容器中的内容互换

void swap(vector<T, Allocator>& vec);

++++调用swap函数后,当前vector容器中的元素成为vec容器中的元素,vec容器中的元素成为当前vector容器中的元素

++++要交换的两个vector容器的大小不一定相同

 

 

 

 

 

 

 

++C17、deque类

++C17、deque类

++C17、deque类

++++立钻哥哥:deque被称为双端队列,它也是一种顺序容器;deque容器具有的性质:利用位置索引可以存取容器中的单个元素;可以通过任何顺序迭代容器中的元素;可以在容器的开始和末尾追加/删除元素

++++deque容器与vector容器提供类似的功能,与vector容器不同的是,deque容器不仅可以在容器的末尾插入/删除元素,还可以在容器的开始位置插入/删除元素

++++deque类中的函数可以分为:构造类函数、迭代器函数、容量类函数、存取类函数、操作类函数等

++++C17.1、构造类函数

++++C17.2、迭代器函数

++++C17.3、容量类函数

++++C17.4、存取类函数

++++C17.5、操作类函数

 

 

++C17.1、构造类函数

++C17.1、构造类函数

++C17.1、构造类函数

++++立钻哥哥:deque容器的构造类函数包括构造函数和析构函数

++++C17.1.1、deque的构造函数和析构函数

++++C17.1.2、operator=函数

 

 

++++C17.1.1、deque的构造函数和析构函数

++++C17.1.1、deque的构造函数和析构函数

++C17.1.1、deque的构造函数和析构函数

++++立钻哥哥:deque构造函数的作用是创造deque容器并初始化容器中的元素

deque(const Allocator& =Allocator());

deque(size_type n, const T& value=T(), const Allocator& =Allocator());

deque(InputIterator first, InputIterator last, const Allocator& =Allocator());

deque(const deque<T, Allocator>& x);

~deque();

++++在使用迭代器firstlast构造deque对象时,当前deque容器中包含first指向的元素,而不包括last指向的元素

++++析构函数~deque()在程序结束时由系统自动调用

 

 

++++C17.1.2、operator=函数

++++C17.1.2、operator=函数

++C17.1.2、operator=函数

++++立钻哥哥:operator=函数的作用是将deque对象x中的内容复制到当前的deque对象中

deque<T, Allocator>& operator=(const deque<T, Allocator>& x);

++++当调用operator=函数后,当前deque容器中的内容被x中的内容替换掉,x容器与当前的容器大小相同

 

 

 

++C17.2、迭代器函数

++C17.2、迭代器函数

++C17.2、迭代器函数

++++立钻哥哥:deque容器包括4个迭代器:beginendrbeginrend,利用这些迭代器可以很方便地存取容器中的元素

++++C17.2.1、begin/end

++++C17.2.2、rbegin/rend

 

 

++++C17.2.1、begin/end

++++C17.2.1、begin/end

++C17.2.1、begin/end

++++立钻哥哥:begin函数的作用是返回deque容器中的第一个元素位置;end函数的作用是返回deque容器中的最后一个元素的后一个位置

iterator begin();

const_iterator begin() const;

iterator end();

const_iterator end() const;

++++迭代器begin指向deque容器中的第一个元素,迭代器end指向deque容器中的最后一个元素之后的位置,而不是指向最后一个元素

++++注意将begin函数与front函数、end函数与back函数区别开来;begin函数返回第1个元素的位置,front函数返回第1个元素;end函数返回最后一个元素之后一个的位置,back函数返回最后一个元素之后的元素

 

 

 

++++C17.2.2、rbegin/rend

++++C17.2.2、rbegin/rend

++C17.2.2、rbegin/rend

++++立钻哥哥:rbegin函数的作用是返回与deque中最后一个元素相关的迭代器;rend函数的作用是返回与deque中第一个元素之前的元素相关的迭代器

reverse_iterator rbegin();

const_reverse_iterator rbegin() const;

reverse_iterator rend();

const_reverse_iterator rend() const;

++++rbegin函数与begin函数、rend函数与end函数都指向迭代的元素,区别仅在于它们的迭代方向不同:begin函数与end函数从左到右进行迭代,rbegin函数与rend函数从右往左进行迭代

 

 

 

++C17.3、容量类函数

++C17.3、容量类函数

++C17.3、容量类函数

++++立钻哥哥:deque容器中,容器类函数主要指的是与容器的大小有关的函数,这些函数主要包括size函数、max_size函数、resize函数、empty函数等

++++C17.3.1、size/max_size

++++C17.3.2、empty

++++C17.3.3、resize

 

 

++++C17.3.1、size/max_size

++++C17.3.1、size/max_size

++C17.3.1、size/max_size

++++立钻哥哥:size函数的作用是返回deque容器中元素的个数;max_size函数的作用是返回deque容器能容纳的最大元素个数

size_type size() const;

size_type max_size() const;

 

 

 

++++C17.3.2、empty

++++C17.3.2、empty

++C17.3.2、empty

++++立钻哥哥:empty函数的作用是判断deque容器是否为空,即deque容器的元素个数是否为0

bool empty() const;

++++vector容器中的empty函数一样,deque中的empty函数也不会修改容器中的元素

 

 

 

++++C17.3.3、resize

++++C17.3.3、resize

++C17.3.3、resize

++++立钻哥哥:resize函数的作用是重新调整deque容器的大小使其包含sz个元素

void resize(size_type sz, T c=T());

++++如果sz小于原来deque容器的大小,则第sz之后的元素被抛弃,前面的元素仍被保留;如果sz大于原来deque的大小,则容器的大小扩展到sz个元素,并在末尾追加元素c;如果省略了参数c,则插入的元素值为0

 

 

 

 

++C17.4、存取类函数

++C17.4、存取类函数

++C17.4、存取类函数

++++立钻哥哥:deque存取类函数主要包括operator[]函数、at函数、front函数、back函数等

++++C17.4.1、operator[]

++++C17.4.2、at

++++C17.4.3、front/back

 

++++C17.4.1、operator[]

++++C17.4.1、operator[]

++C17.4.1、operator[]

++++立钻哥哥:operator[]函数是运算符重载函数,它的作用是存取deque容器中的元素

reference operator[](size_type n);

const_reference operator[](size_type n) const;

++++类型referenceconst_reference都是deque容器中元素的引用类型,通常分别被定义为T&const T&

++++operator[]函数与at函数的作用类似,它们都用来存取deque容器中的元素,区别仅在于at函数会自动进行越界检查

 

 

 

++++C17.4.2、at

++++C17.4.2、at

++C17.4.2、at

++++立钻哥哥:at函数的作用与operator[]函数一样,也是用来存取deque容器中的元素

const_reference at(size_type n) const;

reference at(size_type n);

++++在引用deque容器中的元素时,如果参数n大于或等于deque容器的实际大小,则抛出一个越界异常;第1个元素的下标从0开始,而不是从1开始

 

 

 

++++C17.4.3、front/back

++++C17.4.3、front/back

++C17.4.3、front/back

++++立钻哥哥:front函数的作用是返回deque容器中的第一个元素;back函数的作用是返回deque容器中的最后一个元素

reference front();

const_reference front() const;

reference back();

const_reference back() const;

++++begin函数和end函数分别返回deque容器中元素的迭代器,而front函数和back函数则直接返回容器中的元素

 

 

 

 

++C17.5、操作类函数

++C17.5、操作类函数

++C17.5、操作类函数

++++立钻哥哥:deque操作类函数主要包括assign函数、push_back函数、push_front函数、pop_back函数、pop_front函数、insert函数、erase函数、swap函数、clear函数等

++++C17.5.1、assign

++++C17.5.2、push_ back

++++C17.5.3、push_front

++++C17.5.4、pop_back

++++C17.5.5、pop_front

++++C17.5.6、insert

++++C17.5.7、erase

++++C17.5.8、clear

++++C17.5.9、swap

 

 

++++C17.5.1、assign

++++C17.5.1、assign

++C17.5.1、assign

++++立钻哥哥:assign函数的作用是将元素赋值给当前的deque容器,之前存放在deque容器中的内容被覆盖掉

void assign(InputIterator first, InputIterator last);

void assign(size_type n, const T& u);

++++在利用迭代器firstlastdeque容器赋值时,赋值的元素范围是[first, last),即包括first指向的元素而不包括last指向的元素

 

 

 

++++C17.5.2、push_ back

++++C17.5.2、push_ back

++C17.5.2、push_ back

++++立钻哥哥:push_back函数的作用是在deque容器的最后一个元素之后添加元素x

void push_back(const T& x);

++++调用push_back函数后,deque容器的实际元素个数增1,并将新元素追加在容器的最后,但并不会影响到deque中的其他元素

 

 

 

++++C17.5.3、push_front

++++C17.5.3、push_front

++C17.5.3、push_front

++++立钻哥哥:push_front函数的作用是在deque容器中的第1个元素前插入新元素x

void push_front(const T& x);

++++push_back一样,调用push_front函数也会使deque容器的实际大小自动增1,并在最前面增加一个元素值x

 

 

++++C17.5.4、pop_back

++++C17.5.4、pop_back

++C17.5.4、pop_back

++++立钻哥哥:pop_back函数的作用是移除deque容器中的最后一个元素

void pop_back();

++++调用pop_back函数之后,deque容器的实际大小自动减1

 

 

 

++++C17.5.5、pop_front

++++C17.5.5、pop_front

++C17.5.5、pop_front

++++立钻哥哥:pop_front函数的作用是移除deque容器中的第一个元素

void pop_front();

++++调用pop_front函数之后,deque容器的实际大小自动减1

 

 

 

++++C17.5.6、insert

++++C17.5.6、insert

++C17.5.6、insert

++++立钻哥哥:insert函数的作用是在deque容器中的指定位置插入元素x

iterator insert(iterator position, const T& x);

void insert(iterator position, size_type n, const T& x);

void insert(iterator position, InputIterator first, InputIterator last);

++++双端队列dequeinsert函数可以在deque容器的最前面和最后面插入元素,也可以在deque容器的任意位置插入元素

 

 

 

++++C17.5.7、erase

++++C17.5.7、erase

++C17.5.7、erase

++++立钻哥哥:erase函数的作用是删除deque容器中的指定元素

iterator erase(iterator position);

iterator erase(iterator first, iterator last);

++++erase函数不仅可以删除deque容器中最前面的元素和最后面的元素,还可以删除其他位置的元素,但是在删除其他位置的元素时的执行效率不如list容器

 

 

 

++++C17.5.8、clear

++++C17.5.8、clear

++C17.5.8、clear

++++立钻哥哥:clear函数的作用是清除deque容器中的所有元素

void clear();

++++调用clear函数后,当前deque容器中的元素个数为0

 

 

 

++++C17.5.9、swap

++++C17.5.9、swap

++C17.5.9、swap

++++立钻哥哥:swap函数的作用是将当前deque容器中的内容与dqe容器中的内容互换

void swap(deque& dqe);

++++调用swap函数后,两个deque容器中的内容互相对换;两个deque容器的大小不一定相同

 

 

 

 

 

 

 

++C18、list类

++C18、list类

++C18、list类

++++立钻哥哥:list是一种以双向链表方式实现的一种顺序容器;在list容器中,存放元素的存储单元可以是连续的,也可以是不连续的;list容器的特点是:可以对list中的每一个元素进行插入、删除、查找操作;与vector容器和deque容器相比,在list容器中插入、删除、移动元素更加方便,效果更高;由于list中的元素是通过指针链接在一起构成的链表,因此不能通过下标的方式存取元素;在list中访问元素的效率比在vector容器中的效率低;元素之间的指针占用了额外的内存空间

++++list类中的函数可以分为:构造类函数、迭代器函数、容量类函数、存取类函数、操作类函数

++++listC++的链表容器,它主要包括链表的大小函数、元素的存取函数、链表的操作函数等

++++C18.1、构造类函数

++++C18.2、迭代类函数

++++C18.3、容量类函数

++++C18.4、存取类函数

++++C18.5、操作类函数

 

 

++C18.1、构造类函数

++C18.1、构造类函数

++C18.1、构造类函数

++++立钻哥哥:list容器的构造函数包括构造函数和析构函数

++++C18.1.1、list的构造函数和析构函数

++++C18.1.2、operator=函数

 

 

++++C18.1.1、list的构造函数和析构函数

++++C18.1.1、list的构造函数和析构函数

++C18.1.1、list的构造函数和析构函数

++++立钻哥哥:list构造函数的作用是创建list容器并初始化容器中的元素;list析构函数的作用是撤销list容器的对象,并释放元素所占的存储区

list(const Allocator& =Allocator());

list(size_type n, const T& value=T(), const Allocator& =Allocator());

list(InputIterator first, InputIterator last, const Allocator& =Allocator());

list(const list<T, Allocator>& x);

~list();

++++在使用迭代器firstlast构造list对象时,当前list容器中包含first指向的元素,而不包括last指向的元素;另外,构造list对象时,不能对迭代器firstlast进行加减运算

++++析构函数~list()在程序结束时由系统自动调用

 

 

 

++++C18.1.2、operator=函数

++++C18.1.2、operator=函数

++C18.1.2、operator=函数

++++立钻哥哥:operator=函数的作用是将list对象x中的内容复制到当前的list对象中

list<T, Allocator>& operator=(const list<T, Allocator>& x);

++++当调用operator=函数后,当前list容器中的内容被x中的内容替换掉且两个list容器的大小相等

 

 

 

 

++C18.2、迭代类函数

++C18.2、迭代类函数

++C18.2、迭代类函数

++++立钻哥哥:list容器也包括4个迭代器:beginendrbeginrend,利用这些迭代器可以很方便地存取容器中的元素

++++C18.2.1、begin/end

++++C18.2.2、rbegin/rend

 

 

++++C18.2.1、begin/end

++++C18.2.1、begin/end

++C18.2.1、begin/end

++++立钻哥哥:begin函数返回list容器中的第一个元素位置;end函数返回list容器中的最后一个元素的后一个位置

iterator begin();

const_iterator begin() const;

iterator end();

const_iterator end() const;

++++迭代器begin指向list容器中的第一个元素,迭代器end指向list容器中的最后一个元素后一个元素的位置,并不是指向最后一个元素

++++vector容器一样,list容器也可以将数组指针(指针)作为参数

 

 

 

++++C18.2.2、rbegin/rend

++++C18.2.2、rbegin/rend

++C18.2.2、rbegin/rend

++++立钻哥哥:rbegin函数返回与list中最后一个元素相关的反向迭代器;rend函数返回与list中第一个元素的前一个位置相关的反向迭代器

reverse_iterator rbegin();

const_reverse_iterator rbegin() const;

reverse_iterator rend();

const_reverse_iterator rend() const;

++++利用rbegin函数与rend函数输出list容器中的元素时,需要使用反向迭代器控制元素的输出,即将迭代器定义:list::reverse_iterator rit;

 

 

 

 

++C18.3、容量类函数

++C18.3、容量类函数

++C18.3、容量类函数

++++立钻哥哥:list容器中,容量类函数主要指的是与容器的大小有关的函数,这些函数主要包括size函数、max_size函数、empty函数、resize函数等

++++C18.3.1、size/max_size

++++C18.3.2、empty

++++C18.3.3、resize

 

 

++++C18.3.1、size/max_size

++++C18.3.1、size/max_size

++C18.3.1、size/max_size

++++立钻哥哥:size函数返回list容器中元素的个数;max_size函数返回list容器能容纳的最大元素个数

size_type size() const;

size_type max_size() const;

++++vector容器一样,list容器中的size函数返回实际元素个数,max_size函数返回容器所能容纳的最大元素个数

 

 

 

++++C18.3.2、empty

++++C18.3.2、empty

++C18.3.2、empty

++++立钻哥哥:empty函数的作用是判断list容器是否为空,即list容器中的元素个数是否为0

bool empty() const;

++++vector容器中的empty函数一样,list中的empty函数只是判断容器是否为空,并不会修改容器中的元素

 

 

 

++++C18.3.3、resize

++++C18.3.3、resize

++C18.3.3、resize

++++立钻哥哥:resize函数的作用是调整list容器的大小使其包含sz个元素

void resize(size_type sz, T c=T());

++++如果sz小于原来list容器的大小,则只保留前面的sz个元素,后面的元素被抛弃;如果sz大于原来list的大小,则容器的大小扩展到sz个元素,并将元素c追加在list末尾;如果省略了参数c,则将0追加在list末尾

++++在这里,所改变容器大小指的是list容器中的实际元素个数,而不是list容量的存储空间大小

 

 

 

 

 

++C18.4、存取类函数

++C18.4、存取类函数

++C18.4、存取类函数

++++立钻哥哥:list存取类函数主要包括front函数和back函数;因为list容器实质上是一种双向链表,所以不存在operator[]函数和at函数

++++C18.4.1、front

++++C18.4.2、back

 

 

++++C18.4.1、front

++++C18.4.1、front

++C18.4.1、front

++++立钻哥哥:front函数的作用是返回list容器中的第一个元素

reference front();

const_reference front() const;

++++begin函数返回list容量第一个元素的迭代器,而front函数则直接返回容器中的第一个元素

 

 

 

++++C18.4.2、back

++++C18.4.2、back

++C18.4.2、back

++++立钻哥哥:back函数的作用是返回list容器中的最后一个元素

reference back();

const_reference back() const;

++++end函数返回list容器中最后一个元素的迭代器,而back函数则直接返回容器中的最后一个元素

 

 

 

 

 

++C18.5、操作类函数

++C18.5、操作类函数

++C18.5、操作类函数

++++立钻哥哥:list操作类函数主要包括assign函数、push_back函数、push_front函数、pop_back函数、pop_front函数、insert函数、erase函数、swap函数、clear函数等

++++C18.5.1、assign

++++C18.5.2、push_back

++++C18.5.3、push_front

++++C18.5.4、pop_back

++++C18.5.5、pop_front

++++C18.5.6、insert

++++C18.5.7、erase

++++C18.5.8、clear

++++C18.5.9、swap

++++C18.5.10、splice

++++C18.5.11、remove

++++C18.5.12、remove_if

++++C18.5.13、unique

++++C18.5.14、merge

++++C18.5.15、sort

++++C18.5.16、reverse

 

 

++++C18.5.1、assign

++++C18.5.1、assign

++C18.5.1、assign

++++立钻哥哥:assign函数的作用是将元素赋值给当前的list容器

void assign(InputIterator first, InputIterator last);

void assign(size_type n, const T& u);

++++在利用迭代器firstlastlist容器赋值时,赋值的元素范围是[first, last),即包含first指向的元素而不包含last指向的元素

 

 

 

++++C18.5.2、push_back

++++C18.5.2、push_back

++C18.5.2、push_back

++++立钻哥哥:push_back函数的作用是在list容器末尾添加元素x

void push_back(const T& x);

++++每调用一次push_back函数后,list容器的实际元素个数增1,并将新元素追加在容器的最后

 

 

 

++++C18.5.3、push_front

++++C18.5.3、push_front

++C18.5.3、push_front

++++立钻哥哥:push_front函数的作用是将元素x插入到list容器中的第1个元素前

void push_front(const T& x);

++++push_back函数一样,调用push_front函数也会使list容器的实际大小自动增1,并将元素x插入到list的第一个位置

 

 

 

++++C18.5.4、pop_back

++++C18.5.4、pop_back

++C18.5.4、pop_back

++++立钻哥哥:pop_back函数的作用是移除list容器中的最后一个元素

void pop_back();

++++调用pop_back函数之后,list容器的实际大小自动减1

 

 

 

++++C18.5.5、pop_front

++++C18.5.5、pop_front

++C18.5.5、pop_front

++++立钻哥哥:pop_front函数的作用是移除list容器中的第一个元素

void pop_front();

++++调用pop_front函数之后,list容器的实际大小自动减1

 

 

 

++++C18.5.6、insert

++++C18.5.6、insert

++C18.5.6、insert

++++立钻哥哥:insert函数的作用是在list容器中的指定位置插入元素x

iterator insert(iterator position, const T& x);

void insert(iterator position, size_type n, const T& x);

void insert(iterator position, InputIterator first, InputIterator last);

++++list容器是一种双向链表,可以在任意位置插入和删除元素;在顺序容器中,list中的插入和删除操作的效率是最高的

 

 

 

++++C18.5.7、erase

++++C18.5.7、erase

++C18.5.7、erase

++++立钻哥哥:erase函数的作用是删除list容器中的指定元素

iterator erase(iterator position);

iterator erase(iterator first, iterator last);

 

 

 

++++C18.5.8、clear

++++C18.5.8、clear

++C18.5.8、clear

++++立钻哥哥:clear函数的作用是清除list容器中的所有元素

void clear();

++++调用clear函数后,当前list容器的实际大小为0

 

 

 

++++C18.5.9、swap

++++C18.5.9、swap

++C18.5.9、swap

++++立钻哥哥:swap函数的作用是将当前list容器与lst容器中的元素互换

void swap(list<T, Allocator>& lst);

++++要交换的两个list容器的大小不一定相同

 

 

 

++++C18.5.10、splice

++++C18.5.10、splice

++C18.5.10、splice

++++立钻哥哥:splice函数的作用是将x中的元素移动到当前list容器的第position位置上,并将x中的元素删除

void splice(iterator position, list<T, Allocator>& x);

void splice(iterator position, list<T, Allocator>& x, iterator i);

void splice(iterator position, list<T, Allocator>& x, iterator first, iterator last);

++++x容器中的元素移动到当前的list容器后,x容器中该元素被删除;参数x也可以是当前的容器对象

 

 

 

++++C18.5.11、remove

++++C18.5.11、remove

++C18.5.11、remove

++++立钻哥哥:remove函数的作用是将当前list容器中值为value的元素移除

void remove(const T& value);

++++erase函数移除list中指定位置的元素,remove函数移除list中指定值的元素

 

 

 

++++C18.5.12、remove_if

++++C18.5.12、remove_if

++C18.5.12、remove_if

++++立钻哥哥:remove_if函数的作用是将值不等于pr(*P)的元素从list容器中删除;其中,P表示迭代器

void remove_if(binder2nd<not_equal_to<T>> pr);

++++binder2ndC++的一个模板类;模板类binder2nd对象Pr必须是有一对函数对象opy构成,其中,成员函数operator()将当前元素xy比较后返回bool

 

 

 

++++C18.5.13、unique

++++C18.5.13、unique

++C18.5.13、unique

++++立钻哥哥:unique函数的作用是移除list容器中相邻重复的元素(只保留一个)

void unique();

void unique(not_equal_to<T> pr);

++++对于第1个(不带参数)unique函数,它的作用是删除相邻元素中相等的元素,这些相同的元素只保留其中一个;对于第2unique函数,它的作用是删除所有与第1个元素不等的元素

 

 

 

++++C18.5.14、merge

++++C18.5.14、merge

++C18.5.14、merge

++++立钻哥哥:merge函数的作用是将两个list容器中元素合并

void merge(list<T, Allocator>& x);

void merge(list<T, Allocator>& x, greater<T> pr);

++++将容器x中的元素插入到当前的list容器中后,容器x为空

++++为了使合并后容器中的元素有序,需要在合并前先对容器中的元素进行排序

 

 

 

++++C18.5.15、sort

++++C18.5.15、sort

++C18.5.15、sort

++++立钻哥哥:sort函数的作用是将list容器中的元素进行排序

void sort();

void sort(greater<T> pr);

++++调用不带参数的sort函数时,将对list容器中的元素进行升序排列;调用带参数的sort函数时,将对list容器中的元素进行降序排列

 

 

 

++++C18.5.16、reverse

++++C18.5.16、reverse

++C18.5.16、reverse

++++立钻哥哥:reverse函数的作用是将list容器中元素逆置

void reverse();

++++逆置后,list容器中的元素以相反的顺序存放

 

 

 

 

 

 

 

 

++C19、stack类

++C19、stack类

++C19、stack类

++++立钻哥哥:stack是一种后进先出的容器适配器,它只允许在容器的末端进行插入和删除元素操作;其中,输出元素和输入元素的一端被称为栈顶;实质上,stack是利用类模板vectordequelist实现的适配器,而stack只需要其中的基本操作:back()push_back()pop_back()

++++stack类中的函数可以分为:构造类函数、容器类函数、存取类函数、操作类函数等

++++stackC++的栈容器;主要包括求栈的大小函数和存取操作;例如,top函数返回栈顶元素,push函数在栈顶位置插入新元素,pop函数用来删除栈顶元素

++++C19.1、构造类函数

++++C19.2、容量类函数

++++C19.3、存取类函数

++++C19.4、操作类函数

 

 

++C19.1、构造类函数

++C19.1、构造类函数

++C19.1、构造类函数

++++立钻哥哥:stack容器的构造类函数包括构造函数;stack的构造函数:创建stack对象

stack();

stack(const stack&);

stack& operator=(const stack&);

++++在更高版本的C++标准库中,stack的构造函数定义如下:stack(const Container& ctnr=Container());

 

 

 

++C19.2、容量类函数

++C19.2、容量类函数

++C19.2、容量类函数

++++立钻哥哥:stack容器中,容量类函数主要包括empty函数和size函数

++++C19.2.1、empty

++++C19.2.2、size

 

 

++++C19.2.1、empty

++++C19.2.1、empty

++C19.2.1、empty

++++立钻哥哥:empty函数的作用是判断stack容器是否为空

bool empty() const;

 

 

 

++++C19.2.2、size

++++C19.2.2、size

++C19.2.2、size

++++立钻哥哥:size函数的作用是返回stack容器中的实际元素个数

size_type size() const;

 

 

 

 

 

++C19.3、存取类函数

++C19.3、存取类函数

++C19.3、存取类函数

++++立钻哥哥:stack存取类函数主要包括top函数;top函数返回stack中的栈顶元素

value_type& top();

const value_type& top() const;

++++stack中的top函数的实现是通过调用顺序容器的back函数实现的

 

 

 

 

 

++C19.4、操作类函数

++C19.4、操作类函数

++C19.4、操作类函数

++++立钻哥哥:stack操作类函数主要有两个:push函数与pop函数

++++C19.4.1、push

++++C19.4.2、pop

 

 

++++C19.4.1、push

++++C19.4.1、push

++C19.4.1、push

++++立钻哥哥:push函数的作用是将元素x入栈,即把元素x插入到stack的栈顶元素

void push(const T& x);

++++stackpush函数是利用顺序容器的push_back函数实现的

 

 

 

++++C19.4.2、pop

++++C19.4.2、pop

++C19.4.2、pop

++++立钻哥哥:pop函数的作用是移除stack容器的栈顶元素

void pop();

++++调用pop函数后,stack容器中的大小减1stack容器中的pop函数是通过调用顺序容器的pop_back函数实现的

 

 

 

 

 

 

 

 

++C20、queue类

++C20、queue类

++C20、queue类

++++立钻哥哥:queue被称为队列,是一种先进先出(FIFO)的容器适配器;它只允许在一端进行插入元素操作,在另一端进行删除元素操作;其中,插入元素的一端被称为队尾,删除元素的一端被称为队头

++++queue隐含地调用了顺序容器的功能,它仅需要顺序容器的基本功能:front()、back()、push_back()、pop_back()等

++++queue类中的函数可以分为:构造类函数、容量类函数、存取类函数、操作类函数等

++++C20.1、构造类函数

++++C20.2、容量类函数

++++C20.3、存取类函数

++++C20.4、操作类函数

 

 

++C20.1、构造类函数

++C20.1、构造类函数

++C20.1、构造类函数

++++立钻哥哥:queue容器的构造类函数包括构造函数;queue的构造函数:创建queue对象;queue构造函数的作用是创建queue容器并初始化容器中的元素

queue();

queue(const queue&);

queue& operator=(const queue&);

++++在新版本的C++标准库中,queue的构造函数定义:queue(const Container& ctnr=Container());;它可以利用顺序容器Container构造queue对象,使用方法同stack中的构造函数

 

 

 

 

++C20.2、容量类函数

++C20.2、容量类函数

++C20.2、容量类函数

++++立钻哥哥:queue容器中,容量类函数主要包括empty函数与size函数

++++C20.2.1、empty

++++C20.2.2、size

 

 

++++C20.2.1、empty

++++C20.2.1、empty

++C20.2.1、empty

++++立钻哥哥:empty函数的作用是判断queue是否为空

bool empty() const;

 

 

 

++++C20.2.2、size

++++C20.2.2、size

++C20.2.2、size

++++立钻哥哥:size函数的作用是返回queue容器的大小,即实际元素个数

size_type size() const;

 

 

 

 

 

++C20.3、存取类函数

++C20.3、存取类函数

++C20.3、存取类函数

++++立钻哥哥:queue存取类函数主要包括front函数和back函数

++++C20.3.1、front

++++C20.3.2、back

 

 

++++C20.3.1、front

++++C20.3.1、front

++C20.3.1、front

++++立钻哥哥:front函数的作用是返回queue容器中的队头元素,即最早进入队列中的元素;所谓队列,就是只能在一端进行插入元素操作,另一端进行删除元素操作的线性表;其中,插入元素被称为入队列,删除元素被称为出队列;插入的一端被称为队尾,删除的一端被称为队头

value_type& front();

const value_type& front() const;

 

 

 

++++C20.3.2、back

++++C20.3.2、back

++C20.3.2、back

++++立钻哥哥:back函数的作用是返回queue容器中的队尾元素,即当前最后进入队列中的元素

value_type& back();

const value_type& back() const;

 

 

 

 

 

++C20.4、操作类函数

++C20.4、操作类函数

++C20.4、操作类函数

++++立钻哥哥:queue操作类函数主要包括push函数和pop函数

++++C20.4.1、push

++++C20.4.2、pop

 

 

++++C20.4.1、push

++++C20.4.1、push

++C20.4.1、push

++++立钻哥哥:push函数的作用是在queue容器的末尾追加一个新元素x;此时,队尾元素为x

void push(const T& x);

++++调用push函数之后,queue容器的实际大小自动增1

 

 

 

++++C20.4.2、pop

++++C20.4.2、pop

++C20.4.2、pop

++++立钻哥哥:pop函数的作用是移除queue容器中的队头元素,即最先进入到队列中的元素

void pop();

++++调用pop函数之后,queue容器的实际大小自动减1

 

 

 

 

 

 

 

++C21、set类

++C21、set类

++C21、set类

++++立钻哥哥:set(集合)和map(映射)都属于关联容器,它们都支持查询一个元素是否存在,并能有效地获取元素

++++set(集合)中的元素总是从小到大排列,set(集合)通过二分查找树实现;set(集合)具有两个特点:独一无二的元素,在set容器中,不存在两个值相等的元素;元素值就是关键字本身

++++set类中的函数可以分为:构造类函数、迭代器类函数、容量类函数、存取类函数、操作类函数等

++++setC++的集合容器;它主要包括求集合的大小函数和其他操作函数;例如,find函数返回要查找元素的迭代器,lower_bound函数返回大于等于某个值的第一个元素的迭代器

++++C21.1、构造类函数

++++C21.2、迭代器类函数

++++C21.3、容量类函数

++++C21.4、操作类函数

 

 

++C21.1、构造类函数

++C21.1、构造类函数

++C21.1、构造类函数

++++立钻哥哥:set容器的构造类函数包括构造函数和析构函数;set的构造函数:创建set对象;set构造函数的作用是创建set容器并将容器初始化

set(const Pred& comp=Pred(), const Allocator& =Allocator());

set(const set& x);

set(const value_type *first, const value_type *last, const Pred& comp=Pred(), const Allocator& =Allocator());

~set();

++++与前面的标准容器类似,在新版本的C++标准库中,set容器可以使用迭代器构造当前的set对象;而在旧版本的C++标准库中,允许利用指针对象初始化set对象

 

 

 

 

++C21.2、迭代器类函数

++C21.2、迭代器类函数

++C21.2、迭代器类函数

++++立钻哥哥:set容器中,迭代器类函数主要包括begin函数、end函数、rbegin函数及rend函数等

++++C21.2.1、begin/end

++++C21.2.2、rbegin/rend

 

 

++++C21.2.1、begin/end

++++C21.2.1、begin/end

++C21.2.1、begin/end

++++立钻哥哥:begin函数的作用是返回set容器中第一个元素的迭代器;end函数的作用是返回set容器中最后一个元素的迭代器,实际上返回的是最后一个元素的后一个位置

iterator begin();

const_iterator begin() const;

iterator end();

const_iterator end() const;

++++begin函数返回set容器的一个元素的位置,end函数返回set容器最后一个元素的下一个位置;这样在for循环中,从it=s.begin()it就可以利用*it存取set中的每一个元素

 

 

 

++++C21.2.2、rbegin/rend

++++C21.2.2、rbegin/rend

++C21.2.2、rbegin/rend

++++立钻哥哥:rbegin函数的作用是返回与最后一个元素相反的反向迭代器;rend函数的作用是判断deque容器是否为空,即deque容器的元素个数是否为0

reverse_iterator rbegin();

const_reverse_iterator rbegin() const;

reverse_iterator rend();

const_reverse_iterator rend() const;

++++因为在set容器中,元素都是按照从小到大排列,所以rbegin函数返回最大元素的位置,rend函数返回最小元素的前一个位置

 

 

 

 

 

++C21.3、容量类函数

++C21.3、容量类函数

++C21.3、容量类函数

++++立钻哥哥:set容器中,容量类函数主要包括empty函数、size函数、max_size函数等

++++C21.3.1、empty

++++C21.3.2、size

++++C21.3.3、max_size

 

 

++++C21.3.1、empty

++++C21.3.1、empty

++C21.3.1、empty

++++立钻哥哥:empty函数的作用是判断set是否为空

bool empty() const;

 

 

 

++++C21.3.2、size

++++C21.3.2、size

++C21.3.2、size

++++立钻哥哥:size函数的作用是返回set中的实际元素个数

size_type size() const;

 

 

 

++++C21.3.3、max_size

++++C21.3.3、max_size

++C21.3.3、max_size

++++立钻哥哥:max_size函数的作用是返回set能容纳的最大元素个数

size_type max_size() const;

++++max_size函数通常可以用于往set容器中插入元素之前的判定,当插入大量元素时,先利用max_size函数判定一下是否能插入这么多元素,然后再进行插入操作

 

 

 

 

 

++C21.4、操作类函数

++C21.4、操作类函数

++C21.4、操作类函数

++++立钻哥哥:set操作类函数主要包括insert函数、swap函数、erase函数、clear函数、find函数、count函数、lower_bound函数、upper_bound函数、equal_range函数等

++++C21.4.1、insert

++++C21.4.2、swap

++++C21.4.3、erase

++++C21.4.4、clear

++++C21.4.5、find

++++C21.4.6、count

++++C21.4.7、lower_bound/upper_bound

++++C21.4.8、equal_range

 

 

++++C21.4.1、insert

++++C21.4.1、insert

++C21.4.1、insert

++++立钻哥哥:insert函数的作用是将一个元素或一系列元素插入到set容器中

pair<iterator, bool> insert(const value_type& x);

iterator insert(iterator it, const value_type& x);

void insert(const value_type *first, const value_type *last);

++++对于第1insert函数来说,如果返回值为r,则r.first表示当前迭代器指向的元素位置,r.second的值只有两个:truefalsetrue表示插入成功,false表示插入失败

 

 

 

++++C21.4.2、swap

++++C21.4.2、swap

++C21.4.2、swap

++++立钻哥哥:swap函数的作用是将当前的set容器中的内容与str中的内容交换

void swap(set& str);

++++如果allocator==str.allocator,则函数的执行时间是常数;否则,将需要执行大量的元素赋值和构造函数的操作

 

 

 

++++C21.4.3、erase

++++C21.4.3、erase

++C21.4.3、erase

++++立钻哥哥:erase函数的作用是删除set中的元素

void erase(iterator it);

size_type erase(const key_type& x);

void erase(iterator first, iterator last);

++++删除元素后,set中的元素个数自动递减

 

 

 

++++C21.4.4、clear

++++C21.4.4、clear

++C21.4.4、clear

++++立钻哥哥:clear函数将当前的set容器中的元素清空

void clear();

++++clear函数通过调用erase(begin(), end())实现;

 

 

 

++++C21.4.5、find

++++C21.4.5、find

++C21.4.5、find

++++立钻哥哥:find函数的作用是返回set容器中元素x的迭代器

iterator find(const key_type& x)const;

++++[函数的返回值]:如果在set中找到元素x,则返回x的迭代器;否则,返回成员函数end的值

 

 

 

++++C21.4.6、count

++++C21.4.6、count

++C21.4.6、count

++++立钻哥哥:count函数的作用是在set容器中查找值为x的元素,并返回它在容器中出现的次数

size_type count(const key_type& x)const;

++++set容器中,因为不允许出现两个值相同的元素,所以如果要查找的元素存在,则返回值都是1;否则,返回值为0

 

 

 

++++C21.4.7、lower_bound/upper_bound

++++C21.4.7、lower_bound/upper_bound

++C21.4.7、lower_bound/upper_bound

++++立钻哥哥:lower_bound函数返回第一个不小于元素x的迭代器;upper_bound函数返回第一个大于元素x的迭代器

iterator lower_bound(const key_type& x)const;

iterator upper_bound(const key_type& x)const;

++++lower_bound函数返回[first, x]的下界,upper_bound函数返回(x, last)的上界;例如,如果set容器中的元素有10, 20, 30, 40, 50, 60lower_bound(30)指向的元素是30upper_bound(40)指向的元素是50

 

 

 

++++C21.4.8、equal_range

++++C21.4.8、equal_range

++C21.4.8、equal_range

++++立钻哥哥:equal_range函数的作用是返回一对迭代器(元素x的边界)

pair<iterator, iterator> equal_range(const key_type& x)const;

++++equal_range函数返回set容器中元素x的边界,x的上边界由pair::first表示,x的下边界由pair::second表示

 

 

 

 

 

 

 

 

++C22、map类

++C22、map类

++C22、map类

++++立钻哥哥:map也是一种关联容器,它也是用来存取数据的,数据的组成包括两个部分:数据值和关键字;其中,关键字是用来唯一标识数据元素的,通常利用关键字对数据进行排序;数据值与关键字无关,类型可以不用

++++map容器通过关键字存取元素,而不是像顺序容器那样利用相对位置存取元素;map容器具有的主要特征:它是一个相关联的容器,它的大小可以改变,能根据关键字提高读取数据的能力;利用双向的定位器读取数据;独一无二的关键字,容器中的元素按照关键字的非递减排列;每个元素都由关键字和数据值构成

++++map类中的函数可以分为:构造类函数、迭代器类函数、容量类函数、存取类函数、操作类函数等

++++mapC++的映射容器;它主要包括求map的容器大小函数、元素的存取函数和查找操作函数;例如,insert函数是插入一个元素到map中,erase函数用来清除map中的元素

++++C22.1、构造类函数

++++C22.2、迭代器类函数

++++C22.3、容量类函数

++++C22.4、存取类函数

++++C22.5、操作类函数

 

 

++C22.1、构造类函数

++C22.1、构造类函数

++C22.1、构造类函数

++++立钻哥哥:map容器的构造类函数包括构造函数、析构函数、赋值构造函数等

++++C22.1.1、map的构造函数和析构函数

++++C22.1.2、map的赋值运算符

 

 

++++C22.1.1、map的构造函数和析构函数

++++C22.1.1、map的构造函数和析构函数

++C22.1.1、map的构造函数和析构函数

++++立钻哥哥:map的赋值运算符是利用一个map对象x为新map对象赋值

map<Key, T, Compare, Allocator>& operator=(constap<Key, T, Compare, Allocator>& x);

++++利用map对象的赋值运算符之后,两个map对象的元素值和大小均相等

 

 

 

++++C22.1.2、map的赋值运算符

++++C22.1.2、map的赋值运算符

++C22.1.2、map的赋值运算符

++++立钻哥哥:map的赋值运算符是利用一个map对象x为新map对象的值

map<Key, T, Compare, Allocator>& operator=(constap<Key, T, Compare, Allocator>& x);

++++利用map对象的赋值运算符之后,两个map对象的元素值和大小均相等

 

 

 

 

 

++C22.2、迭代器类函数

++C22.2、迭代器类函数

++C22.2、迭代器类函数

++++立钻哥哥:map容器中,迭代类函数主要包括begin函数与end函数、rbegin函数和rend函数等

++++C22.2.1、begin/end

++++C22.2.2、rbegin/rend

 

 

++++C22.2.1、begin/end

++++C22.2.1、begin/end

++C22.2.1、begin/end

++++立钻哥哥:begin函数的作用是返回map中第一个元素的位置;end函数的作用是返回map中最后一个元素的后一个位置

iterator begin();

const_iterator begin() const;

iterator end();

const_iterator end() const;

++++map中的元素按照关键字从小到大排列,因此,迭代器函数begin总是指向map中的关键字最小的元素

++++迭代器函数end不是返回最后一个元素的位置,而是返回最后一个元素后一个位置

 

 

 

++++C22.2.2、rbegin/rend

++++C22.2.2、rbegin/rend

++C22.2.2、rbegin/rend

++++立钻哥哥:rbegin函数的作用是返回与最后一个元素相关的反向迭代器;rend函数的作用是返回map中第一个元素之前的反向迭代器

reverse_iterator rbegin();

const_reverse_iterator rbegin() const;

reverse_iterator rend();

const_reverse_iterator rend() const;

++++map容器内部,元素按照关键字从小到大排列,因此,rbegin函数返回最大关键字元素的位置,而rend函数不是返回第一个元素的位置,而是返回第一个元素前一个位置

 

 

 

 

++C22.3、容量类函数

++C22.3、容量类函数

++C22.3、容量类函数

++++立钻哥哥:map容器中的容量类函数主要包括empty函数、size函数、max_size函数等

++++C22.3.1、empty

++++C22.3.2、size

++++C22.3.3、max_size

 

 

++++C22.3.1、empty

++++C22.3.1、empty

++C22.3.1、empty

++++立钻哥哥:empty函数的作用是判断map容器是否为空,即map容器的大小是否为0

bool empty() const;

++++empty函数并不会修改map容器中的内容,如果要清空map容器,需要使用clear函数

 

 

 

++++C22.3.2、size

++++C22.3.2、size

++C22.3.2、size

++++立钻哥哥:size函数的作用是返回map容器中元素的个数

size_type size() const;

++++size_type被定义为无符号整型

++++为了控制输出的对齐方式及空格个数,可以使用流操作算子函数setiosflagssetw函数,需要包含头文件iomanip.h;例如,setiosflags(ios::right)表示靠右端输出,setw(6)表示占用宽度为6个字符

 

 

 

++++C22.3.3、max_size

++++C22.3.3、max_size

++C22.3.3、max_size

++++立钻哥哥:max_size函数的作用是返回map容器中所能容纳的最大元素个数

size_type max_size() const;

 

 

 

 

 

++C22.4、存取类函数

++C22.4、存取类函数

++C22.4、存取类函数

++++立钻哥哥:map的存取类函数主要是下标运算符;[]运算符的主要作用是存取map中的元素;如果xmap容器中的元素关键字相等,则[]运算符返回元素值的引用位置;否则,插入一个关键字和元素值

T& operator[](const key_type& x);

++++[]运算符是被C++重载的运算符,不是数组中的某个元素的下标,而是map中元素的关键字;例如,mymap[6]表示关键字为6的元素

 

 

 

 

 

++C22.5、操作类函数

++C22.5、操作类函数

++C22.5、操作类函数

++++立钻哥哥:map的操作类函数主要包括insert函数、erase函数、swap函数、clear函数、find函数和count函数等

++++C22.5.1、insert

++++C22.5.2、erase

++++C22.5.3、swap

++++C22.5.4、clear

++++C22.5.5、find

++++C22.5.6、count

 

 

++++C22.5.1、insert

++++C22.5.1、insert

++C22.5.1、insert

++++立钻哥哥:insert函数的作用是插入一个新元素或者一个元素序列

pair<iterator, bool> insert(const value_type& x);

iterator insert(iterator position, const value_type& x);

template<class InputIterator> void insert(InputIterator first, InputIterator last);

++++每插入一个元素,map容器的大小增加1;在map容器中,不允许有关键字相同的元素出现,因此在插入新元素时,首先要检查要插入的元素关键字是否相等,如果相等,则不能插入

 

 

 

++++C22.5.2、erase

++++C22.5.2、erase

++C22.5.2、erase

++++立钻哥哥:erase函数的作用是从map容器中移除一个元素或一些元素

void erase(iterator position);

size_type erase(const key_type& x);

void erase(iterator first, iterator last);

++++每移除一个元素,map容器的大小减去1,且系统自动调用析构函数释放其内存单元

 

 

 

++++C22.5.3、swap

++++C22.5.3、swap

++C22.5.3、swap

++++立钻哥哥:swap函数的作用是交换当前map容器与mp容器中的内容

void swap(map<Key, T, Compare, Allocator>& mp);

++++在调用swap函数时,需要保证两个map中元素类型必须保持一致,但是元素个数可以不同

 

 

 

 

++++C22.5.4、clear

++++C22.5.4、clear

++C22.5.4、clear

++++立钻哥哥:clear函数的作用是清除map容器中的所有元素,并释放其内存空间

void clear();

++++调用clear函数时,析构函数被自动调用,释放map对象的内存空间

 

 

 

++++C22.5.5、find

++++C22.5.5、find

++C22.5.5、find

++++立钻哥哥:find函数的作用是在map容器中查找关键字为x的元素,如果找到,则返回迭代器

iterator find(const key_type& x);

const_iterator find(const key_type& x) const;

++++key_type是一种关键字的数据类型

 

 

 

++++C22.5.6、count

++++C22.5.6、count

++C22.5.6、count

++++立钻哥哥:count函数的作用是返回某个元素关键字的个数

size_type count(const key_type& x) const;

++++因为map中不允许有重复的关键字,所以count函数的返回值只能是10

 

 

 

 

 

 

 

 

 

 

#第四篇:算法

#第四篇:算法

#第四篇:算法

++++立钻哥哥:算法(Algorithm)是程序设计的灵魂,它是用系统的方法描述解决问题的策略机制;一个正确的算法满足的性质:输入输出确定性有限性

++++[输入]:有零个或多个输入

++++[输出]:至少有一个输出

++++[确定性]:组成算法的每条指令清晰,无歧义

++++[有限性]:一个算法在执行有限步骤后必须结束,即计算步骤是有限的

++++描述算法可以由多种方式,如自然语言、流程图、伪代码、程序设计语言;算法设计就是针对具体的问题,设计出良好的算法,使计算机能够解决该问题;同一个问题可以采用不同的算法实现,不同的算法可能时间、空间并不相同,一个算法的优劣可以用空间复杂度与时间复杂度来衡量

++++算法设计中经常采用的排序算法、查找算法、迭代算法、递推算法、递归算法、枚举算法、贪心算法、回溯算法、矩阵算法等

++++D23、排序算法

++++D24、查找算法

++++D25、递推算法

++++D26、迭代算法

++++D27、递归算法

++++D28、枚举算法

++++D29、贪心算法

++++D30、回溯算法

++++D31、矩阵算法

++++【C/C++函数与算法(算法独立篇)】:https://blog.csdn.net/VRunSoftYanlz/article/details/104062527

《C/C++函数与算法(C++独立篇)》(Yanlz+VR云游戏+Unity+SteamVR+AI+stdio+string+math+time+vector+list+map+立钻哥哥++OK++)_第8张图片

 

 

 

 

++++VR云游戏=Unity+SteamVR+云技术+5G+AI;(说明:AI人工智能不是我们的主要研究技术,只是了解一下,领略一下有风的感觉!但是,VR是我们的研究重点

++++【C/C++函数与算法(C库独立篇)】:https://blog.csdn.net/VRunSoftYanlz/article/details/104026090

++++【C/C++函数与算法(C++库独立篇)】:https://blog.csdn.net/VRunSoftYanlz/article/details/104062275

++++【C/C++函数与算法(算法独立篇)】:https://blog.csdn.net/VRunSoftYanlz/article/details/104062527

++++【C/C++函数与算法(Linux C独立篇)】:https://blog.csdn.net/VRunSoftYanlz/article/details/104076473

++++【C++C铸就生存利器】分类:https://blog.csdn.net/vrunsoftyanlz/category_9325802.html

++++【人工智能AI2026】分类:https://blog.csdn.net/vrunsoftyanlz/category_9212024.html

++++【立钻哥哥CSDN空间】:https://blog.csdn.net/VRunSoftYanlz/

 

 

 

 

 

 

 

 

 

 

《C/C++函数与算法(C++独立篇)》(Yanlz+VR云游戏+Unity+SteamVR+AI+stdio+string+math+time+vector+list+map+立钻哥哥++OK++)_第9张图片

 

 

 

【XR游戏开发QQ群:784477094

++立钻哥哥推荐的拓展学习链接(Link_Url)

立钻哥哥推荐的拓展学习链接(Link_Url)

++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/

++++虚拟现实VR资讯: https://blog.csdn.net/VRunSoftYanlz/article/details/89165846

++++HTC_VIVE开发基础https://blog.csdn.net/VRunSoftYanlz/article/details/81989970

++++Oculus杂谈https://blog.csdn.net/VRunSoftYanlz/article/details/82469850

++++Oculus安装使用https://blog.csdn.net/VRunSoftYanlz/article/details/82718982

++++Unity+SteamVR=>VRhttps://blog.csdn.net/VRunSoftYanlz/article/details/88809370

++++Unity减少VR晕眩症https://blog.csdn.net/VRunSoftYanlz/article/details/89115518

++++SteamVR简介https://blog.csdn.net/VRunSoftYanlz/article/details/86484254

++++SteamVR脚本功能分析https://blog.csdn.net/VRunSoftYanlz/article/details/86531480

++++SteamVR2.0开发指南https://blog.csdn.net/VRunSoftYanlz/article/details/86618187

++++SteamVR2.2.0开发指南https://blog.csdn.net/VRunSoftYanlz/article/details/88784527

++++SteamVR2.2.0快速入门https://blog.csdn.net/VRunSoftYanlz/article/details/88833579

++++SteamVR2.2.0交互系统https://blog.csdn.net/VRunSoftYanlz/article/details/89199778

++++SteamVR2.2.0传送机制https://blog.csdn.net/VRunSoftYanlz/article/details/89390866

++++SteamVR2.2.0教程(一)https://blog.csdn.net/VRunSoftYanlz/article/details/89324067

++++SteamVR2.2.0教程(二)https://blog.csdn.net/VRunSoftYanlz/article/details/89894097

++++SteamVR_Skeleton_Poserhttps://blog.csdn.net/VRunSoftYanlz/article/details/89931725

++++SteamVR实战之PMCorehttps://blog.csdn.net/VRunSoftYanlz/article/details/89463658

++++SteamVR/Extrashttps://blog.csdn.net/VRunSoftYanlz/article/details/86584108

++++SteamVR/Inputhttps://blog.csdn.net/VRunSoftYanlz/article/details/86601950

++++OpenXR简介https://blog.csdn.net/VRunSoftYanlz/article/details/85726365

++++VRTK杂谈https://blog.csdn.net/VRunSoftYanlz/article/details/82562993

++++VRTK快速入门(杂谈)https://blog.csdn.net/VRunSoftYanlz/article/details/82955267

++++VRTK官方示例(目录)https://blog.csdn.net/VRunSoftYanlz/article/details/82955410

++++VRTK代码结构(目录)https://blog.csdn.net/VRunSoftYanlz/article/details/82780085

++++VRTK(SceneResources)https://blog.csdn.net/VRunSoftYanlz/article/details/82795400

++++VRTK_ControllerEventshttps://blog.csdn.net/VRunSoftYanlz/article/details/83099512

++++VRTK_InteractTouchhttps://blog.csdn.net/VRunSoftYanlz/article/details/83120220

++++虚拟现实行业应用https://blog.csdn.net/VRunSoftYanlz/article/details/88360157

++++Steam平台上的VRhttps://blog.csdn.net/VRunSoftYanlz/article/details/88960085

++++Steam平台热销VRhttps://blog.csdn.net/VRunSoftYanlz/article/details/89007741

++++VR实验:以太网帧的构成https://blog.csdn.net/VRunSoftYanlz/article/details/82598140

++++实验四:存储器扩展实验https://blog.csdn.net/VRunSoftYanlz/article/details/87834434

++++FrameVR示例V0913https://blog.csdn.net/VRunSoftYanlz/article/details/82808498

++++FrameVR示例V1003https://blog.csdn.net/VRunSoftYanlz/article/details/83066516

++++SwitchMachineV1022https://blog.csdn.net/VRunSoftYanlz/article/details/83280886

++++PlaySceneManagerV1022https://blog.csdn.net/VRunSoftYanlz/article/details/83280886

++++Unity5.x用户手册https://blog.csdn.net/VRunSoftYanlz/article/details/81712741

++++Unity面试题ABChttps://blog.csdn.net/vrunsoftyanlz/article/details/78630687

++++Unity面试题Dhttps://blog.csdn.net/VRunSoftYanlz/article/details/78630838

++++Unity面试题Ehttps://blog.csdn.net/vrunsoftyanlz/article/details/78630913

++++Unity面试题Fhttps://blog.csdn.net/VRunSoftYanlz/article/details/78630945

++++Cocos2dx面试题https://blog.csdn.net/VRunSoftYanlz/article/details/78630967

++++禅道[zentao]https://blog.csdn.net/VRunSoftYanlz/article/details/83964057

++++Lua快速入门篇(Xlua拓展):https://blog.csdn.net/VRunSoftYanlz/article/details/81173818

++++Lua快速入门篇(XLua教程):https://blog.csdn.net/VRunSoftYanlz/article/details/81141502

++++Lua快速入门篇(基础概述)https://blog.csdn.net/VRunSoftYanlz/article/details/81041359

++++框架知识点https://blog.csdn.net/VRunSoftYanlz/article/details/80862879

++++游戏框架(UI框架夯实篇)https://blog.csdn.net/vrunsoftyanlz/article/details/80781140

++++游戏框架(初探篇)https://blog.csdn.net/VRunSoftYanlz/article/details/80630325

++++.Net框架设计https://blog.csdn.net/VRunSoftYanlz/article/details/87401225

++++从零开始学架构https://blog.csdn.net/VRunSoftYanlz/article/details/88095895

++++设计模式简单整理https://blog.csdn.net/vrunsoftyanlz/article/details/79839641

++++专题:设计模式(精华篇)https://blog.csdn.net/VRunSoftYanlz/article/details/81322678

++++U3D小项目参考https://blog.csdn.net/vrunsoftyanlz/article/details/80141811

++++Unity小游戏算法分析https://blog.csdn.net/VRunSoftYanlz/article/details/87908365

++++Unity案例(Vehicle)https://blog.csdn.net/VRunSoftYanlz/article/details/82355876

++++UML类图https://blog.csdn.net/vrunsoftyanlz/article/details/80289461

++++PowerDesigner简介https://blog.csdn.net/VRunSoftYanlz/article/details/86500084

++++Unity知识点0001https://blog.csdn.net/vrunsoftyanlz/article/details/80302012

++++Unity知识点0008https://blog.csdn.net/VRunSoftYanlz/article/details/81153606

++++U3D_Shader编程(第一篇:快速入门篇)https://blog.csdn.net/vrunsoftyanlz/article/details/80372071

++++U3D_Shader编程(第二篇:基础夯实篇)https://blog.csdn.net/vrunsoftyanlz/article/details/80372628

++++Unity引擎基础https://blog.csdn.net/vrunsoftyanlz/article/details/78881685

++++Unity面向组件开发https://blog.csdn.net/vrunsoftyanlz/article/details/78881752

++++Unity物理系统https://blog.csdn.net/vrunsoftyanlz/article/details/78881879

++++Unity2D平台开发https://blog.csdn.net/vrunsoftyanlz/article/details/78882034

++++UGUI基础https://blog.csdn.net/vrunsoftyanlz/article/details/78884693

++++UGUI进阶https://blog.csdn.net/vrunsoftyanlz/article/details/78884882

++++UGUI综合https://blog.csdn.net/vrunsoftyanlz/article/details/78885013

++++Unity动画系统基础https://blog.csdn.net/vrunsoftyanlz/article/details/78886068

++++Unity动画系统进阶https://blog.csdn.net/vrunsoftyanlz/article/details/78886198

++++Navigation导航系统https://blog.csdn.net/vrunsoftyanlz/article/details/78886281

++++Unity特效渲染https://blog.csdn.net/vrunsoftyanlz/article/details/78886403

++++Unity数据存储https://blog.csdn.net/vrunsoftyanlz/article/details/79251273

++++Unity中Sqlite数据库https://blog.csdn.net/vrunsoftyanlz/article/details/79254162

++++WWW类和协程https://blog.csdn.net/vrunsoftyanlz/article/details/79254559

++++Unity网络https://blog.csdn.net/vrunsoftyanlz/article/details/79254902

++++Unity资源加密https://blog.csdn.net/VRunSoftYanlz/article/details/87644514

++++PhotonServer简介https://blog.csdn.net/VRunSoftYanlz/article/details/86652770

++++编写Photon游戏服务器https://blog.csdn.net/VRunSoftYanlz/article/details/86682935

++++C#事件https://blog.csdn.net/vrunsoftyanlz/article/details/78631267

++++C#委托https://blog.csdn.net/vrunsoftyanlz/article/details/78631183

++++C#集合https://blog.csdn.net/vrunsoftyanlz/article/details/78631175

++++C#泛型https://blog.csdn.net/vrunsoftyanlz/article/details/78631141

++++C#接口https://blog.csdn.net/vrunsoftyanlz/article/details/78631122

++++C#静态类https://blog.csdn.net/vrunsoftyanlz/article/details/78630979

++++C#中System.String类https://blog.csdn.net/vrunsoftyanlz/article/details/78630945

++++C#数据类型https://blog.csdn.net/vrunsoftyanlz/article/details/78630913

++++Unity3D默认的快捷键https://blog.csdn.net/vrunsoftyanlz/article/details/78630838

++++游戏相关缩写https://blog.csdn.net/vrunsoftyanlz/article/details/78630687

++++UnityAPI.Rigidbody刚体https://blog.csdn.net/VRunSoftYanlz/article/details/81784053

++++UnityAPI.Material材质https://blog.csdn.net/VRunSoftYanlz/article/details/81814303

++++UnityAPI.Android安卓https://blog.csdn.net/VRunSoftYanlz/article/details/81843193

++++UnityAPI.AndroidJNI安卓JNIhttps://blog.csdn.net/VRunSoftYanlz/article/details/81879345

++++UnityAPI.Transform变换https://blog.csdn.net/VRunSoftYanlz/article/details/81916293

++++UnityAPI.WheelCollider轮碰撞器https://blog.csdn.net/VRunSoftYanlz/article/details/82356217

++++UnityAPI.Resources资源https://blog.csdn.net/VRunSoftYanlz/article/details/83155518

++++JSON数据结构https://blog.csdn.net/VRunSoftYanlz/article/details/82026644

++++CocosStudio快速入门https://blog.csdn.net/VRunSoftYanlz/article/details/82356839

++++Unity企业内训(目录)https://blog.csdn.net/VRunSoftYanlz/article/details/82634668

++++Unity企业内训(第1讲)https://blog.csdn.net/VRunSoftYanlz/article/details/82634733

++++Unity企业内训(第2讲)https://blog.csdn.net/VRunSoftYanlz/article/details/82861180

++++Unity企业内训(第3讲)https://blog.csdn.net/VRunSoftYanlz/article/details/82927699

++++Unity企业内训(第4讲)https://blog.csdn.net/VRunSoftYanlz/article/details/83479776

++++Unity企业内训(第5讲)https://blog.csdn.net/VRunSoftYanlz/article/details/83963811

++++Unity企业内训(第6讲)https://blog.csdn.net/VRunSoftYanlz/article/details/84207696

++++钻哥带您了解产品原型https://blog.csdn.net/VRunSoftYanlz/article/details/87303828

++++插件https://blog.csdn.net/VRunSoftYanlz/article/details/83963905

++++计算机组成原理(教材篇)https://blog.csdn.net/VRunSoftYanlz/article/details/82719129

++++5G接入:云计算和雾计算https://blog.csdn.net/VRunSoftYanlz/article/details/88372718

++++云计算通俗讲义https://blog.csdn.net/VRunSoftYanlz/article/details/88652803

++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/

--_--VRunSoft:lovezuanzuan--_--

你可能感兴趣的:(C++C铸就生存利器,数据结构+游戏AI算法,Cocos2dx)