list 用法
1.构造函数和析构函数
list<TYPE> c 产生一个空list,没有任何元素
list<TYPE> c1(c2) 产生一个与c2同型的list
list<TYPE> c(n) 产生一个拥有n个元素的list
list<TYPE> c(n,value) 产生一个拥有n个元素且值为value的list
list<TYPE> (beg,end) 产生一个值为[beg,end)区间的元素的list
c.~list<TYPE>() 销毁所有元素,释放内存
2.主要成员函数
back() 返回最后一个元素的引用(值)
front() 返回第一个元素的引用
iterator begin() 返回指向第一个元素的迭代器
iterator end() 返回指向最后一个元素之后的迭代器
void clear() 清空列表
bool empty() 是否为空
iterator erase(iterator pos) 删除pos所指元素并返回下一元素迭代器
iterator erase(iterator start,iterator end) 删除[start,end)之间所指元素并返回下一元素迭代器
iterator insert(iterator pos,const type value) 在pos位置插入元素并返回迭代器
void insert(iterator pos,iterator start,iterator end) 在pos位置插入区间[start,end)之间元素
void insert(iterator pos,size_type num,const type value) 在pos位置插入num个value元素
void merge(list list2) 将list2合并到list1,默认使用小于号比较插入
void pop_back() 删除最后一个元素
void pop_front() 删除第一个元素
void push_back() 插入到最后
void push_front() 插入到头部
void remove(const type value) 删除所有value
size_type size() 返回list中元素的数量
void sort() 排序
void reverse() 反转
void swap(list list2) 交换两个列表中的元素
void unique() 去除列表中的重复元素
题:
Sample Input
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
scanf("%d",&n);
while(n--){
int num;
int k=2;
scanf("%d",&num);
list <int> mylist;
list <int>::iterator it;
for(int i=1;i<=num;i++){
mylist.push_back(i);
}
while( mylist.size()>3){
int num=1;
for(it=mylist.begin();it!=mylist.end() ; ){
if( num++ % k==0){
it=mylist.erase(it);
}else {
it++;
}
}
k==2?k=3:k=2;
}
for(it =mylist.begin();it!=mylist.end() ;it++ ){
if( it!=mylist.begin() ){
cout<<" ";
}
cout<<*it;
}
cout<<endl;
}
return 0;
}