c++
文章平均质量分 67
bupt8846
这个作者很懒,什么都没留下…
展开
-
c++和java的多态性的区别
java的多态性:java的多态性要满足三个条件:1、继承关系;2、在子类重写父类的函数;3、父类引用指向子类对象,即 animal p=new dog();c++的多态性:c++的多态性要满足三个条件:1、继承关系;2、父类函数有virtual关键字,在子类重写父类的函数;3、父类指针指向子类对象,即 animal *p=new dog(); 或 dog d; animal *p=&d;原创 2015-01-27 00:49:35 · 1023 阅读 · 0 评论 -
单例模式的三种构造方法
1、构造函数为私有,只有类内的代码可以调用构造函数,禁止主函数创建对象。2、static President p;那一行放在instance()里面。若把 p 当做类的静态数据成员,会出现调用instance()时还没有定义 p 的情况。//只有一个实例的总统类,可使用赋值构造函数、复制构造函数和赋值函数class President{ string name = "yyc原创 2015-03-16 20:05:09 · 4645 阅读 · 0 评论 -
【原题】求两个不相交的连续子数组的最大和
题目: 有一个整数数组n,a和b是n里两个互不相交的子数组。返回sum(a)+sum(b)的最大值。分析:新建两个数组left和right,left[i]表示n[0:i]的连续子数组的最大和,right[i]表示n[i:length-1]的连续子数组的最大和。left[i]+right[i+1]的最大值就是答案。int SumOfTwoSubarray(const原创 2015-08-30 23:50:14 · 2876 阅读 · 0 评论 -
【哈希、动态规划】Edit Distance
题目:leetcodeEdit Distance Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2. (each operation is counted as 1 step.)You have the fo原创 2015-04-13 18:23:07 · 467 阅读 · 0 评论 -
临时变量与复制构造函数(二)
为了直观观察,以下代码中复制构造函数会把成员变量num+1class B{ int num;public: B():num(0){ cout << "默认构造函数" << " num= "<< num <<endl; } B(int n) :num(n){ cout << "带参构造函数" << " num= " << num << endl; } B(const原创 2015-04-23 10:30:43 · 732 阅读 · 0 评论 -
临时变量与复制构造函数
class B{public: B(){ cout << "构造函数" << endl; } B(const B &b) { cout << "复制构造函数" << endl; } ~B() { cout << "析构函数" << endl; }};B play(B b){ return b;}main函数输入如下代码:{ B b原创 2015-04-23 09:23:59 · 992 阅读 · 0 评论 -
【经典】【排序】快速排序算法、堆排序
来源:脑客爱刷题本算法主要改进了快排的partition算法,使得每次partition后,等于target的数在未排序部分的“中间”连续出现,target左边部分比它小,右边部分比它大。void partition(vector &num, int begin, int end){ if (begin >= end) return; int smaller = begi转载 2015-03-25 12:32:35 · 403 阅读 · 0 评论 -
STL的移动算法
要在自定义类型中使用移动算法,需要在元素中提供移动赋值运算符,移动赋值运算符和std::move()详见《c++高级编程》第9章class mystring{public: string mstr; mystring(){} mystring(const string &str) :mstr(str){} mystring& operator=(mystring&& r原创 2015-03-19 16:41:30 · 767 阅读 · 0 评论 -
【数学】小飞的电梯调度算法
题目:《编程之美》P53若干个乘客从一楼上电梯,电梯出发后,只能停靠在某一层。问电梯停在哪一层,可以让所有乘客走的总楼层数最少?分析:电梯可以停在负层,但没有0层。所以程序返回0时,表示出错。这里有个陷阱,因为没有0层,所以在计算时,应该先把负数的楼层加1.当最后算出来的结果小于等于0时,再减去一,才是实际中的负数层数。 int best_stop_floor原创 2015-03-19 10:10:27 · 966 阅读 · 0 评论 -
移动构造函数和移动赋值运算符
为了直观地观察移动构造函数和移动赋值运算符的运行方式,编写一个类Pointer,该类的对象会在堆动态创建一个数组,因此移动构造函数和移动赋值运算符是很有必要的,因为可以避免深度复制,提高效率。原创 2015-02-15 09:22:14 · 6877 阅读 · 2 评论 -
使用priority_queue 实现数据结构——堆
//重载运算符class compare_minheap{public:const bool operator()(const int a, const int b) const{return a > b;}};class compare_maxheap{public:const bool operator()(const int a, cons转载 2014-12-31 10:09:19 · 551 阅读 · 0 评论 -
【map】【unordered_map】map和unordered_map中键类型为自定义类型的操作
STL中map的底层为红黑树,所以查找的时间复杂度为O(logn)。unordered_map是根据哈希值(遇到哈希值相同时用==号比较)寻找键,所以时间复杂度为O(1)。键类型为自定义类型时,map需要重载键类型的<符号,unordered_map需要定义键类型的哈希函数(在类外定义),以及重载键类型的==符号。原创 2015-01-16 11:21:31 · 1157 阅读 · 0 评论 -
【位操作】通过位操作快速实现某些计算结果
判断是否偶数/基数:bool IsEven = num & 1 ==0?true:false;除以/乘以2:int res=num>>1;2的n次方:int num=1原创 2015-01-08 17:25:51 · 491 阅读 · 0 评论 -
emplace 和 emplace_back
1、"emplace_back" 和 "push_back" 的区别emplace_back和push_back都是向容器内添加数据.对于在容器中添加类的对象时, 相比于push_back,emplace_back可以避免额外类的复制和移动操作.详见 http://blog.csdn.net/caroline_wendy/article/details/12967193原创 2014-12-31 11:06:32 · 2542 阅读 · 0 评论 -
【hash_map】hash_map中键为自定义类型的操作
class person{public: string name; int age; person(string s,int i):name(s),age(i){}};struct person_hash{ static const size_t bucket_size = 4; static const size_t min_buckets = 8; //哈希值函原创 2015-01-08 12:51:19 · 806 阅读 · 0 评论 -
leetcode - Additive Number
题目:https://leetcode.com/problems/additive-number/class Solution {public: long long str2num(string str){ stringstream ss(str); long long n; ss >> n; return n; } string num2str(l原创 2016-02-13 23:12:11 · 422 阅读 · 0 评论