第十周 C++11新特性和C++高级主题 第一节 C++新特性(1) 1.统一的初始化方法 (1)int arr[3]{1, 2, 3}; (2)vector<int> iv{1, 2, 3}; (3)map<int, string> mp{{1,"a"},{2,"b"}}; (4)string str{"Hello World"}; (5)int * p = new int[20]{1,2,3}; (6)struct A{ int i,j; A(int m,int n):i(m),j(n)…
第十周 C++11新特性和C++高级主题 第一节 C++新特性(1) 1.统一的初始化方法 (1)int arr[3]{1, 2, 3}; (2)vector<int> iv{1, 2, 3}; (3)map<int, string> mp{{1,"a"},{2,"b"}}; (4)string str{"Hello World"}; (5)int * p = new int[20]{1,2,3}; (6)struct A{ int i,j; A(int m,int n):i(m),j(n)…
第四节 容器适配器 容器适配器没有迭代器! 1.stack stack是后进先出的数据结构,只能插入、删除和访问栈顶的元素。可以用vector、list和deque来实现,缺省使用deque实现。用vector和deque实现,比用list实现性能好。 template<class T, class Cont = deque<T> > class stack{ }; stack可以进行下面的操作: (1)push:插入元素; (2)pop:弹出元素; (3)top:返回栈顶元素的引用。 2.…
第一节 关联容器 set/multiset/map/multimap 内部元素有序排列,新元素插入的位置决定于它的值,查找速度快。 除了各容器都有的函数外,还支持以下成员函数: find: 查找等于某个值 的元素(x小于y和y小于x同时不成立即为相等) lower_bound : 查找某个下界 upper_bound : 查找某个上界 equal_range : 同时查找上界和下界 count :计算等于某个值的元素个数(x小于y和y小于x同时不成立即为相等) insert: 用以插入一个元素或一个区间 第二节 s…
第八周 标准模板库STL(一) 第一节 string类 1.关于string类 string类是模板类:typedef basic_string<char>string;实例出来的类。使用string类要包含头文件<string>。 string对象的初始化有以下几种类型: string s1(“Hello); string month = “March”; string s2(8,’x’); 以下的初始方法错误: string error1 = 'c';//error string err…
第七周:输入输出和模板 第一节 输入输出流相关的类 1.与输入输出流操作相关的类 图1.1 与输入输出流操作相关的类 istream是用于输入的流类,cin就是该类的对象;ostream是用于输出的流类,cout就是该类的对象;ifstream是用于从文件读取数据的类;ofstream是用于向文件写入数据的类;iostream是既能用于输入,又能用于输出的类;fstream 是既能从文件读取数据,又能向文件写入数据的类。 2.标准流对象 (1)输入流对象:cin与标准输入设备相连。 (2)输出流对象:cout与标准…
第六周:多态 第一节 虚函数和多态的基本概念 1.虚函数 在类的定义中,前面有virtual关键字的成员函数就是虚函数。 class base{ virtual int get(); } int base::get(){} virtual关键字只在类定义里的函数声明中,写函数体的时候不用。构造函数和静态函数不能使用virtual,即不能成为虚函数。 2.多态 (1)表现形式一 派生类的指针可以赋给基类指针。 通过基类指针调用基类和派生类中的同名虚函数时: ①若该指针指向一个基类的对象,那么背调用的是基类的虚函数; …
第五周 继承 第一节 继承和派生 1.继承 继承是在定义一个新类B时,如果该类与某个已有类A相似(指B至少拥有A的全部特点),那么就把A作为一个基类,B作为基类的一个派生类。 派生类是通过对基类进行修改和扩充得到的。在派生类中,可以扩充新的成员变量和成员函数。派生类一经定义后,可以独立使用,不依赖于基类。 派生类拥有基类的全部成员函数和成员变量,不论是private、protected、public。但是在派生类的各个成员函数中,不能访问基类中的private成员。 派生类的写法: class 派生类名: publ…