list容器

1、简介:

(1)双向链表实现;

(2)不可进行随机访问;不支持下标运算和at函数;

(3)插入和删除操作在任何位置都很快;因为不需要移动元素,只需要修改指针;

(4)插入删除元素不会使引用、指针和迭代器失效;

(5)对于异常的支持,操作要么成功,要么无效;

(6)不提供容量和重新分配相关的操作,因为不需要;

(7)提供了很多特殊的成员函数来移动元素;

2、创建拷贝和销毁:

 1 void test01()
 2 {
 3     list<int> L1;
 4     showList(L1);
 5     list<int> L2(L1);
 6     showList(L2);
 7     list<int> L3(4);
 8     showList(L3);
 9     list<int> L4(5, 12);
10     showList(L4);
11     list<int> L5(L4.begin(), L4.end());
12     showList(L5);
13 }
View Code

结果:

3、无修改操作:

 1 void test02(void)
 2 {
 3     list<int> L1;
 4     list<int> L2;
 5     L1.push_back(10);
 6     L1.push_back(20);
 7     L1.push_back(30);
 8     L2.push_back(10);
 9     L2.push_back(20);
10     L2.push_back(30);
11     L2.push_back(40);
12     cout << L1.size() << endl;
13     cout << L1.empty() << endl;
14     cout << L1.max_size() << endl;
15     cout << (L1 == L2) << endl;
16     cout << (L1 != L2) << endl;
17     cout << (L1 > L2) << endl;
18     cout << (L1 < L2) << endl;
19     cout << (L1 <= L2) << endl;
20     cout << (L1 >= L2) << endl;
21 }
View Code

结果:

4、赋值操作:

 

 1 void test03()
 2 {
 3     list<int> L1;
 4     list<int> L2(L1);
 5     showList(L1);
 6     showList(L2);
 7     L1.assign(10, 4);
 8     showList(L1);
 9     L2.assign(L1.begin(), L1.end());
10     showList(L2);
11     L1.push_back(34);
12     showList(L1);
13     L1.swap(L2);
14     showList(L1);
15     showList(L2);
16     swap(L1, L2);
17     showList(L1);
18     showList(L2);
19 }
View Code

结果:

5、元素访问:

1 void test04()
2 {
3     list<int> L1;
4     L1.push_back(10);
5     L1.push_back(20);
6     showList(L1);
7     cout << L1.front() << endl;
8     cout << L1.back() << endl;
9 }
View Code

结果:

6、迭代器:

 1 void test05()
 2 {
 3     list<int> L1;
 4     L1.push_back(10);
 5     L1.push_back(20);
 6     L1.push_back(30);
 7     L1.push_back(40);
 8     L1.push_back(50);
 9     showList(L1);
10     for (list<int>::iterator it = L1.begin(); it != L1.end(); it++)
11     {
12         cout << (*it) << " ";
13     }
14     cout << endl;
15 
16     for (list<int>::reverse_iterator it = L1.rbegin(); it != L1.rend(); it++)
17     {
18         cout << (*it) << " ";
19     }
20     cout << endl;
21 }
View Code

结果:

7、插入和删除:

 

 

 

 1 void test06()
 2 {
 3     list<int> L1;
 4     L1.push_back(10);
 5     L1.push_back(20);
 6     L1.push_back(30);
 7     L1.push_back(40);
 8     L1.push_back(50);
 9     showList(L1);
10     L1.insert(L1.begin(), 34);
11     showList(L1);
12     L1.insert(++L1.begin(), 3, 55);
13     showList(L1);
14     list<int> L2;
15     L2.push_back(1);
16     L2.push_back(2);
17     L2.push_back(3);
18     L1.insert(L1.begin(), L2.begin(), L2.end());
19     showList(L1);
20     L1.push_back(12);
21     showList(L1);
22     L1.pop_back();
23     showList(L1);
24     L1.push_front(22);
25     showList(L1);
26     L1.pop_front();
27     showList(L1);
28     L1.remove(55);
29     showList(L1);
30     L1.erase(L1.begin());
31     showList(L1);
32     L1.erase(L1.begin(), ++L1.begin());
33     showList(L1);
34     cout << L1.size() << endl;
35     L1.resize(3);
36     cout << L1.size() << endl;
37     showList(L1);
38     L1.resize(10, 222);
39     showList(L1);
40     L1.clear();
41     cout << L1.size() << endl;
42     showList(L1);
43 }
View Code

结果:

8、拼接功能:

 1 bool myCompare(int a, int b)
 2 {
 3     return a > b;
 4 }
 5 
 6 void test07()
 7 {
 8     list<int> L1;
 9     L1.push_back(1);
10     L1.push_back(2);
11     L1.push_back(2);
12     L1.push_back(3);
13     L1.push_back(3);
14     L1.push_back(4);
15     L1.push_back(5);
16     L1.push_back(6);
17     showList(L1);
18     L1.unique();
19     showList(L1);
20     list<int> L2;
21     L2.push_back(11);
22     L2.push_back(12);
23     L2.push_back(13);
24     L1.splice(L1.begin(), L2);
25     showList(L1);
26     showList(L2);
27     list<int> L3;
28     L3.push_back(34);
29     L3.push_back(35);
30     L3.push_back(36);
31     L1.splice(++L1.begin(), L3, ++L3.begin(), --L3.end());
32     showList(L1);
33     showList(L3);
34     L1.sort();
35     showList(L1);
36     L1.sort(myCompare);
37     showList(L1);
38     list<int> L4;
39     L4.push_back(1);
40     L4.push_back(2);
41     L4.push_back(3);
42     L4.push_back(4);
43     L4.push_back(5);
44     list<int> L5;
45     L5.push_back(4);
46     L5.push_back(5);
47     L5.push_back(6);
48     L5.push_back(7);
49     showList(L4);
50     showList(L5);
51     L4.merge(L5);
52     showList(L4);
53     showList(L5);
54     L4.reverse();
55     showList(L4);
56 
57 }
View Code

结果:

 

posted @ 2022-03-06 13:44  CallMe弱鸡  阅读(46)  评论(0)    收藏  举报