线性使用过数组在使用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在内存空间上其实不是顺序存储的了。下次有空再写这点内容吧