间接直接通过list链表中的位置获取数据

线性使用过数组在使用list的同学们会发现list真好用,但是在有一个很麻烦的事情,就是list不能像数组一样通过下标获取数据。

小白我在使用了一会list后,发现使用一个小函数就可以实现这个功能了。

// test.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<iostream>
#include<fstream>
#include<list>
#include<string>
using namespace std;
typedef list<int> intlist;
int main()
{
	int anyone(int numb, list<int> intlist);
	intlist l1;	
	intlist::iterator iter;
	l1.push_front(5);
	l1.push_front(500);
	l1.push_front(5000);
	l1.push_front(50000);
	int a = anyone(1, l1);
	cout << a << endl;
	system("pause");
}
int anyone(int numb, list<int> intlist)
{
	intlist::iterator iter;
	iter = intlist.end();
	for (int i = 0; i < numb; i++)
	{
		iter--;
	}
	return *iter;
}


测试的为显示第一个数据。

其实很简单的了,就是一个通过迭代器写的一个函数。主要是下面这个函数

int anyone(int numb, list<int> intlist)//numb为第几个数据,intlist为传入的链表
{
	intlist::iterator iter;
	iter = intlist.end();//这时候iter指向的是链表的表头,不是第一个数据,记住不是第一个数据
	for (int i = 0; i < numb; i++)//指向第numb个数据
	{
		iter--;
	}
	return *iter;
}
主要注意的地方就是list.end()不是第一个数据,而是表头。其他没什么。

以前很奇怪,为什么要使用迭代器呢,有什么用呢,不就是指针吗。通过这个实验,发现迭代器还是和指针有区别的,迭代器虽然也是指针,但是迭代器这个指针的++和--只是在list内部进行,不是在整个内存空间进行,这样,就可以证明,list在内存空间上其实不是顺序存储的了。下次有空再写这点内容吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值