#include <iostream>
#include <stdlib.h>
#include <list>
using namespace std;
class CA
{
public:
void f()
{
cout << "CA f()" << endl;
}
virtual void ff()
{
cout << "CA ff()" << endl;
f();
}
};
class CB : public CA
{
public :
virtual void f()
{
cout << "CB f()" << endl;
}
void ff()
{
cout << "CB ff()" << endl;
f(); //因为ff()是调用的子类里的,所以f()也应该是调用子类里面的
CA::ff();
}
};
class CC : public CB
{
public:
virtual void f()
{
cout << "C f()" << endl;
}
};
int main()
{
list<int> list1(10,100);
list1.push_back(5);
list1.push_front(1);
list<int>::iterator i = list1.begin();
list1.reverse(); //在list进行反转的时候,
//这个地方如果不重新给i赋值的话,i指向的是1,1经过翻转后是最后一个元素,所以此时i = list.end();
i = list1.begin();
while(i!= list1.end())
{
cout<<*i<<endl;
i++;
}
i = list1.begin();
//list1.erase(i);
cout<<"****** \
***********************"<<endl;
cout<<list1.front()<<endl;
cout<<"*****************************"<<endl;
list1.pop_back();
list1.pop_front();
i = list1.begin();
while(i!= list1.end())
{
cout<<*i<<endl;
i++;
}
return 0;
}
list是采用循环双链表实现,不支持随机读取。
由于list元素节点并不要求在一段连续的内存中,显然在list中是不支持快速随机存取的,因此对于迭代器,只能通过“++”或“--”操作将迭代器移动到后继/前驱节点元素处。而不能对迭代器进行+n或-n的操作,这点,是与vector等不同的地方
例如遍历的时候有 i = i + 2;会导致编译错误。