有关vector中sort函数的疑问
由于需要,在看stl中vector的源代码,但是看到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++]);
}
carry.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源码剖析》这本书中说是一种quick sort,但是怎么也看不懂,还请大家帮忙分析。谢谢了!