list容器

list 容器的基本操作与示范

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
//
// Created by Jason on 2020/3/29.
//
/*
1ist构造函数
1ist<T>1istT;//1ist采用采用模板类实现,对象的默认构造形式:
list(beg,end);//构造函数将(beg,end)区间中的元素拷贝给本身o
list( n, elem);//构造函数将n个以l拷贝绐本身。
list( const list&list);//拷贝构造函数。
list数据元素插入和删除操作
push_back(elem);//在睿器尾部加入一个元素
pop_back();/剛刪除容器中最后一个元素4
push_front(elem);//在容器开头插入一个元素
pop_front();//从寳器开头移除第一个元素
insert(pos,elem);//在pos位置插eem元素的拷贝,返回新数据的位置
insert(pos, n, elem);//在pos位置插入n个elem数据,无返回值。
ert(pos,beg,end);/在pos位置插入[beg,erd区间的数据,无返回值
clear ();//移除容器的所有数
erase(beg,end);/刪除[beg,ed)区间的数据,返回下一个数据的位置。φ
erase(pos);/!刪除pos位置的数据,返回下一个数据的位置。
remove(e1em);//刪除荟器中所有与e1em值匹配的元素。
3643list大小操作
size()://返回答器中元素的个数
empty()://判断容器是否为空
resize (num );/重新指定器的长度为num
若窨器变长,则以默认值填充新位置
如果容器变短,则末尾超出容器长度的元素被刪除φ
resize(num, elem);/重新指定容器的长度为num
若窨器变长,则以elem值填充新位置。
如果器变短,则末尾超出容器长度的元素被除。
3644list 赋值操作
assign (beg,end);/将[beg,end)区阃中的数据拷贝賦值绐本身
assign(n,elem);/将n个elem拷贝赋值给本身
1ist& operator=(const list&1ist);/重载等号操作符
swap(1ist);/将1st与本身的元素互换。
364.5 list数据的存取
front();//返回第一个元素
back();//返回最后一个元素
3.6.4.6 list反转排序
reverse();//反转链表,比如list包含1,3,5 元素,运行此方法后,list包含5,3,1元素
sort();//list 排序
* */
#include<bits/stdc++.h>
using namespace std;
void printList(const list<int>&L)
{
for(_List_const_iterator<int> it = L .begin(); it != L .end(); it++)
{
cout<<*it<<" " ;
}
cout<<endl;
}
//list 是一个双向链表
void test01()
{
list<int>L;
list<int>L2(10,10);
list<int>L3(L2.begin(),L2.end());

list<int>L4;
L4.push_back(10);
L4.push_back(20);
L4.push_back(30);
L4.push_front(100);
L4.push_front(200);
L4.push_front(300);
L4.push_front(300);
//正序打印

for(list<int>::iterator it = L4.begin();it!=L4.end();it++)
{
cout<<*it<<" " ;
}
cout<<endl;
//逆序打印
for(list<int>::reverse_iterator it = L4.rbegin();it != L4.rend();it++)
{
cout<<*it<<" ";
}
cout<<endl;
L4.insert(L4.begin(),1000);
printList(L4);
//remove(elem)
L4.remove(300);//凡是看见300都删除,删除的是所有与elem的 匹配元素
printList(L4);
}
void test03()
{

list<int>L;
L.push_back(10);
L.push_back(20);
L.push_back(30);
L.push_front(100);
L.push_front(200);
L.push_front(300);
L.push_front(300);

list<int>L2;
L2.assign(10,100);
printList(L2);

L2.assign(L.begin(),L.end());//重新赋值
printList(L2);

cout<<"THE FRONT ="<<L2.front()<<endl;
cout<<"THE Back ="<<L2.back()<<endl;
}

bool myCompare(int v1 ,int v2)
{
return v1 > v2;
}
void test04()
{
list<int>L;
L.push_back(10);
L.push_back(20);
L.push_back(30);
L.push_front(100);
L.push_front(200);
L.push_front(300);
L.push_front(300);
//反转(是质变)
L.reverse();
printList(L);

//排序
//所有系统提供的标准算法 使用的容器提供的迭代器都必须支持随机访问
// 不知处随机访问的
L.sort();//这是有用的,从小到大
// sort(L.begin(),L.end());这是没用的
printList(L);
L.sort(myCompare);
printList(L);

}
class Person
{
public:
Person(string name , int age,int height)
{
this->m_Name = name;
this->m_Age = age;
this->m_height = height;
}
string m_Name;
int m_Age;
int m_height;
};
bool myComparePerson(Person &P1 ,Person &P2)
{
//按照年龄,升序
//如果年龄相同 按照身高进行降序
if(P1.m_Age==P2.m_Age)
return P1.m_height>P2.m_height;
else
return P1.m_Age <P2.m_Age;
}
void test05()
{
list<Person>L;
Person p1("大娃",30,170);
Person p2("2娃",28,190);
Person p3("3娃",26,168);
Person p4("4娃",24,187);
Person p5("5娃",24,192);
Person p6("6娃",24,123);
Person p7("7娃",20,284);
Person p8("爷爷",90,154);
Person p9("蛇精",999,999);
L.push_back(p1);
L.push_back(p2);
L.push_back(p3);
L.push_back(p4);
L.push_back(p5);
L.push_back(p6);
L.push_back(p7);
L.push_back(p8);
L.push_back(p9);
for(list<Person>::iterator it = L.begin();it!=L.end();it++)
{
cout<<"姓名 "<<it->m_Name<<"年龄 "<<it->m_Age<<" 身高 "<<it->m_height<<endl;
}
cout<<endl<<endl;
L.sort(myComparePerson);//自定义的数据要自己写排序规则
for(list<Person>::iterator it = L.begin();it!=L.end();it++)
{
cout<<"姓名 "<<it->m_Name<<"年龄 "<<it->m_Age<<" 身高 "<<it->m_height<<endl;
}
}
int main()
{
// test01();
// test03();
// test04();
test05();
system("pause");
return 0;
}
-------------本文结束,感谢您的阅读-------------