• 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;

  • 相关阅读:
    图像的卷积
    信息理论与编码中有关信源编码的笔记
    Java 数组排序
    完全平方数
    Java 作业题4
    Java 作业题3
    Java 作业题 2
    算法面试题二:旋转数组,存在重复元素,只出现一次的数字
    算法面试题一:排序算法及贪心算法
    微信小程序 发送模板消息的功能实现
  • 原文地址:https://www.cnblogs.com/maycpou/p/14328922.html
Copyright © 2020-2023  润新知