思路
一道稍稍有点复杂的模拟好题。
本题的关键性就在于需要实现的 leave
函数必须支持任意位置的删除,任意元素的查询,这对于 queue
或是 deque
是十分不利的。
故本题使用另外一种 STL: list
实现。
但是,list
的查询其实也是比较耗费时间的,那么我们可以使用 \(Map\) 来映射出每一个人的标号即可。
创建一个没有任何元素的空 list
容器:std::list<T> values;
下附 list
常用代码:
方法 | 作用 |
---|---|
begin() |
返回指向容器中第一个元素的双向迭代器。 |
end() |
返回指向容器中最后一个元素所在位置的下一个位置的双向迭代器。 |
rbegin() |
返回指向最后一个元素的反向双向迭代器。 |
rend() |
返回指向第一个元素所在位置前一个位置的反向双向迭代器。 |
size() |
返回当前容器实际包含的元素个数。 |
front() |
返回第一个元素的引用。 |
back() |
返回最后一个元素的引用。 |
push_front() |
在容器头部插入一个元素。 |
pop_front() |
删除容器头部的一个元素。 |
push_back() |
在容器尾部插入一个元素。 |
insert() |
在容器中的指定位置插入元素。 |
erase() |
删除容器中一个或某区域内的元素。 |
remove(val) |
删除容器中所有等于 val 的元素。 |
remove_if() |
删除容器中满足条件的元素。 |
count() |
查询容器中某值的出现次数。 |
最后依照题意模拟即可。
标签:返回,容器,删除,迭代,题解,元素,list,queue,P9518 From: https://www.cnblogs.com/CodeFishHp/p/17639151.html