关闭

c++11 chrono全面解析(最高可达纳秒级别的精度)

chrono是c++ 11中的时间库,提供计时,时间等功能。 学习chrono,关键是理解里面时间段(Durations)、时间点(Time points)的概念。 1.基础: 时间节拍:...
阅读(1053) 评论(1)

c++11 call_once用法(多线程时仅初始化一次的完美解决方案)

template         void call_once (once_flag& flag, Fn&& fn, Args&&...args); 需要包含头文件: 参数: (1)flag:是std::once_falg对象(定义一个该对象传进去即可)、、属于控制的标签,相同的falg只执行一次(见下面详解) (2)fn:需要只执行一次的函数对象、、 (3)args:传递给fn函数...
阅读(76) 评论(0)

Trie树(字典树)_实现模糊查找(支持中文)

搜索功能一般都有根据你的输入快速显示对应关键字的功能,比如你输入”刘”, 搜索框的下拉列表会显示“刘德华”,”刘若英”,”刘欢”等,你继续输入‘德’,将查询关键字变成”刘德”,显示的候选字列表会显示”刘德华”,”刘德华专辑”,”刘德华演唱会”等。下面将使用Trie树(字典树)来实现此功能。 一、什么是Trie树 Trie书又名字典树,字典是由一组词组成的集合,而字典树对这个集合进行了结...
阅读(94) 评论(0)

更改gcc默认版本(gcc版本降级/升级)

更改gcc默认版本(gcc版本降级/升级) Ubuntu系统升级到16.04以后,gcc的版本变为6.2,编译比较老的项目编译不过,需要将gcc版本降级到ubunt14.04时候4.8版本. 可以让系统存在两个gcc版本,4.8和6.2,但是默认的gcc版本为4.8(编译老的项目,直接make).而更高的版本6.2则可以留着供自己平时指定使用. 按照如下步骤即可: (1)在Ubuntu...
阅读(78) 评论(0)

设计模式_模板方法模式

模板模式 (1)模板模式(Template Pattern):定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于...
阅读(51) 评论(0)

设计模式_策略模式

策略模式 (1) 在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。 (2)主要解决:在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。 (3)UML图:...
阅读(67) 评论(0)

C++11 SFINEA规则_判断类是否存在某个成员函数

在C++模板中,SFINEA规则是指”Substitution failure is not an error“(匹配失败不是错误)。具体来说,就是当重载的模板参数展开时,如果展开导致一些类型不匹配,编译器并不报错。 我们可以使用这个规则来判断类是否存在某个成员函数,请看下面的实例: #include #include #include template struct has_member_...
阅读(89) 评论(0)

std::result_of用法

std::result_of用法 template class result_of 头文件: 用于在编译的时候推导出一个可调用对象(函数,std::funciton或者重载了operator()操作的对象等)的返回值类型.主要用于模板编写中. 模板参数: Fn          可调用对象 ArgTypes...          参数列表....
阅读(70) 评论(0)

设计模式_状态模式

状态模式 (1)在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。 在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。 主要解决:对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。 (2)状态模式UML图: (3)在...
阅读(87) 评论(0)

C++ 虚函数表解析

C++ 虚函数表解析   转自http://blog.csdn.net/haoel   前言   C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术...
阅读(50) 评论(0)

设计模式 _备忘录模式

备忘录模式 备忘录模式(Memento Pattern)在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。 使用情景:很多时候我们总是需要记录一个对象的内部状态,这样做的目的就是为了允许用户取消不确定或者错误的操作,能够恢复到他原先的状态,使得他有"后悔药"可吃。 解决方法:通过一个备忘录类专门存储对象状态...
阅读(77) 评论(0)

C++ 获取linux和windows系统的用户名

(1)获取linux系统的用户名:  通过 struct passwd *getpwuid(uid_t uid)函数;  该函数返回passwd结构体,此结构体中包含用户名字段 struct passwd { char *pw_name; /*user name */ char *pw_passwd; /*user password */ uid_t pw_uid; /*...
阅读(141) 评论(0)

设计模式_责任链模式

责任链模式 顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。 在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。 类图: ...
阅读(109) 评论(0)

设计模式_命令模式

命令模式:   将一个请求封装为一个对象(即我们创建的Command对象),从而使你可用不同的请求对客户进行参数化; 对请求排队或记录请求日志,以及支持可撤销的操作。  解决的问题:   在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合的设计就不太合适。 类图: 实例: 请求计...
阅读(113) 评论(0)

git常见场景命令使用

1.我想查看某次提交修改了哪些内容,就像使用diff一样详细的列出来。         git  show  提交的commit ID              例如:  git show 9897e8f  (不知道commit id ,可以先使用git log查看得到,一长串数字便是)    有可能我只想看这次提交的某个文件修改的具体内容,        git  show  提交的co...
阅读(139) 评论(0)
35条 共3页1 2 3 下一页 尾页
    个人资料
    • 访问:5571次
    • 积分:388
    • 等级:
    • 排名:千里之外
    • 原创:30篇
    • 转载:3篇
    • 译文:0篇
    • 评论:1条
    最新评论