STL之list双向循环链表

一、头文件

二、功能:模板形式的 双向循环链表数据结构

三、定义方式list<元素的数据类型> 变量名;    e.g:  list list_var;

四、常用成员函数用法

1、void push_back(const T& var);    
功能:插入一个节点作为尾结点
e.g:
    list list_var;
    list_var.push_back(1);
    list_var.push_back(2);
    list_var.push_back(3);
    list_var.push_back(4);
    list::iterator iter_list;
    for(iter_list=list_var.begin(); iter_list!=list_var.end(); ++iter_list)
        cout << *iter_list << " ";
    cout << endl;
    结果:
    1 2 3 4


2、void push_front(const T& var);    
功能:插入一个节点作为头结点    

3、iterator insert(iterator pos);
功能:移除迭代器所指节点,返回pos->next;

4、void pop_front();
功能:移除头结点

5、void pop_back();
功能:移除尾结点    

6、void list::clear()
功能:移除所有结点    

7、void list::remove(const T& var)
功能:将值为var的所有节点都移除

8、void list::unique()
功能:移除元素连续且相同的节点,只保留第一次出现的

9、void transfer(iterator pos, iterator first, iterator last)
功能:将[first,last)内的所有元素移动到pos之前

10、splice
    10.1 void splice(iterator pos, list& x);
    功能:将x接合于pos所指的位置之前
    10.2 void splice(iterator pos, list&, iterator i);
    功能:将i所指元素接合于pos所指的位置之前(i和pos可以指向同一个list)
    10.3 void splice(iterator pos, list&, iterator first, iterator last);
    功能:将[first,last)内的所有元素移动到pos之前;pos和[first,last)可以指向同一个list;但是,pos不能在[first,last)内

11、void list::merge(list&x)
功能:将x合并到*this身上(前提是   x和*this必须是有序的)

12、void list::reverse()
功能:将*this的内容逆向重置

13、void list::sort()
功能:对*this的内容进行快排

14、iterator insert(iterator pos, const T& var)    
功能:在迭代器指向的元素之前插入元素var;返回新插入的节点的迭代器

五、注意事项

1、进行insert操作后,迭代器不会失效

2、进行erase操作后,迭代器会失效

3、不能使用STL中的sort()进行排序,因为sort()只能对支持随机访问的数据结构进行排序

你可能感兴趣的:(C++,STL,C++中STL学习)