<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/key_15</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; key_15]]></copyright><item><title><![CDATA[ACE反应器模式：ACE_Reactor]]></title><link>https://blog.youkuaiyun.com/key_15/article/details/23616893</link><guid>https://blog.youkuaiyun.com/key_15/article/details/23616893</guid><author>key_15</author><pubDate>Sun, 13 Apr 2014 20:54:08 +0800</pubDate><description><![CDATA[在服务器编程中，用来处理客户端的]]></description><category></category></item><item><title><![CDATA[在链表中删除指定值的元素]]></title><link>https://blog.youkuaiyun.com/key_15/article/details/16830287</link><guid>https://blog.youkuaiyun.com/key_15/article/details/16830287</guid><author>key_15</author><pubDate>Tue, 19 Nov 2013 20:37:32 +0800</pubDate><description><![CDATA[在网上看到很多删除链表中的元素都是指定了位置的，如何删除所有值为x的节点呢，下面以int节点的单链表为例说明：
这是C++类中的实现
void List::removeData(int data)
{
   for(Node** cur = &m_head;*cur;)
   {
     Node* entry = *cur;
	 if(entry->data == data)
	 {
  ]]></description><category></category></item><item><title><![CDATA[IOS-表视图中添加搜索功能]]></title><link>https://blog.youkuaiyun.com/key_15/article/details/12958833</link><guid>https://blog.youkuaiyun.com/key_15/article/details/12958833</guid><author>key_15</author><pubDate>Wed, 23 Oct 2013 01:04:38 +0800</pubDate><description><![CDATA[在移动应用程序的世界里，用户对信息获取的速度要求非常高！

iOS用户希望他们需要的信息能够迅速地，直观地展现在他们面前。

因为UITableView的上下滚动能让用户迅速，自然地浏览大量信息，许多基于UIKit的应用都使用了UITableView来组织信息。但如果信息量非常非常大，让用户上下滚动如此长的列表是非常没有效率的。所以一个搜索的功能就是必须的了。

幸运的是，UIKit里]]></description><category></category></item><item><title><![CDATA[IOS学习-导航]]></title><link>https://blog.youkuaiyun.com/key_15/article/details/12944371</link><guid>https://blog.youkuaiyun.com/key_15/article/details/12944371</guid><author>key_15</author><pubDate>Tue, 22 Oct 2013 11:17:07 +0800</pubDate><description><![CDATA[1.使用Xcode4.2创建导航使用Single View application模板程序
需要选中Storyboard选项
2.创建成功后会看到一个Navigation Controller这就是一个导航控制器，负责控制画面导航。
选择Editor中的Embed in 菜单在导航控制器中嵌入视图控制器]]></description><category></category></item><item><title><![CDATA[面试题：输入一个正整数n，输出所有的连续正整数之和等于n的序列]]></title><link>https://blog.youkuaiyun.com/key_15/article/details/8022787</link><guid>https://blog.youkuaiyun.com/key_15/article/details/8022787</guid><author>key_15</author><pubDate>Sat, 29 Sep 2012 16:56:59 +0800</pubDate><description><![CDATA[先说下题目： 如果你输入的数字是15 那么输出为1 2 3 4 5 、4 5 6  、 7  8
这个题目在剑指offer中有一个做法，但是不是最好的做法，面试官说复杂度过高：
剑指offer上面的解法是首先设置两个值i=1和j=2，一个表示开头的正整数，一个表示结尾的正整数。当正整数的和大于15的时候i向后移动，当和15的时候j向后移动。等的时候输出一个，到后继续找。
仔细琢磨结合网上的代]]></description><category></category></item><item><title><![CDATA[条款3-4:绝对不要以多态的方式处理数组与default constructor]]></title><link>https://blog.youkuaiyun.com/key_15/article/details/7748910</link><guid>https://blog.youkuaiyun.com/key_15/article/details/7748910</guid><author>key_15</author><pubDate>Sun, 15 Jul 2012 16:55:44 +0800</pubDate><description><![CDATA[条款3:绝对不要以多态的方式处理数组
class BST{ ...... };
class BalancedBST:public BST{.......};


void printBST(ostream& s,const BST array[ ],int num)
{
   for(int i = 0;i
     s
}
当你传入BST的数组是没有什么问题的。
现在传入B]]></description><category></category></item><item><title><![CDATA[条款2:最好使用C++转型操作符]]></title><link>https://blog.youkuaiyun.com/key_15/article/details/7748893</link><guid>https://blog.youkuaiyun.com/key_15/article/details/7748893</guid><author>key_15</author><pubDate>Sun, 15 Jul 2012 16:29:21 +0800</pubDate><description><![CDATA[C++提供4种转型
1.static_cast
   他基本上具有和旧式c语言一样的功能，一样的限制，如不可以将struct转换为int，不可以将int转换为pointer等。
    使用方法: static_cast(expression)
