STL源码 怎一“妙”字了得 (运用高手请进)
最近在看《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[i].empty()) {
counter[i].merge(carry);
carry.swap(counter[i++]);
}
caryy.swap(counter[i]);
if (i == fill) ++fill;
}
for(int i = 1; i < fill; ++i)
counter[i].merge(counter[i - 1]);
swap(counter[fill - 1]);
}
《STL源码剖析》P.142
其是用quick sort来实现的,我是看了整整一节课才看懂啊
看懂后,感慨: 他怎么就能想到的呢?!
我该怎么运用这种技巧,或方法呢?
如果只图看懂,而不去用,那还不如不看:(
请高手就以该排序算法为例,来讲讲 如何在实际中运用
谢谢了