
C++与Java学习
文章平均质量分 69
YoungStunner
yeah
展开
-
神奇的多态
C++中多态表示通过一个public基类的指针或引用,来得到一个衍生类对象,并希望同一方法根据对象的不同而有不同的行为。一般来说多态需要搭配2种方式来使用:1、经过隐式转换操作,把衍生类的指针或引用转换为public基类的指针或引用。如 class A{...};class B:public A{...};A& a1=b;2、使用虚函数(virtual function)。编译原创 2015-12-30 09:20:59 · 453 阅读 · 0 评论 -
不用中间变量实现交换swap的问题
我们在实现交换的时候一般都是用一个中间变量来暂存:void swap(int& a, int& b) { int temp = a; //exchange a = b; b = temp;}类似于这样,然而也有不用中间变量的方法:void swap(int& a, int& b) { a += b; b = a - b; a -= b;}还有这样:void swap原创 2016-03-08 12:46:01 · 2110 阅读 · 1 评论 -
STL iterator失效
今天写的代码在用到vector的迭代器的时候出现了错误,后面写了一个测试的code并查阅了相关资料,找到了问题。测试的code是这样的:#include#includeusing namespace std;int main() { vector int_array; for (int i = 0; i < 10; ++i) { int_array.push_back(i)原创 2016-03-06 23:59:27 · 511 阅读 · 0 评论 -
vector<bool>STL中的陷阱
今天 ,写代码的时候我想用一个数组把布尔值存起来,就像这样: vector a; if (isOrder(num)) { a.push_back(true); }然后取他的一个元素的地址时:bool* ptr = &a[0];就出现了编译错误:error C2440: “初始化”: 无法从“std::_Vb_reference>> *”转换为“bool *”note: 与指原创 2016-03-02 21:10:14 · 1816 阅读 · 0 评论 -
对字符串数组进行排序,将变位词排在相邻位置
#include#include#include#include#include#includeusing namespace std;string sortChars(string s){ sort(s.begin(), s.end(), less()); return s;}void sort(vector& array){ hash_map> hash; lis原创 2016-01-26 17:44:41 · 697 阅读 · 0 评论 -
c++STL中的hash_map自定义类。
是的,hash_map是一个很方便的容器,有了STL确确实实给了C++developer很大方便,hash_map就是其中一种。他在数据少的时候,作用和基于RB-tree的map差不多,甚至不如,毕竟有hasher。但是在大量数据的时候,就很快捷了。我平时用hash_map都是用基本类型的,最多弄个string类,也是库里已经弄好了的。直接套模板就行。可是今天遇到一个问题就是当你需要把一个自定义类原创 2016-01-26 01:18:50 · 3504 阅读 · 0 评论 -
集合栈-程序员面试金典
数据结构由多个栈组成,用链表连接,并且在前一个栈填满之时,新建一个栈,且push()方法和pop()方法和top()方法与普通栈的方法一样。且实现了一个popAt(int index)方法,指定子栈,并执行pop()操作,当一个非最后的栈pop时,用后续栈将其填满。为实现popAt()需要访问后一个栈的底部,所以不能使用Stack模板,而是使用deque。pop(),push(),top()都是通原创 2016-01-19 11:10:00 · 546 阅读 · 0 评论 -
用stack和面向对象的设计思想实现汉诺塔
#include#includeusing namespace std;class Tower{public: Tower(){} Tower(int i) :index(i){} ~Tower(){}; int getIndex(){ return index; } void add(int d){ if (!disks.empty() && disks.top() <=原创 2016-01-19 00:36:54 · 429 阅读 · 0 评论 -
浅谈C++中的特殊函数初始化
今天考完六级了,就来写一写我的第一篇blog吧,说是blog其实叫学习笔记其实更为妥当吧。那么今天就探讨一些关于constructor以及一些c++中的特殊函数吧。我是从java来入门的ob,就对人类的友好型来说自然是Java要好许多,每一个都需要一个初始化的方法,这是需要用一种叫constructor(构造器又叫构造函数),构造函数采用与类相同的名字,构造器方法是可以重载的,在Java中构造原创 2015-12-20 10:36:35 · 536 阅读 · 0 评论 -
list和vector的区别
vector是联系内存容器,它为存储的对象分配一块连续的地址空间,内存布局与C完全相同。在vecotor中插入或者删除某个元素,将影响到效率和异常安全性(除非是在容器的尾部)。如果vector中存储的对象很大,或者构造函数复杂,则在对现有元素进行移动的时候开销会较大。vector在每次扩张容量的时候,将容量扩展2倍。一旦空间重新配置,原迭代器将全部失效。vector迭代器普通指针类原创 2016-02-28 23:41:24 · 816 阅读 · 0 评论