std(12)判断容器的迭代器是否是随机访问迭代器

1.随机访问迭代器的意思是可以在该迭代器指向的位置基础上向前或者向后移动n的位置,还能获取到容器的数据。

 

2.之所以要去判断一个容器的迭代器是否是随机访问迭代器,是因为stl系统提供的很多算法都需要容器的迭代器必须是随机访问迭代器才能使用。

比如:std::sort()算法对于vector是可用的,list就不可用。list容器如果需要排序的话必须使用list自身内部实现的sort方法。

std::list<int> list;
list.push_back(10);
list.push_back(20);
list.push_back(30);
list.push_back(40);

list.sort();

std::sort(list.begin(),list.end());//报错

 

3.并且一个容器的迭代器如果不是随机访问迭代器的话,它往往也不支持使用[]和at来通过下标访问容器中的任意一个元素。

 

4.在判断的时候我们可以通过判断该容器的迭代器是否支持”+n“的操作来判断容器的迭代器是否是随机访问迭代器。vector的迭代器支持随机访问,list的迭代器不支持

std::list<int> list;
list.push_back(10);
list.push_back(20);
list.push_back(30);
list.push_back(40);
int a = list[2];//报错
std::list<int>::iterator it = list.begin()+2;//报错

std::vector<int> vec;
vec.push_back(10);
vec.push_back(20);
vec.push_back(30);
vec.push_back(40);

int a1 =vec[2];

std::vector<int>::iterator it1 = vec.begin()+2;

 

posted @ 2021-01-26 10:24  maycpou  阅读(593)  评论(0编辑  收藏  举报