一本不错的书,给出了52条建议来优化程序的性能,对初学者有不错的指导作用,但是对高级阶段的程序员可能帮助不是很大。这里贴出部分笔记:第2条:使用#improt导入头文件会把头文件的内容全部暴露到目标文件中,而且如果两个类之间存在循环引用则会出现编译错误,所以要尽量使用@class进行类声明。如果需要...
分类:
其他好文 时间:
2014-06-19 00:21:53
阅读次数:
262
1、vector
变长一维数组,连续存放的内存块,有保留内存,堆中分配内存;
支持[]操作,高效率的随机访问;
在最后增加元素时,一般不需要分配内存空间,速度快;在中间或开始操作元素时要进行内存拷贝效率低;
vector高效的原因在于配置了比其所容纳的元素更多的内存,内存重新配置会花很多时间;
注:需要高效的随即存取,而不在乎插入和删除使用vector。
...
分类:
其他好文 时间:
2014-06-16 22:11:01
阅读次数:
239
图1、STL和c++标准模板库
作为C++标准不可缺少的一部分,STL应该是渗透在C++程序的角角落落里的。STL不是实验室里的宠儿,也不是程序员桌上的摆设,她的激动人心并非昙花一现。本教程旨在传播和普及STL的基础知识,若能借此机会为STL的推广做些力所能及的事情,到也是件让人愉快的事情。
1、
"什么是STL?",假如你对STL还知之甚少,那么我想,你一定很想知...
分类:
编程语言 时间:
2014-06-16 21:54:33
阅读次数:
298
请注意:在构造和析构期间不要调用virtual函数,因为这类调用从不下降至derived class。
分类:
编程语言 时间:
2014-06-16 13:42:35
阅读次数:
349
既然“指针”的使用者一不小心就可能导致内存泄漏,那么我们如何能够使得指针的使用变得更安全呢?从C++面向对象的角度分析,我们有没有可能将“指针”封装起来,使得用户不直接接触指针,而使用一个封装后的对象来替代指针的操作呢?
答案是显然的,“智能指针”(smart pointer)正解决这类问题,尤其是在防止内存泄漏方面做得非常突出。C++标准库std中提供了一种“智能指针类”名为"...
分类:
编程语言 时间:
2014-06-15 15:04:11
阅读次数:
352
请记住:(1)析构函数绝对不要吐出异常。如果一个析构函数调用的函数可能抛出异常,析构函数应该捕捉任何异常,然后吞下它们或结束程序。(2)如果客户需要对某个操作函数运行期间的异常作出反应,那么class应该提供一个普通函数(而非在析构函数中)执行该操作。
分类:
编程语言 时间:
2014-06-15 12:48:58
阅读次数:
171
Petuum是一个分布式机器学习专用计算框架,本文介绍其架构,并基于文章 More Effective Distributed ML via a Stale Synchronous Parallel Parameter Server,NIPS 2013 重点探讨其核心内容SSP协议。主要思想Para...
分类:
其他好文 时间:
2014-06-14 20:39:34
阅读次数:
261
请记住:(1)polymorphic(带多态性质的)base classes应该声明一个virtual析构函数。如果class声明一个virtual函数,它就应该拥有一个virtual析构函数。(2)class的设计目的如果不是作为base classes使用,或不是为了具备多态,就不应该声明vir...
分类:
编程语言 时间:
2014-06-14 20:19:05
阅读次数:
221
打印全排列是个有点挑战的编程问题。STL提供了stl::next_permutation完美的解决了这个问题。
但是,如果不看stl::next_permutation,尝试自己解决,怎么做?
很自然地,使用递归的办法:
1. 单个元素的排列只有1个。
2. 多个元素的排列可以转化为:
以每个元素为排列的首个元素,加上其他元素的排列。
有了思路,就可以编码了。
第一个...
分类:
其他好文 时间:
2014-06-14 15:10:03
阅读次数:
263