c++之list简单操作,有一个小坑需要注意

#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;会导致编译错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值