#include <list>
#include <stdio.h>
#include <algorithm>
#include "listEx.h"
using namespace std;
typedef struct
{
char name[100];
int age;
char address[100];
}STUDENT;
typedef list<STUDENT> STUDENTLIST;
class EventIsIn11 {
public:
bool operator () (STUDENT &student) {
return student.age == 13;
}
};
int comp(int n1,int n2)
{
return n1>n2;
}
int erasecom(int n)
{
return n<=3;
}
int main()
{
//初始化
list<int> c1(3); //建一个含三个默认值是0的元素的链表
list<int> c2(5,2); //建一个含五个元素的链表,值都是2
list<int> c4(c2); //建一个c2的copy链表
list<int> c5(c1.begin(),c1.end()); ////c5含c1一个区域的元素[_First, _Last)。
list<int> ListEx;
ListEx.push_back(2);
ListEx.push_back(3);
ListEx.push_back(4);
ListEx.push_back(8);
ListEx.push_back(8);
//ListEx.assign(2,9);
ListEx.sort(comp);
STUDENT aa={"che",10,"jiangsu"};
STUDENT bb={"che1",11,"jiangsu1"};
STUDENT cc={"che2",12,"jiangsu2"};
STUDENT ee={"che1",11,"jiangsu1"};
STUDENTLIST StudentList;
StudentList.push_back(aa);
StudentList.push_back(bb);
StudentList.push_back(cc);
ListEx.unique();
//ListEx.remove_if(erasecom);
ListEx.remove(8);
STUDENTLIST StudentListEx;
list<int>::iterator it;
list<int>::reverse_iterator reverseit;
STUDENTLIST::iterator StudentIt;
int i=0;
for (it=ListEx.begin();it!=ListEx.end();++it)
{
printf("1ListEx %d[%d]\r\n",i++,*it);
}
for (reverseit=ListEx.rbegin();reverseit!=ListEx.rend();++reverseit)
{
printf("2ListEx %d[%d]\r\n",i++,*reverseit);
}
for (StudentIt=StudentList.begin();StudentIt!=StudentList.end();++StudentIt)
{
printf("StudentList %d[%s]\r\n",i++,(*StudentIt).name);
}
StudentIt=find_if(StudentList.begin(),StudentList.end(),EventIsIn11());
if (StudentIt!=StudentList.end())
{
printf("******%s****\r\n",(*StudentIt).name);
}
else
{
printf("***can not find*****\r\n");
}
printf("*******%d**********\r\n",StudentList.front().age);
}