#include <list>

clear();删除向量中的所有对象

erase(iterator it);删除it所指向的容器对象

insert(iterator it,const T&);向it所指的向量位置前插入一个对象

push_back(const T&);向向量尾部插入一个对象

push_front(const T&);向向量头部插入一个对象

remove(const T&);删除特定的对象

sort();排序

unique();唯一。把链表中前后有相同元素的结点删除

 1 #include <iostream>
 2 #include <list>
 3 
 4 void main()
 5 {
 6     std::list<int>mylist;
 7     
 8     mylist.push_back(1);//向向量尾部插入一个对象
 9     mylist.push_back(2);
10     mylist.push_back(3);
11     mylist.push_back(4);
12 
13     auto ibegin = mylist.begin();//迭代器
14     auto iend = mylist.end();
15 
16     for (; ibegin != iend; ibegin++)//使用迭代器进行遍历
17     {
18         std::cout << *ibegin << std::endl;
19     }
20 }

对特定元素进行删除,erase实现,先查找,后删除

 1 #include <iostream>
 2 #include <list>
 3 
 4 void main()
 5 {
 6     std::list<int>mylist;
 7     
 8     mylist.push_back(1);//向向量尾部插入一个对象
 9     mylist.push_back(2);
10     mylist.push_back(3);
11     mylist.push_back(4);
12 
13     auto ibegin = mylist.begin();//迭代器
14     auto iend = mylist.end();
15 
16     for (; ibegin != iend; ibegin++)//使用迭代器进行遍历
17     {
18         if (*ibegin == 3)
19         {
20             mylist.erase(ibegin);
21             break;//删除以后,一定要break,因为ibegin已经变更了
22         }
23     }
24 
25     ibegin = mylist.begin();//迭代器
26     iend = mylist.end();
27     
28     for (; ibegin != iend; ibegin++)//使用迭代器进行遍历
29     {
30         std::cout << *ibegin << std::endl;
31     }
32 }

对特定元素进行删除,remove实现,先查找,后删除

 1 #include <iostream>
 2 #include <list>
 3 
 4 void main()
 5 {
 6     int a[5] = { 1,2,3,4,5 };
 7     std::list<int>mylist(a, a + 5);
 8     
 9     mylist.push_front(12);//向向量头部插入一个对象
10 
11     auto ibegin = mylist.begin();//迭代器
12     auto iend = mylist.end();
13     
14     mylist.remove(3);
15 
16     for (; ibegin != iend; ibegin++)//使用迭代器进行遍历
17     {
18         std::cout << *ibegin << std::endl;
19     }
20 }

在特定元素前插入新的元素,先查找,后插入

 1 #include <iostream>
 2 #include <list>
 3 
 4 void main()
 5 {
 6     int a[5] = { 1,2,3,4,5 };
 7     std::list<int>mylist(a, a + 5);
 8     
 9     mylist.push_front(12);//向向量头部插入一个对象
10 
11     auto ibegin = mylist.begin();//迭代器
12     auto iend = mylist.end();
13     
14     for (; ibegin != iend; ibegin++)//使用迭代器进行遍历
15     {
16         if (*ibegin == 3)
17         {
18             mylist.insert(ibegin, 30);
19             break;
20         }
21     }
22 
23     ibegin = mylist.begin();//迭代器
24     iend = mylist.end();
25 
26     for (; ibegin != iend; ibegin++)//使用迭代器进行遍历
27     {
28         std::cout << *ibegin << std::endl;
29     }
30 }

使用反向迭代器进行遍历

 1 #include <iostream>
 2 #include <list>
 3 
 4 void main()
 5 {
 6     int a[5] = { 1,2,3,4,5 };
 7     std::list<int>mylist(a, a + 5);
 8     
 9     auto rb = mylist.rbegin();//反向迭代器
10     auto re = mylist.rend();
11     
12     for (; rb != re; rb++)//使用迭代器进行遍历
13     {
14         std::cout << *rb << std::endl;
15     }
16 }

两个链表进行合并

必须先排序,后合并,否则会出错

 1 #include <iostream>
 2 #include <list>
 3 
 4 void main()
 5 {
 6     int a[5] = { 1,2,3,104,5 };
 7     std::list<int>mylist1(a, a + 5);
 8 
 9     int b[5] = { 11,22,33,44,55 };
10     std::list<int>mylist2(b, b + 5);
11     
12     mylist1.sort();//排序
13     mylist2.sort();
14 
15     mylist1.merge(mylist2);//合并。必须先排序,后合并,否则会出错
16 
17     auto ibegin = mylist1.begin();//迭代器
18     auto iend = mylist1.end();
19     
20     for (; ibegin != iend; ibegin++)//使用迭代器进行遍历
21     {
22         std::cout << *ibegin << std::endl;
23     }
24 }

链表元素的唯一

必须先排序,后唯一

 1 #include <iostream>
 2 #include <list>
 3 
 4 void main()
 5 {
 6     int a[6] = { 1,2,98,104,5,98 };
 7     std::list<int>mylist1(a, a + 6);
 8     
 9     mylist1.sort();//排序
10     mylist1.unique();//唯一。必须先排序,后唯一
11 
12     auto ibegin = mylist1.begin();//迭代器
13     auto iend = mylist1.end();
14     
15     for (; ibegin != iend; ibegin++)//使用迭代器进行遍历
16     {
17         std::cout << *ibegin << std::endl;
18     }
19 }
原文地址:https://www.cnblogs.com/denggelin/p/5745213.html