![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
RadiumYang
ACM退役打牌选手
展开
-
用红黑树实现map和set
用红黑树实现map和set 上一篇文章讲解了如何实现红黑树: https://blog.csdn.net/Radium_1209/article/details/104873813 这里我们用已经实现的红黑树来写一个简单的map和set。 因为map有两个参数,所以我们要先对原来的代码进行微调,将传入的参数调整为Key和Value。 还有一些地方需要微调,详见https://github.com/...原创 2020-03-18 20:50:16 · 542 阅读 · 0 评论 -
命令行解析函数(getopt,getopt_long,getopt_long_only)
命令行解析函数 参考: https://www.gnu.org/software/libc/manual/html_node/Using-Getopt.html#Using-Getopt https://www.gnu.org/software/libc/manual/html_node/Getopt-Long-Options.html https://linux.die.net/man/3/g...原创 2019-12-03 23:02:22 · 248 阅读 · 0 评论 -
Sublime写cpp时无法定位程序输入点__gxx_personality_v0的问题
之前配置好了Sublime写cpp一直用的好好的,今天突然出现了蜜汁问题(如下图) 网上找了一波,发现这个是cpp运行时候会出现的问题,网上给出的解决方法是使用静态编译。 由于用的sublime之前写好的配置,于是只能改配置了。 原来的配置: { "cmd": ["g++", "${file}", "-o","${file_path}/${file_base_name}"], ".原创 2018-08-29 16:26:29 · 584 阅读 · 0 评论 -
C++学习笔记(八)——内联函数
内联函数:内联函数实际上并不是真正的函数,它比较像define宏定义,它实际上就是将代码段直接替换到调用函数的地方,从而实现时间的节约。 使用:主要用在代码较短的函数中,同时不能用在递归函数中。 在函数最前面加上inline就是内联函数了 inline函数的本质也是用空间换取时间的一种操作 例子程序: #include <cstdio> #include <iostr...原创 2018-08-02 22:39:14 · 130 阅读 · 0 评论 -
C++学习笔记(十一)——多态性
多态性:一个成员函数在父类及子类中的多种形态,即父类和子类可以拥有同一个函数(名称和参数都相同),但是功能不同的函数。 这意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。 关键词:virtual 在成员函数前加上virtual表示虚函数 使用:在父类和子类的函数前都加上virtual,这样在调用函数时,会分别执行不同的函数 一个多态的例子: #include &l...原创 2018-08-07 00:21:45 · 302 阅读 · 0 评论 -
C++学习笔记(十)——向上造型
向上造型:听起来很高端,其实就是把子类当做父类看待。 为什么可以把子类当做父类看待,因为父类拥有的变量和函数,子类都有,对于父类没有子类有的,向上造型时会将其忽略。 有向上造型也有向下造型,向下造型就是把父类当做子类看待(有风险,慎用) 一个向上造型的例子: #include <cstdio> #include <iostream> using nam...原创 2018-08-05 23:50:50 · 659 阅读 · 0 评论 -
C++学习笔记(九)——引用
引用变量就可以当做一个别名,就相当于一个变量有两个(或多个)名字,但是是同一个变量。 引用变量的定义: 在变量前加& int x=3; int &y=x; 注意:在定义引用变量时一定要初始化,声明别名的变量。 引用是不能改变的,例如上面的y只能是x的别名,不能更改为其他变量的别名。 const int &y=x; 对于const,不能通过别名更改变量值,但可...原创 2018-08-05 23:27:31 · 118 阅读 · 0 评论 -
C++学习笔记(五)——初始化列表
初始化列表:构造函数初始化,在构造函数后加冒号成员变量再加上小括号中间是初始化的值。 例子: A():x(2){} 例子程序: #include <iostream> using namespace std; class A { public: int x; A():x(2){}; //初始化成员变量x为2 }; int main() { A a; ...原创 2018-07-26 17:00:02 · 134 阅读 · 1 评论 -
C++学习笔记(四)——类访问修饰符
3种访问修饰符:public、private、protected public:可在类外部访问 private:只能在类内部访问 protected:只能在类以及子类内部访问 注:默认的访问修饰符为private 以下的例子显示了私有和公有的差别: #include <iostream> using namespace std; class A { in...原创 2018-07-26 15:37:49 · 295 阅读 · 3 评论 -
c++中vector(向量)的简单操作
操作 功能 size() 返回元素总数 get() 获取秩为r的元素 put(r,e) 用e替换秩为r的元素 insert(r,e) e作为秩为r的元素插入,原后继元素后移 remove(r) ...原创 2018-07-20 13:50:43 · 751 阅读 · 0 评论 -
C++学习笔记(三)——动态内存
动态内存是一种类似c中malloc函数的一个东西。 主要有两种操作: new 相当于malloc delete 相当于free 核心代码: int *p=new int; int *a=new int[5]; delete p; delete[] a; 注意: 1. 没有new的不能被delete 2. 不要重复delete 3. 申...原创 2018-07-25 21:29:40 · 128 阅读 · 0 评论 -
C++学习笔记(七)——函数缺省参数值
缺省参数:已有默认的数值可以不再传入 Python中也有缺省参数。 注意事项: 1.缺省参数在定义时一定要从右往左,并且必须连续,不可跳过 例如:int f(int a,int b=2,int c=3); (正确) int f(int a=1,int b,int c=3); (错误) int f(int a=1,int b=2,int...原创 2018-07-28 15:56:21 · 188 阅读 · 0 评论 -
C++学习笔记(六)——继承以及名字隐藏
子类:在父类的基础上继承父类的属性,并拥有新属性,称子类是父类的继承。 子类的定义: class 子类名 : 访问修饰符 父类名 注意: 子类可以直接访问父类的公共部分,而不能直接访问父类的私有部分,可以访问父类的受保护部分(受保护部分不能在外部调用,如main函数中) 同时,在构造和析构时满足构造时先构造父类,析构时先析构子类。 C++的一个特性:名字隐藏(例子见下...原创 2018-07-28 15:22:40 · 211 阅读 · 0 评论 -
C++学习笔记(二)——构造与析构
构造函数:在创建对象时执行的函数 特性: 1.构造函数与类名相同 2.构造函数无返回类型(必须没有) 3.创建对象时被调用(类似于初始化) 4.构造函数可以有参数(创建时直接传入) 形如:A(); 以下是一个构造函数的例子: #include <stdio.h> #include <iostream> using namespace std; cl...原创 2018-07-24 13:24:43 · 128 阅读 · 0 评论 -
C++学习笔记(一)——成员变量
成员变量:在类体中定义的变量为成员变量,作用范围是整个类 局部变量:不一定要在类中,也可以在函数中 主要区别可以见以下代码: #include <stdio.h> class A { private: int i; //定义成员变量i public: void f(); }; void A::f() { int ...原创 2018-07-23 23:12:53 · 200 阅读 · 0 评论