09 2021 档案
摘要:1.C++正则 正则是一种规则,它用来匹配(进而捕获、替换)字符串。这种规则需要“模式”、“字符串”这两样东西,“模式”根据正则规则,来处理“字符串”。这种规则被许多语言支持,C++11以后才支持正则。 #### 具有特殊意义的元字符 \:\字符能够改变字符原本的含义 ^:^字符指示字符串的头,且要
阅读全文
摘要:1.C++异常处理机制 int division(int a,int b) { if (b == 0) { throw 0; } return a / b; } void print(int a, int b) { try { division(a, b); } catch (int) { //根据
阅读全文
摘要:1.流的概念:若干个字节组成的一个字节序列,代表信息从源到目的流动 流类体系:用类实现的所有流操作 IO流 标准输入输出流 字符流 文件流 ios istream ostream >iostream strstream ifstream ofsteram >fstream /* No.1 输入流和输
阅读全文
摘要:1.函数包装器 /* 1.包含functional 2.作用: 把函数指针,函数对象,函数等,包装成一个对象 3.function<type> object(functionObject); type:返回值类型(参数类型) */ int Max(int a, int b) { return a >
阅读全文
摘要:1.shared_ptr class MM { public: MM() {} MM(string name, int age) :name(name), age(age) {} void print() { cout << name << "\t" << age << endl; } ~MM()
阅读全文
摘要:1.排序算法 sort: 基本排序 stable_sort: 相对排序 merge: 归并排序 inplace_merge: 改变原容器的归并 nth_element: 关键字排序 partition: 分类处理,满足谓词,放在左边,不满足放在右边 stable_partition: 保持原容器的相
阅读全文
摘要:1.查找算法 find: 区间查找 find_first_of: 查找区间第一次出现 adjacent_find: 查找第一次重复的数 search: 子序列查找 search_n: 子序列查找出现次数 count: 区间统计 count_if: 条件统计 equal: 比较 有序查找: binar
阅读全文
摘要:1.lambda表达式 /* Lambda表达式: 匿名函数 最终得到的结果是一个函数指针 产生函数指针的同时,对应的函数也已经定义好 No.1 Lambda表达式的组成部分 [捕获方式](函数参数) mutable exception ->函数返回值{ 函数体;} 捕获方式: []: 不捕获任何变
阅读全文
摘要:1.仿函数 /* 仿函数:让类的对象模仿函数调用的行为(函数名()) //对象() 关键点在于重载() 仿函数一般来说用来做比较准则 充当for_each的参数 No.1 自己写仿函数 */ class Sum { public: int operator()(const int a, const
阅读全文
摘要:1.迭代器 迭代器:可以说是一种访问容器的一个桥梁,类中类的一个对象,去模仿指针的行为 迭代器分类: 按照定义方式分类: + 正向迭代器: + 容器名::iterator iter; + begin(); + end(); + 常量正向迭代器 + 容器名::const_iterator citer
阅读全文
摘要:1.initalizer_list(列表) template <class _Ty> class MyVector { public: MyVector(int size) :curSize(0) { dataMemory = new _Ty[size]; } MyVector(initialize
阅读全文
摘要:1.tuple /* 可变参模板类 参数个数、数据类型不限定 */ void testCreateTuple() { //正常创建 tuple<int, string, double, float, int> tup1; tuple<int, string, string, double> tup2
阅读全文
摘要:1.map(映射) /* map:映射,一种对应关系 自带排序(按照键去排序) 键唯一,相同键采用最后一次插入的数据,覆盖的方式去处理 存储的数据是: 数对类型(pair) */ void testMap() { map<int, string>str; //1.pair对象插入 str.inser
阅读全文
摘要:1.set /* set:集合 1.1 不允许出现重复的数据,插入重复的只会存在一个 1.2 插入数据后,数据排好序,默认情况是从从小到大 No.1 set基本操作 No.2 处理自定义类型 */ void testSet() { set<string> s; s.insert("data1");
阅读全文
摘要:1.优先队列((priority_queue) void testCreatePriority_queue() { //最完整创建方式 //1.存储的数据类型 int //2.底层实现的容器类型 vector<int> //3.排序准则 less<int> greater<int> priority
阅读全文
摘要:1.双向队列(deque) void testDeque() { deque<int> data; data.push_back(1); data.push_front(2); data.push_back(3); cout << data.size() << endl; while (!data.
阅读全文
摘要:1.队列 先进先出 /* push(); pop(); front(); size(); empty(); */ using namespace std; void testQueue() { queue<string> strQue; strQue.push("Love"); strQue.pus
阅读全文
摘要:1.stack 后进先出 /* 1.基本操作 push(); pop(); top(); size(); empty(); */ void testStack() { stack<int> s; for (int i = 0; i < 10; i++) { s.push(i); } cout <<
阅读全文
摘要:1.List class MM { public: MM(string name, int age) :name(name), age(age) {} string getName() const{ return name; } int getAge() const{ return age; } p
阅读全文
摘要:1.vector void testCreateVector() { vector<int> vi; //构造时没有标长度不能直接用下表法访问 //vi[0]=1; vi = { 1,2,3,4 }; vector<string> vs = { "Hello","Hi","loveyou" }; v
阅读全文
摘要:1.array myArray.hpp //定义和实现写在一起的时候,用hpp #include <iostream> using namespace std; template <class T, size_t _size> class MyArray { public: MyArray() {
阅读全文
摘要:1.可变参模板函数 //列表方式展开 template<class _Ty> void print(_Ty data) { cout << data << endl; } template<class ...Args> void printData(Args... args) { int array
阅读全文
摘要:1.函数模板 //普通与模板同时存在的时候,优先使用普通函数 int Max(int a, int b) { return a > b ? a : b; } template <typename _Ty> _Ty Max(_Ty a, _Ty b) { return a > b ? a : b; }
阅读全文
摘要:1.虚析构函数 class MM { public: virtual void print() { cout << "MM" << endl; } virtual ~MM() { cout << "~MM" << endl; } }; class Girl:public MM { public: v
阅读全文
摘要:1.虚函数 + 在类中用virtual 修饰的函数 叫做虚函数+ 没有虚构造函数,但是存在虚析构函数 虚函数对于类的类内存影响 + 没有数据成员类是占用1个字节,普通函数对于类的内存是毫无影响 + 所有虚函数都是用一个指针存储:虚函数指针 + 通过虚函数表的理解去访问虚函数 class MM { p
阅读全文
摘要:1.类的继承中的同名问题 1.1正常继承中的同名问题 基本上C++同名问题都是就近原则 如果想访问父类成员,用类名限定即可。 2.虚继承(菱形继承) A >int a; B C B、C继承自A,D多继承于B、C >B:a C:a //B,C要虚继承A D >D: a a class A { publ
阅读全文
摘要:1.继承的传递性 继承具有传递性:无论继承多少次,属性都存在 2.多继承 class A { public: A(string name1, string name2) :name1(name1), name2(name2) {} protected: string name1; string na
阅读全文
摘要:1.基本概念 继承: 父类 子类 ,子类没产生新的东西 派生:基类 派生类 继承A 产生B ,A B 2.继承的实质 父类的属性在子类中也存在一份,构造函数不能被继承 3.继承的权限问题 | | public | protected | private || | | | || public继承 |
阅读全文
摘要:1.**默认的赋值重载** class MM { public: MM() {} MM(string name, int age) :name(name), age(age) {} MM(const MM& obj) { this->name = obj.name; this->age = obj.
阅读全文
摘要:1.基本重载 + 友元函数的方式实现重载+ 类成员函数的方式实现重载 重载函数的基本语法: 重载函数的返回值类型 operator 要重载的运算符(参数){函数体;}; 参数个数: + 友元重载 重载函数的参数个数等于运算符的操作数+ 类成员函数重载,重载函数参数个数是等于运算符的操作数-1 cla
阅读全文
摘要:1.友元 friend关键字,友元赋予对象具有打破权限限定的一个功能,并不是能够直接访问类中数据 2.友元函数 在类中用friend修饰的函数 称之为友元 在友元函数中 的对象具有打破权限限定,以一个对象为参数或者在当前函数中定义的对象,友元函数不属于类,所以不受权限限定 + 普通函数是友元函数 c
阅读全文
摘要:1.单例模式(不考虑多线程) 构造函数私有化。 提供静态公有接口访问对象。 1.1懒汉式(在多线程下存在安全问题) 1.2饿汉式 //懒汉式 namespace lanHan { class MM { public: static MM* getMM() { if (lpMM == nullptr)
阅读全文
摘要:1.static成员 static成员特性: 它的调用可以不需要对象,它整个类共有的,(所有对象用的都是同一个),不是某一个对象单独属性。static 的成员虽然不需要对象就可以调用,但是依然是类的权限限定的 + static数据成员 + static 修饰的数据成员,就是静态数据成员 + 不能在类
阅读全文
摘要:1.const成员 + const数据成员 + 其他地方不能修改const 数据成员 + 初始化必须采用初始化参数列表的方式进行初始化 class MM { public: //const成员必须采用初始化参数列表 MM(string name,int age,int id):name(name),
阅读全文
摘要:1.拷贝构造 + 它是一个特殊的构造函数+ 参数是唯一的:对对象的引用+ 作用: 实现通过对象去构造对象 namespace myData { class Girl { public: //Girl() { cout << "默认构造" << endl; } Girl(string name) :n
阅读全文
摘要:1.构造函数 构造函数的特征 + 名字和类名相同+ 没有返回值+ 不写构造函数会存在一个默认的构造函数(无参),如果写了,默认的就不存在+ 构造函数不需要自己调用,创建对象的时候调用构造函数+ 构造函数的长相决定了对象模样(参数个数)+ 构造函数的作用: 一般来说就是为数据做初始化+ 可以被重载(参
阅读全文
摘要:1.类与对象小案例(封装按钮) #include <graphics.h> #include <iostream> #include <string> using namespace std; class Button { public: Button() = default; Button(int
阅读全文
摘要:1.类与对象基本概念 /* 类:对一系列事物的的共同属性或者行为的一种抽象 用class修饰的(结构体在C++中也可以当作类) 属性:事物的特征 -->数据成员 行为:具体的操作 -->成员函数 对象:类的具体化 */ //1.定义一个类 namespace myData { //用namespac
阅读全文
摘要:1.C++ string int main() { //1.string初始化方式 //构造空的 string str; cout << str.size() <<"\t"<< str.length() << endl; // 0 0 //构造方式初始化 string str1 ("ILoveYou
阅读全文
摘要:1.结构体基本区别 struct MM { char name[20]; int age; void print() //默认为内联函数 { cout << name << "\t" << age << endl; } }; int main() { //1.定义变量时省略关键字 struct MM
阅读全文
摘要:1.类型推断 int Max(int a, int b) { return a > b ? a : b; } //错误,没有推断依据 //auto Max(auto a, auto b) //{ // return a > b ? a : b; //} int main() { //常量 auto
阅读全文
摘要:1.new和delete基本用法 new用来申请内存,delete用来释放内存 int main() { int* p = new int; delete p; p = nullptr; int* pp = new int[4]; delete []pp; pp = nullptr; //申请内存并
阅读全文
摘要:1.内联函数(inline修饰的函数) 1.1 牺牲空间提高效率 1.2 短小精悍 1.3 在结构体中或者类型实现的函数默认为内联函数 2.函数重载(允许同名不同参的函数存在) 2.1 数目不同 2.2 类型不同 2.3 顺序不同 3.函数缺省(其实就是给函数参数赋初始值) 注意点问题: 必须从右往
阅读全文
摘要:1.一个简单定义 lvalue代表一个在内存中占有确定位置的对象(换句话说就是有一个地址),可以把左值当成有名字的对象,所有的变量,包括常变量,都是左值。。rvalue通过排他性来定义,每个表达式不是lvalue就是rvalue。因此从上面的lvalue的定义,rvalue是在不在内存中占有确定位置
阅读全文
摘要:1.空的新表示法 指针上: NULL-->nullptr 2.bool类型 2.1 含义:表示真和假,打印的值只有(0,1) 2.2 占用1个字节 2.3 一般用在 函数返回值或者充当标记开关等使用 3.引用类型: 起别名 3.1 充当函数参数 防止拷贝本的产生 3.2 充当函数返回值类型,增加左值
阅读全文
摘要:掌握基本的输入和输出1.#include <iostream>2.输出 2.1 cout +<< 2.2 endl3.输入 3.1 cin >> #include <iostream> #include <cstdio> int main() { //1.输出 C++支持C语言的转义字符,目前不需要
阅读全文
摘要:1.什么是函数 函数可以理解为 C/C++ 中一个一个的模块,可以完成一定的功能,一块一块的,有较强的独立性,可以相互调用。换句话说,一个函数里面可以调用 n 个函数,即大函数调用小函数,小函数又调用“小小”函数。这就是结构化程序设计,所以面向过程的语言又叫结构化语言。 2.{}的作用 由一个 {}
阅读全文
摘要:1.源文件改为了.cpp2.头文件的改变 2.1 C++包含标准C语言头文件 2.1.1 原有的方式 2.1.2 新的方式: cstdio 2.1.2 自己写的还是原方式3.命名空间:增加标识符的使用率,减少因为命名差生的冲突 3.1 声明一个命名空间 namespaece 空间名{},不能写在函数
阅读全文
浙公网安备 33010602011771号