2.const_cast
   除去常量性质
3.dynamic_cast
   用于继承体系的转型，不是继承体系则出现错误。主要是用于将指]]></description><category></category></item><item><title><![CDATA[基础议题 条款1:仔细区别pointer和reference]]></title><link>https://blog.youkuaiyun.com/key_15/article/details/7748854</link><guid>https://blog.youkuaiyun.com/key_15/article/details/7748854</guid><author>key_15</author><pubDate>Sun, 15 Jul 2012 16:19:50 +0800</pubDate><description><![CDATA[1.首先我们需要认识到没有所谓的null reference。所以如果你有一个变量，其目的用来指向一个对象，但是也有可能不指向任何对象，那么你应该用pointer，因为你可以将pointer设置为null。换句话说，如果你不允许变量为null，那么使用reference。
具有以下行为的程序员应该隔离:
  char *pc = 0;
  char& rc = pc;
这样编译器可能会产生]]></description><category></category></item><item><title><![CDATA[条款38-40:通过复合塑模出has-a或"根据某物实现出"与private继承、多继承]]></title><link>https://blog.youkuaiyun.com/key_15/article/details/7736950</link><guid>https://blog.youkuaiyun.com/key_15/article/details/7736950</guid><author>key_15</author><pubDate>Wed, 11 Jul 2012 16:47:36 +0800</pubDate><description><![CDATA[条款38:通过复合塑模出has-a或"根据某物实现出"
复合是类型之间的一种关系，当某种类型的对象内包含其他类型的对象，我们说这是一种复合。
public继承是is-a关系，表示是一种的意思。复合意味着has-a关系，表示有一个或者is-implemented-in-terms-of(根据某物实现出)。
现在假设你需要一个template制造出一组classes表示不重复的对象组成的sets]]></description><category></category></item><item><title><![CDATA[条款36-37绝不重新定义继承而来的non-virtual函数与缺省参数]]></title><link>https://blog.youkuaiyun.com/key_15/article/details/7736849</link><guid>https://blog.youkuaiyun.com/key_15/article/details/7736849</guid><author>key_15</author><pubDate>Wed, 11 Jul 2012 16:01:23 +0800</pubDate><description><![CDATA[条款36:绝对重新定义继承而来的non-virtual函数
条款37:绝不重新定义继承而来的缺省参数
这两个条款说的绝不没有说不可以，意思是最好是这么做。个人觉得这两个条款没有太多可说的。
这里讲下缺省参数的问题。
在C++面向对象的技术中，virtual函数的类型是动态的，但是参数是静态的。具体可以参考《C++ primer》
以下的代码是糟糕的:
class Sharp
{]]></description><category></category></item><item><title><![CDATA[条款35:考虑virtual函数以外的其他选择]]></title><link>https://blog.youkuaiyun.com/key_15/article/details/7735088</link><guid>https://blog.youkuaiyun.com/key_15/article/details/7735088</guid><author>key_15</author><pubDate>Wed, 11 Jul 2012 10:23:50 +0800</pubDate><description><![CDATA[假如你正在写一个视频游戏软件，你想计算不同人物的健康指数，那么平常的方法肯定是这样实现:
class GameCharacter
{
   public:
    virtual int healthValue() const;
   ........
};
healthValue被声明为virtual，说明会提供缺省方法。但是从某个角度来讲这里存在弱点。这里考虑一些其他替代方法:]]></description><category></category></item><item><title><![CDATA[STL空间配置器]]></title><link>https://blog.youkuaiyun.com/key_15/article/details/7734580</link><guid>https://blog.youkuaiyun.com/key_15/article/details/7734580</guid><author>key_15</author><pubDate>Tue, 10 Jul 2012 22:48:41 +0800</pubDate><description><![CDATA[关于STL空间配置器源码有关的文件为:  他包括  
负责对象的构造与析构


 负责内存空间的配置与释放
空间配置器分为一级和二级


一级主要是针对内存较大的分配，二级配置器则是针对较小的内存。


二级配置器的解析:以链表的形式分成断


