STL函数对象和Lambda表达式1.基本概念Function object是定义了operator()的object。FunctionObjectType fo;fo(…);调用函数对象的operator()代替函数fo()的调用。等价于:fo.operator()(…);函数对象的三个好处:(1...
分类:
其他好文 时间:
2014-07-11 09:59:40
阅读次数:
182
string 是基本的字符串序列容器,string(),find(),compare(),replace() size()函数
分类:
其他好文 时间:
2014-07-11 09:57:49
阅读次数:
176
教你透彻了解红黑树 作者:July、saturnman 2010年12月29日 本文参考:Google、算法导论、STL源码剖析、计算机程序设计艺术 推荐阅读:Left-Leaning Red-Black Trees, Dagstuhl Workshop on Data Structures, Wa...
分类:
其他好文 时间:
2014-07-11 09:55:10
阅读次数:
357
旧式转型
(T) expression 或 T (expression)
新式转型
const_cast(expression)
通常被用来将对象的常量性转除(cast away the constness)
dynamic_cast(expression)
执行“安全向下转型”,也就是用来决定某对象是否归属继承体系中的某个类型。
reinterpret_cast(expression)
执行低级转型 //不太懂??
static_cast(expression)
强迫隐式转换
...
分类:
编程语言 时间:
2014-07-10 23:19:18
阅读次数:
250
经验:避免返回handles(包括 references、指针、迭代器)指向对象内部。遵守这个条款可增加封装性,
帮助 const 成员函数的行为像个 const,并将发生“虚吊号码牌”(dangling handles)的可能性降至最低。
示例:
class Point{
public:
Point(int x, int y);
//...
void setX(int newVal);
void setY(int newVal);
//...
};
struct RectData{
Point...
分类:
编程语言 时间:
2014-07-10 22:56:05
阅读次数:
230
可变长的动态数组
必须包含头文件 #include
支持 随机访问迭代器
? 根据下标随机访问某个元素时间为常数
? 在尾部添加速度很快
? 在中间插入慢
所有STL算法 都能对vector操作...
分类:
其他好文 时间:
2014-07-10 21:45:52
阅读次数:
225
1.将大多数 inlining 限制在小型、被频繁调用的函数身上。这可使日后的调试过程和二进制升级更容易,
也可使潜在的代码膨胀问题最小化,使程序的速度提升机会最大化。
2.inline是对编译器的一个申请。
隐喻方式:将函数定义于 class 定义式内, 如成员函数或 friend 函数
明确声明:在定义式前加关键字 inline
编译器会拒绝大过复杂的函数 inlining, 而所有对 virtual 函数的调用也都会使 inlining 落空。
因为 virtual 意味 ”等待,直到运行期才确定...
分类:
编程语言 时间:
2014-07-10 20:49:39
阅读次数:
205
主要的理由还是封装。nonmember nonfreind function 不能访问类private 成员变量。这个场景是有一个类提供了一些基本功能,比如class WebBrowser{ public: void clearCache(); void clearHist...
分类:
编程语言 时间:
2014-07-10 16:05:06
阅读次数:
164