STL

STL之list集合

Posted by Liao on 2022-09-09

一、定义

list的底层是双向链表,通过指针进行数据访问。相对于vector,list能高效地在任何地方插入和删除。

二、用法

1
2
3
4
5
list<Type> list;
list<Type>::iterator it
list.push_back()
list.insert()
list.erase()

三、应用

根据身高重建队列

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
public:
static bool cmp(vector<int>&a, vector<int>&b) {
if(a[0] == b[0]) {
return a[1] < b[1];
}
return a[0] > b[0]; // 从大到小排序
}
vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {
sort(people.begin(), people.end(),cmp);
list<vector<int>>que; //链表实现,插入效率比vector高
for(int i = 0; i < people.size(); i++) {
int pos = people[i][1];
list<vector<int>>::iterator it = que.begin();
while(pos--) {
it++;
}
que.insert(it, people[i]);
}
return vector<vector<int>>(que.begin(), que.end());
}
};