// a005.cpp : 定义控制台应用程序的入口点。
//
//链表list<content> l;实质上指向content变量类型的指针,二迭代器就是一个指向链表各个位置的一个指针。所以,
//链表是一个指针,迭代器是一个指向指针的指针的指针。即双重指针。
#include "stdafx.h"
#include <string>
#include <iostream>
#include <list>
#include <algorithm>
#include <iterator>
using namespace std;
class cl1
{
public:
char name[20];int age;
cl1(char name[20],int age)
{
this->age=age;
strcpy(this->name,name);
}
};
int _tmain(int argc, _TCHAR* argv[])
{
list<cl1*> l; //申请类指针为成员的链表
for(; ;)
{
char name[20];
int age;
scanf("%s",&name);
scanf("%d",&age);
cl1*p1=new cl1(name,age);
l.push_back(p1); //把类指针加入链表
int tem;
printf("1->YES 2->NO");
scanf("%d",&tem);
if(tem==2){break;}
}
list<cl1*>::iterator it=l.begin(); //申请类指针类型的迭代器,并指向链表的begin位置
while(it != l.end())
{
printf("%s--%d--",(*it)->name,(*it)->age);//迭代器本质上是一个指针。在这儿指向链表
it++;
}
it=l.begin();
while(it!=l.end()) //当迭代器不是指向最后一个是-----------------------------------|
{ // |
delete(*it);//<-----清空迭代器内容。即链表,即cl1的指针,即清空cl1的内存----------|
it++;
}
l.clear();
return 0;
}
|