标准模板库(STL)List介绍(十二)

2011-06-07 12:31:23 · 作者: · 浏览: 9226
 
  
使用list的成员函数sort()排序一个list。  
  
  
要排序一个list,我们要用list的成员函数sort(),而不是通用算法sort()。所有我们用过的算法都是 通用算法。然而,在STL中有时容器支持它自己对一个特殊算法的实现,这通常是为了提高性能。  
在这个例子中,list容器有它自己的sort算法,这是因为通用算法仅能为那些提供随机存取里面元素 的容器排序,而由于list是作为一个连接的链表实现的,它不支持对它里面的元素随机存取。所以就需要一个特殊的 sort()成员函数来排序list。  
  
由于各种原因,容器在性能需要较高或有特殊效果需求的场合支持外部函数(extra functions), 这通过利用构造函数的结构特性可以作到。  
  
  
/*  
|| How to sort an STL list  
*/  
#include <string>  
#include <list>  
#include <algorithm>  
   
PrintIt (string& StringToPrint) { cout << StringToPrint << endl;}  
   
int main (void) {  
     list<string> Staff;  
     list<string>::iterator PeopleIterator;  
   
     Staff.push_back("John");  
     Staff.push_back("Bill");  
     Staff.push_back("Tony");  
     Staff.push_back("Fidel");  
     Staff.push_back("Nelson");  
   
     cout << "The unsorted list " << endl;  
     for_each(Staff.begin(), Staff.end(), PrintIt ;  
   
     Staff.sort();  
   
     cout << "The sorted list " << endl;  
     for_each(Staff.begin(), Staff.end(), PrintIt);  
}  
  
输出是:  
  
The unsorted list  
John  
Bill  
Tony  
Fidel  
Nelson  
The sorted list  
Bill  
Fidel  
John  
Nelson  
Tony