c++
ma_r
这个作者很懒,什么都没留下…
展开
-
微信红包
微信红包链接: link.题目描述:春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。给定一个红包的金额数组gifts及它的大小n,请返回所求红包的金额。若没有金额超过总数的一半,返回0。测试样例:[1,2,3,2,2],5返回:2解法一:c...原创 2019-04-28 23:00:35 · 595 阅读 · 0 评论 -
【C++】stl_string(接口实现)
接口实现:#pragma once#include <iostream>#include <string>#include <assert.h>using namespace std;namespace mr{ class String { public: typedef char* iterator; iterator begin(...原创 2019-07-27 22:53:59 · 177 阅读 · 0 评论 -
【C++】继承
概念面向对象程序设计使代码复用的一种手段,是一种类设计层次的复用。派生类保持在原有类特性的基础上进行扩展,增加功能。格式class + 派生类 : 继承方式+基类--------> class Teacher : public Person继承方式包括:public继承、provate继承、protexted继承。class Person{public:void Pr...原创 2019-08-05 22:46:26 · 147 阅读 · 0 评论 -
【C++】浅谈单、多以及菱形继承
单继承、多继承单继承:一个子类只有一个直接父类时称这个继承关系为单继承。多继承:一个子类有两个或以上直接父亲时称为多继承。菱形继承菱形继承存在的问题:有数据冗余与二义性的问题。class Person{ public: string _name;};class Student : public Person{ protected: int _age;};cla...原创 2019-08-08 11:48:37 · 162 阅读 · 0 评论 -
【C++】多态
多态去完成某个行为时,不同的对象会产生出不同的状态。多态的定义多态是不同继承关系的类对象,去调用同一函数,产生不同的行为。构成多态的条件:调用函数的对象必须是指针或者引用;被调用的函数必须是虚函数,且完成了虚函数的重写。虚函数在类的成员函数前面加virtual关键字。class Person{ public: virtual void test() { co...原创 2019-08-06 23:23:01 · 111 阅读 · 0 评论 -
【C++】模拟实现智能指针(auto_ptr、unique_ptr、shared_ptr)
模拟实现auto_ptrtemplate<class T>class AutoPtr{public: AutoPtr(T* ptr = nullptr) :_ptr(ptr) {} ~AutoPtr() { if (_ptr) delete _ptr; } AutoPtr(AutoPtr<T>& ap) :_ptr(ap._pt...原创 2019-08-13 22:19:34 · 173 阅读 · 0 评论 -
【C++】智能指针
为什么需要智能指针原创 2019-08-14 19:58:04 · 135 阅读 · 0 评论 -
【C++】C++的类型转换
C语言中的类型转换隐式类型显示类型int main(){ int i = 3; //隐式类型转换 double d = i; printf("%d,%.2f\n", i, d); int* p = &i; //显示的强制类型转换 int add = (int)p; printf("%x,%d\n", p, add); system("pause"); re...原创 2019-08-15 21:17:50 · 150 阅读 · 0 评论 -
【C++】C++异常总结
使用C++异常出来错误的原因C语言处理错误的方式有终止进程(assert),返回错误码,C标准库中setjmp和longjmp组合,但都有各自的缺陷:assert发生内存错误,除0错误时就会终止程序,错误码需要程序员查询对应的错误,总之,C语言中基本都是返回错误码的方式,部分采用错误码的方式。C++中...原创 2019-08-12 22:12:18 · 182 阅读 · 0 评论 -
【C++】关联式容器multimap
multimap是关联式容器,它按照特定的顺序存储由key和value映射成的键值对<key,value>,其中多个键值之间的key可以重复。总结:multimap的key可以重复;multimap中的元素默认将key按照小于来比较;multimap没有重载operator[];multimap的头文件与map相同。插入相同key值可重复#include <st...原创 2019-08-21 21:38:41 · 281 阅读 · 0 评论 -
【C++】关联式容器map
关联式容器关联式容器也是存储数据的,与序列式容器不同,其中存储的是<key,value>结构的键值对,在数据检索时比序列式容器效率更高。键值对用来表示具有一一对应关系的一种结构,该结构一般只包含两个成员变量key与value,key代表键值,value表示对应的信息。template<class T1,class T2>struct pair{ typedef...原创 2019-08-17 22:44:12 · 139 阅读 · 0 评论 -
【C++】深入了解模板
模板参数分类类型形参:出现在模板参数列表中,跟在class或者typename之类的参数类型名称。非类型形参:用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成常量来使用。template<class T,size_t N= 10>class Array{ public: T& operator[](size_t index) {...原创 2019-07-31 19:42:08 · 144 阅读 · 0 评论 -
【C++】模板
实现一个通用的交换函数void Swap(int& x,int& y);void Swap1(double& x,double& y);void Swap2(char& x,chaar& y);可以使用函数重载实现,但有其自己的缺点:代码复用率较低,有新类型的函数,就要增加其相对应的函数。代码的可维护性比较低,一个出错可能其他重载的函...原创 2019-07-25 21:11:00 · 772 阅读 · 0 评论 -
【oj】计算糖果
A,B,C三个人是好朋友,每个人手里都有一些糖果,我们不知道他们每个人手上具体有多少个糖果,但是我们知道以下的信息:A - B, B - C, A + B, B + C. 这四个数值.每个字母代表每个人所拥有的糖果数.现在需要通过这四个数值计算出每个人手里有多少个糖果,即A,B,C。这里保证最多只有一组整数A,B,C满足所有题设条件。输入描述:输入为一行,一共4个整数,分别为A - B,B...原创 2019-05-25 18:24:39 · 288 阅读 · 1 评论 -
【分析】string中size与length
结论:没有区别, length是因为沿用C语言的习惯而保留下来的,string类最初只有length,引入STL之后,为了兼容又加入了size,它是作为STL容器的属性存在的,便于符合STL的接口规则,以便用于STL的算法。具体解释:cplusplus中对size的解释Return length of stringReturns the length of the string, i...原创 2019-05-26 10:57:14 · 2238 阅读 · 0 评论 -
【详解】const(参数、返回值、成员函数)
const是一个C语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性。const Date* const this;第一个const表示指向空间的内容不能修改,第二个const表示指针本身的内容不能修改。1.修饰函数的参数如果参数作输出用,不论它是什么数据类型,也不论它采用下文讨论的“指针传递”还是“引用传递”,都不能加const 修饰,否...原创 2019-05-26 16:39:30 · 1696 阅读 · 0 评论 -
【牛客网】进制转换oj
题目描述:给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数输入描述:输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。输出描述:为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等)示例1输入7 2输出111方法:除以N得到的余数就是了。例如7这个十进制的数,除以2的余...原创 2019-05-23 23:49:49 · 518 阅读 · 0 评论 -
【牛客网】点的距离(代码)
题目描述创建一个CPoint 类,代表平面直角坐标系中的点,创建构造函数和运算符重载函数,运算符重载为类重载(非友元重载),可以实现计算两个点之间的距离。要求:1。输入两个点的坐标,输出两个点之间的距离2。重载运算符为“-”输入描述:输入第一行为样例数m,接下来m行每行4个整数分别表示两个点的横纵坐标。输出描述:输出m行,通过重载“-”运算输出两点的距离,保留小数点后两位。示例1...原创 2019-06-22 21:21:10 · 307 阅读 · 0 评论 -
【c++】普通成员变量与static成员变量的区别及普通成员函数与静态成员函数的区别
普通成员变量与static成员变量的区别:普通成员变量static成员变量可以在初始化列表中初始化不可以每个对象都包含只有一份,所有对象共享,没有包含在具体的对象中必须通过对象访问可以通过对象直接访问也可以通过类名加作用域的方式访问在初始化列表可初始化在类外定义,定义时不加static关键字,在声明时加上普通成员函数与静态成员函数的区别:...原创 2019-07-02 22:29:11 · 757 阅读 · 0 评论 -
【C++】范围for语法与nullptr
范围for:For循环后的括号由冒号“:”分为两部分,第一部分是范围内用于迭代的变量,第二部分是迭代的范围。可以使用continue结束本次循环,break可以跳出整个循环。void test(){ int array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; for (auto e : array) { cout << e <...原创 2019-07-15 21:21:21 · 139 阅读 · 0 评论 -
【C++】类与对象(初始化列表)
构造函数赋值构造函数调用后,对象中已经有了一个初始值,但是不能将其称作类成员的初始化,构造函数体中的语句只能将其作为赋初值,而不能称作初始化,因为初始化只能初始化一次,而构造函数可以多次赋值。初始化列表以一个冒号开始,接着以逗号分隔的数据成员列表,每个成员后面跟一个放在括号中的初始值或表达式。class Date{public: Date(int year,int month,int...原创 2019-07-18 21:48:31 · 325 阅读 · 0 评论 -
【C++】类与对象(基础)
类:实体抽象后的类别 (相当于建筑师的设计图)对象:实体(相当于根据建筑师的设计图设计的建筑实体)C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。类在C语言中结构体只能定义变量,在c++中可以定义变量也可以定义函数。在C++中更喜欢用class来代替。//C语言...原创 2019-07-16 19:04:20 · 122 阅读 · 0 评论 -
【C++】类与对象(6个默认成员函数)
类的默认成员函数构造函数构造函数并不是开空间创建对象,而是初始化对象。class Date{public: Date() {} Date(int year, int month, int day) { _year = year; _month = month; _day = day; } int _year; int _month; int _day;};...原创 2019-07-17 22:49:47 · 230 阅读 · 0 评论 -
【C++】关联式容器set
set原创 2019-08-22 22:22:27 · 136 阅读 · 0 评论