http://www.cnblogs.com/qiyeshublog/articles/2378272.html http://www.cppblog.com/merlinfang/archive/2014/12/26/209311.aspx