- 论坛徽章:
- 0
|
最近在看《STL源码剖析》
发觉STL的实现果然精妙,难怪,喉结说:
“我的确认为99.99%的程序员所写的程序,在SGI STL面前都是三流水准”
可是妙归妙,我该怎么样来运用这些技巧呢?
请高手不惜指教
比如:
list里sort算法的实现:
template <class T, class Alloc>;
void list<T, Alloc>;::sort() {
if(node->;next == node || link_type(node->;next)->;next == node)
return;
list<T, Alloc>; carry;
list<T, Alloc>; counter[64];
int fill = 0;
while (!empty()) {
carry.splice(carry.begin(), *this, begin());
int i = 0;
while (i < fill && !counter.empty()) {
counter.merge(carry);
carry.swap(counter[i++]);
}
caryy.swap(counter);
if (i == fill) ++fill;
}
for(int i = 1; i < fill; ++i)
counter.merge(counter[i - 1]);
swap(counter[fill - 1]);
}
《STL源码剖析》P.142
其是用quick sort来实现的,我是看了整整一节课才看懂啊
看懂后,感慨: 他怎么就能想到的呢?!
我该怎么运用这种技巧,或方法呢?
如果只图看懂,而不去用,那还不如不看:(
请高手就以该排序算法为例,来讲讲 如何在实际中运用
谢谢了 |
|