首先看表中对应的空间是否有剩余，如果没有在内存池中查看，内存池中没有向堆内存中请求。还是没有，再看表中较大的地方有没有剩余，比]]></description><category></category></item><item><title><![CDATA[条款34:区分接口继承与实现继承]]></title><link>https://blog.youkuaiyun.com/key_15/article/details/7732314</link><guid>https://blog.youkuaiyun.com/key_15/article/details/7732314</guid><author>key_15</author><pubDate>Tue, 10 Jul 2012 13:25:46 +0800</pubDate><description><![CDATA[public继承经过仔细的检查后发现主要有两部分组成:函数接口继承和函数实现继承，他们的区别就相当于声明与定义的区别。作为类的设计者你有可能希望继承接口，有可能继承实现或者两者都需要。、
 class Sharp
{
   public:
   virtual void draw() cosnt = 0;
   virtual void error(const std::string&]]></description><category></category></item><item><title><![CDATA[条款33:避免遮掩继承而来的名称]]></title><link>https://blog.youkuaiyun.com/key_15/article/details/7731662</link><guid>https://blog.youkuaiyun.com/key_15/article/details/7731662</guid><author>key_15</author><pubDate>Tue, 10 Jul 2012 10:39:19 +0800</pubDate><description><![CDATA[这里主要说的是继承体系中的作用域
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();]]></description><category></category></item><item><title><![CDATA[第六部分 继承与面向对象设计 条款32:确定你的public继承是is-a关系]]></title><link>https://blog.youkuaiyun.com/key_15/article/details/7731390</link><guid>https://blog.youkuaiyun.com/key_15/article/details/7731390</guid><author>key_15</author><pubDate>Tue, 10 Jul 2012 09:43:39 +0800</pubDate><description><![CDATA[以C++进行面向对象编程，有一个重要的规则，public继承意味着是is-a关系，所谓is-a就是一种 的意思。比如我们用Person为基类，Student为派生类实现public继承。每个Student都是Person，但是每个Person不一定都是Student。在继承体系中，任何函数如果愿意接受一个Person的实参，那么也愿意接受一个Student的对象。
如：void eat(cons]]></description><category></category></item><item><title><![CDATA[条款31:将文件间的编译依存关系降至最低]]></title><link>https://blog.youkuaiyun.com/key_15/article/details/7729424</link><guid>https://blog.youkuaiyun.com/key_15/article/details/7729424</guid><author>key_15</author><pubDate>Mon, 09 Jul 2012 15:32:06 +0800</pubDate><description><![CDATA[我们还是从一个例子开始出发：

class Person

{

   public:

    Person(const std::string& name,const Date& birthday,const Address& addr);

    std::string name() const;

    std::string birthDate() const]]></description><category></category></item><item><title><![CDATA[条款29-30：为“异常安全”而努力是值得的与inlining的里里外外]]></title><link>https://blog.youkuaiyun.com/key_15/article/details/7729421</link><guid>https://blog.youkuaiyun.com/key_15/article/details/7729421</guid><author>key_15</author><pubDate>Mon, 09 Jul 2012 15:31:22 +0800</pubDate><description><![CDATA[条款29：异常安全  

  假设有个class用来表现夹带背景图案的GUI菜单。这个class希望用于多线程环境，所以它有个互斥器作为并发控制用：

class PrettyMenu{

 public:

  ...

  void changeBackgroud(std::istream& imgSrc);

  ...

 private:

  Mutex]]></description><category></category></item><item><title><![CDATA[条款28:避免使用handles指向对象内部成分]]></title><link>https://blog.youkuaiyun.com/key_15/article/details/7729417</link><guid>https://blog.youkuaiyun.com/key_15/article/details/7729417</guid><author>key_15</author><pubDate>Mon, 09 Jul 2012 15:30:10 +0800</pubDate><description><![CDATA[看下面的问题：

class Point{

  public：

  Point(int x,int y);

  ...

  void SetX(int newVal);

  void SetY(int newVal);

  ...

};

struct RectData{

  Point ulhc;

  Point lrhc;

}]]></description><category></category></item><item><title><![CDATA[条款27：尽量少做转型动作]]></title><link>https://blog.youkuaiyun.com/key_15/article/details/7729406</link><guid>https://blog.youkuaiyun.com/key_15/article/details/7729406</guid><author>key_15</author><pubDate>Mon, 09 Jul 2012 15:28:45 +0800</pubDate><description><![CDATA[与C语言比，C++提供四种新式转型动作：


1.const_cast (expression)

 除去对象的常量性

2.dynamic_cast (expression)

 主要执行“安全向下转型”。这种无法由旧式语言执行。成本耗费最大。

 成本花费高，为什么还需要这种转型？通常是因为你想在一个你认定的derived class对象身上执行derived class]]></description><category></category></item><item><title><![CDATA[第五部分 实现之条款26：尽可能延后变量定义式的出现时间]]></title><link>https://blog.youkuaiyun.com/key_15/article/details/7729404</link><guid>https://blog.youkuaiyun.com/key_15/article/details/7729404</guid><author>key_15</author><pubDate>Mon, 09 Jul 2012 15:27:38 +0800</pubDate><description><![CDATA[条款26：尽可能延后变量定义式的出现时间


在C++中只要你定义了一个类型且带有构造函数和析构函数，那么他就有成本开销。所以变量不应该过早地定义，看下面的case：

  std::string encryptyPassword(const std::string& password)

 {

    using namespace std;

    string en]]></description><category></category></item></channel></rss>