写在前面
因为在stl中stl_algo中提供有sort函数,他的函数原型:
template <class RandomAccessIterator>
inline void sort(RandomAccessIterator first, RandomAccessIterator last);
template <class RandomAccessIterator, class Compare>
inline void sort(RandomAccessIterator first, RandomAccessIterator last,
Compare comp);
我们看到关于迭代器都是 RandomAccessIterator类型的,就是最高层次的指针,但是我们list中迭代器类型为:
typedef bidirectional_iterator_tag iterator_category;
由于bidirectional_iterator_tag是random_access_iterator_tag的子类,不会传递调用random_access_iterator_tag版本的排序函数,那么关于list中的sort函数的实现就放在了stl_list中来进行实现了
struct random_access_iterator_tag : public bidirectional_iterator_tag {};
前提了解
splice函数:在sort函数中使用到了这种重载类型