有关vector中sort函数的疑问

wangwang1103 2009-09-08 03:39:19
由于需要,在看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,但是怎么也看不懂,还请大家帮忙分析。谢谢了!
...全文
269 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangwang1103 2009-09-11
  • 打赏
  • 举报
回复
哦,daidodo。这是std::list::sort得源码。
daidodo 2009-09-09
  • 打赏
  • 举报
回复
晕,lz给出的源码是std::list::sort!

list不是随机访问容器,只能实现归并排序算法。
daidodo 2009-09-09
  • 打赏
  • 举报
回复
我记得stl::vector没有sort成员函数啊,你这是哪个版本的stl实现?
wangwang1103 2009-09-08
  • 打赏
  • 举报
回复
谢谢两位的答复
PeacefulBY 2009-09-08
  • 打赏
  • 举报
回复
不是qs,应该是归并,详见:
http://hi.baidu.com/luyade1987/blog/item/410b25129df55154f919b815.html

33,009

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