- 博客(29)
- 资源 (10)
- 收藏
- 关注
转载 在链表中删除指定值的元素
在网上看到很多删除链表中的元素都是指定了位置的,如何删除所有值为x的节点呢,下面以int节点的单链表为例说明:这是C++类中的实现void List::removeData(int data){ for(Node** cur = &m_head;*cur;) { Node* entry = *cur; if(entry->data == data) {
2013-11-19 20:37:32
2610
1
转载 IOS-表视图中添加搜索功能
在移动应用程序的世界里,用户对信息获取的速度要求非常高!iOS用户希望他们需要的信息能够迅速地,直观地展现在他们面前。因为UITableView的上下滚动能让用户迅速,自然地浏览大量信息,许多基于UIKit的应用都使用了UITableView来组织信息。但如果信息量非常非常大,让用户上下滚动如此长的列表是非常没有效率的。所以一个搜索的功能就是必须的了。幸运的是,UIKit里
2013-10-23 01:04:38
16595
原创 IOS学习-导航
1.使用Xcode4.2创建导航使用Single View application模板程序需要选中Storyboard选项2.创建成功后会看到一个Navigation Controller这就是一个导航控制器,负责控制画面导航。选择Editor中的Embed in 菜单在导航控制器中嵌入视图控制器
2013-10-22 11:17:07
683
原创 面试题:输入一个正整数n,输出所有的连续正整数之和等于n的序列
先说下题目: 如果你输入的数字是15 那么输出为1 2 3 4 5 、4 5 6 、 7 8这个题目在剑指offer中有一个做法,但是不是最好的做法,面试官说复杂度过高:剑指offer上面的解法是首先设置两个值i=1和j=2,一个表示开头的正整数,一个表示结尾的正整数。当正整数的和大于15的时候i向后移动,当和15的时候j向后移动。等的时候输出一个,到后继续找。仔细琢磨结合网上的代
2012-09-29 16:56:59
6434
原创 条款3-4:绝对不要以多态的方式处理数组与default constructor
条款3:绝对不要以多态的方式处理数组class BST{ ...... };class BalancedBST:public BST{.......};void printBST(ostream& s,const BST array[ ],int num){ for(int i = 0;i s}当你传入BST的数组是没有什么问题的。现在传入B
2012-07-15 16:55:44
554
原创 条款2:最好使用C++转型操作符
C++提供4种转型1.static_cast 他基本上具有和旧式c语言一样的功能,一样的限制,如不可以将struct转换为int,不可以将int转换为pointer等。 使用方法: static_cast(expression)2.const_cast 除去常量性质3.dynamic_cast 用于继承体系的转型,不是继承体系则出现错误。主要是用于将指
2012-07-15 16:29:21
364
原创 基础议题 条款1:仔细区别pointer和reference
1.首先我们需要认识到没有所谓的null reference。所以如果你有一个变量,其目的用来指向一个对象,但是也有可能不指向任何对象,那么你应该用pointer,因为你可以将pointer设置为null。换句话说,如果你不允许变量为null,那么使用reference。具有以下行为的程序员应该隔离: char *pc = 0; char& rc = pc;这样编译器可能会产生
2012-07-15 16:19:50
506
原创 条款38-40:通过复合塑模出has-a或"根据某物实现出"与private继承、多继承
条款38:通过复合塑模出has-a或"根据某物实现出"复合是类型之间的一种关系,当某种类型的对象内包含其他类型的对象,我们说这是一种复合。public继承是is-a关系,表示是一种的意思。复合意味着has-a关系,表示有一个或者is-implemented-in-terms-of(根据某物实现出)。现在假设你需要一个template制造出一组classes表示不重复的对象组成的sets
2012-07-11 16:47:36
511
原创 条款36-37绝不重新定义继承而来的non-virtual函数与缺省参数
条款36:绝对重新定义继承而来的non-virtual函数条款37:绝不重新定义继承而来的缺省参数这两个条款说的绝不没有说不可以,意思是最好是这么做。个人觉得这两个条款没有太多可说的。这里讲下缺省参数的问题。在C++面向对象的技术中,virtual函数的类型是动态的,但是参数是静态的。具体可以参考《C++ primer》以下的代码是糟糕的:class Sharp{
2012-07-11 16:01:23
550
原创 条款35:考虑virtual函数以外的其他选择
假如你正在写一个视频游戏软件,你想计算不同人物的健康指数,那么平常的方法肯定是这样实现:class GameCharacter{ public: virtual int healthValue() const; ........};healthValue被声明为virtual,说明会提供缺省方法。但是从某个角度来讲这里存在弱点。这里考虑一些其他替代方法:
2012-07-11 10:23:50
1172
1
原创 STL空间配置器
关于STL空间配置器源码有关的文件为: 他包括 负责对象的构造与析构 负责内存空间的配置与释放空间配置器分为一级和二级一级主要是针对内存较大的分配,二级配置器则是针对较小的内存。二级配置器的解析:以链表的形式分成断首先看表中对应的空间是否有剩余,如果没有在内存池中查看,内存池中没有向堆内存中请求。还是没有,再看表中较大的地方有没有剩余,比
2012-07-10 22:48:41
287
原创 条款34:区分接口继承与实现继承
public继承经过仔细的检查后发现主要有两部分组成:函数接口继承和函数实现继承,他们的区别就相当于声明与定义的区别。作为类的设计者你有可能希望继承接口,有可能继承实现或者两者都需要。、 class Sharp{ public: virtual void draw() cosnt = 0; virtual void error(const std::string&
2012-07-10 13:25:46
285
原创 条款33:避免遮掩继承而来的名称
这里主要说的是继承体系中的作用域class B{ private: int x;public: virtual void mf1()=0; virtual void mf2(); void mf3();...};class D:public B{ public: virtual void mf1(); void mf4();
2012-07-10 10:39:19
451
原创 第六部分 继承与面向对象设计 条款32:确定你的public继承是is-a关系
以C++进行面向对象编程,有一个重要的规则,public继承意味着是is-a关系,所谓is-a就是一种 的意思。比如我们用Person为基类,Student为派生类实现public继承。每个Student都是Person,但是每个Person不一定都是Student。在继承体系中,任何函数如果愿意接受一个Person的实参,那么也愿意接受一个Student的对象。如:void eat(cons
2012-07-10 09:43:39
492
原创 条款31:将文件间的编译依存关系降至最低
我们还是从一个例子开始出发:class Person{ public: Person(const std::string& name,const Date& birthday,const Address& addr); std::string name() const; std::string birthDate() const
2012-07-09 15:32:06
396
原创 条款29-30:为“异常安全”而努力是值得的与inlining的里里外外
条款29:异常安全 假设有个class用来表现夹带背景图案的GUI菜单。这个class希望用于多线程环境,所以它有个互斥器作为并发控制用:class PrettyMenu{ public: ... void changeBackgroud(std::istream& imgSrc); ... private: Mutex
2012-07-09 15:31:22
318
原创 条款28:避免使用handles指向对象内部成分
看下面的问题:class Point{ public: Point(int x,int y); ... void SetX(int newVal); void SetY(int newVal); ...};struct RectData{ Point ulhc; Point lrhc;}
2012-07-09 15:30:10
8807
原创 条款27:尽量少做转型动作
与C语言比,C++提供四种新式转型动作:1.const_cast (expression) 除去对象的常量性2.dynamic_cast (expression) 主要执行“安全向下转型”。这种无法由旧式语言执行。成本耗费最大。 成本花费高,为什么还需要这种转型?通常是因为你想在一个你认定的derived class对象身上执行derived class
2012-07-09 15:28:45
346
原创 第五部分 实现之条款26:尽可能延后变量定义式的出现时间
条款26:尽可能延后变量定义式的出现时间在C++中只要你定义了一个类型且带有构造函数和析构函数,那么他就有成本开销。所以变量不应该过早地定义,看下面的case: std::string encryptyPassword(const std::string& password) { using namespace std; string en
2012-07-09 15:27:38
317
原创 第四部分(4)(条款25:考虑写出一个不抛出异常的swap函数)
条款25:考虑写出一个不抛出异常的swap函数所谓swap两个对象,就是将两个对象的值彼此赋予对方。标准库可能是这样实现的:namespace std{ template void swap(T& a,T&b) { T temp(a); a = b; b = temp; }}
2012-07-09 15:19:23
390
原创 第四部分(3)(条款24:若所有参数皆需要数据转型,请为此采用non-member函数)
条款24:若所有参数皆需要数据转型,请为此采用non-member函数假设有以下类(有理数类): class Rational{ public: Rational(int numerator=0, // constructor刻意不为explicit,允许int-to-Rational int denominator=1)
2012-07-09 15:18:18
279
原创 第四部分 设计与声明(1)(条款18-22)
条款18:让接口容易被正确使用,不易被误用我们以日期函数为例来讨论class Date{ public: Date(int month,int day,int year); .....};这个类客户容易犯错: Date d(30,3,1995); //应该是Date d(3,30,1995);Date(2,30,1995) //2月没有30为了
2012-07-09 15:01:35
304
原创 第四部分 设计与声明(2)(条款23:宁以non-member、non-friend替代member函数)
条款23: 宁以non-member、non-friend替代member函数思考下面的问题:一个网页浏览器类class WebBrowser{ public: ... void clearCache();//清除Cache void clearHistory();//清除History void removeCo
2012-07-09 14:43:34
300
原创 第四部分 设计与声明(1)(条款19-22)
条款18:让接口容易被正确使用,不易被误用我们以日期函数为例来讨论class Date{ public: Date(int month,int day,int year); .....};这个类客户容易犯错: Date d(30,3,1995); //应该是Date d(3,30,1995);Date(2,30,1995) //2月没有30为了
2012-07-09 10:04:13
76
原创 第三部分 资源管理(条款13-17)
条款13 以对象管理资源class Investment{.........};假设有个工产函数: Investment* createInvestment();现在:void f(){ Investment* pInv = createInvestment(); .... delete pInv;}这个函数看起来是没有什么问题的,但是如果在...部分
2012-07-08 13:17:04
333
原创 第三部分 资源管理(条款13-17)
条款13 以对象管理资源class Investment{.........};假设有个工产函数: Investment* createInvestment();现在:void f(){ Investment* pInv = createInvestment(); .... delete pInv;}这个函数看起来是没有什么问题的,但是如果在...部分
2012-07-08 12:59:30
57
原创 第二部分 构造、析构与赋值运算(条款5-12)
这里是第二部分 条款 5:C++默默编写并调用哪些函数 如果你没有写构造函数、析构函数、copy构造函数和赋值操作符,C++会自己为你编写默认的函数。如果你自己编写了,C++不再合成 如果你打算在一个内含 reference成员的class内支持赋值操作,你必须自己定义赋值操作符,面对const成员,编译器的反应也是一样的。如果某个基类的copy 操作符是一个private,那
2012-07-08 10:41:18
1401
原创 第一部分:习惯C++(条款1-4)
这里是effective C++第一部分条款1:对C++的整体认识。它包括 1. C部分。C++以C语言为基础发展而来。2.面向对象部分。3.C++泛型编程部分也叫template C++. 4.STL条款2:用const,enum,inline对define替换 1.#define RATIO 3.14 改为const double Ratio =
2012-07-07 22:29:22
1004
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人