16,472
社区成员
发帖
与我相关
我的任务
分享
class A
{
pubic:
A()
{
a=10; //初始化为10
}
int Get()
{
return a; //成员函数,返回A的值
}
int a; //成员变量
};
//然后又有一个类
class B
{
public:
b()
{
for (int i=0;i<5;i++)
{
A* a=new A();
vecA.push_back(a); //将5个a添加进容器
}
}
vector<A*> vecA; //声明一个A*类型的容器
vector<A*>::iterator iter;
};
//再然后又有一个类
class C
{
public:
C()
{
for (int i=0;i<10;i++)
{
B* b=new B();
vecB.push_back(b); //将10个b添加进容器
}
}
void fun();
vector<B*> vecB; //声明一个B*类型的容器
vector<A*>::iterator iter;
};
void C::fun()
{
C.iter = C.vecB.begin(); //让C的迭代器指向容器B的开始位置
while (C.iter != C.vecB.end()) //当C的迭代器不等于容器B的末尾时
{
(*C.iter)->iter = (*C.iter)->A.begin(); //C的迭代器的迭代器,也就是B的迭代器,指向容器A的开始位置
while ((*C.iter)->iter != (*C.iter)->A.end()) //当B的迭代器不等于容器A的末尾时
{
if ((*(C.iter)->iter)->Get()==10) //当B的迭代器调用Get函数,取得的值为10
{
(*C.iter)->iter=(*(C.iter)->vecA.erase(*(C.iter)->iter)); //删除这个元素
}
else
{
(*C.iter)->iter++; //B的迭代器自增1
}
}
C.iter++; //C的迭代器自增1
}
}